インストール方法

このエントリーでは、Shopping Cart 拡張アプリ及びサンプルテーマのインストール方法を説明します。Shopping Cart 拡張アプリのインストール方法は以下の2つの方法があります。

  • 簡単セットアップ for square@ec テーマを使用してインストールする
  • 手動でインストールして、メンテナンスページからサンプルテーマのデータをインポートする

それぞれ説明します。

簡単セットアップ for square@ec テーマを使用してインストールする

まず、簡単セットアップを使用してShopping Cart 拡張アプリ及びサンプルテーマのインストールをする方法をご紹介します。この方法が最も簡単にShopping Cart 拡張アプリ及びサンプルテーマのインストールができ、サンプルテーマのデータまで一括でインストールできるため、基本的には簡単セットアップを使用してインストールすることを推奨します。

簡単セットアップ for square@ec テーマ の使用方法

簡単セットアップ for square@ec テーマ をダウンロード

  1. 上記のボタンから簡単セットアップ for square@ec テーマ の zip ファイルをダウンロードしてください。
  2. ダウンロードした zip ファイルを解凍し、 setup.php を入手します。
  3. setup.phpをサーバーのインストールしたいディレクトリに設置します。
  4. setup.phpを設置したURLにブラウザからアクセスして、 setup.php を実行します。
  5. セットアップページが表示されたら、セットアップページのメッセージに従ってセットアップを進めてください。

手動でインストールして、メンテナンスページからサンプルテーマのデータをインポートする

次に紹介する方法は Shopping Cart 拡張アプリを手動でインストールする方法です。通常の拡張アプリを使用したことがある方や、a-blog cms に慣れている方はもしかしたらこちらの方法のほうがやりやすいかもしれません。

また、既に a-blog cms で制作しているサイトに EC 機能を追加したい場合にもこちらの方法がおすすめです。

この方法では、Shopping Cart 拡張アプリを extension/plugins/ に設置して、Shopping Cart 拡張アプリをダウンロード後、メンテナンスページのインポート機能を利用して、サンプルテーマのデータをインポートします。​

Shopping Cart 拡張アプリをダウンロード

  1. 上記のボタンからShopping Cart 拡張アプリ の zip ファイルをダウンロードしてください。
  2. ダウンロードした zip ファイルを解凍し、 plugins ディレクトリから、ShoppingCart 拡張アプリを入手します。
  3. 入手した ShoppingCart 拡張アプリを extension/plugins に設置してください。
  4. config.server.php で HOOK_ENABLE を有効化してください
  5. 管理画面 > 拡張アプリ から「インストール」ボタンをクリックして、インストールを行います。インストール後は拡張アプリが有効化された状態になります。
  6. ShoppingCart 拡張アプリのインストール時に themes ディレクトリに サンプルテーマがない場合、サンプルテーマがダウンロードされます。
  7. a-blog cms 設置ディレクトリ直下の setup_xxxx ディレクトリ(存在しない場合はご利用のa-blog cmsと同じバージョンをダウンロードし、パッケージ内にある setup ディレクトリを設置してください)内の bin ディレクトリ直下に ダウンロードしたファイル内のbinディレクトリから、利用したいテーマ名の フォルダ(例:square@ec)を設置します
  8. https://ドメイン/setup_xxxx/index.php にアクセスします。
  9. メンテナンスページのガイドに従ってサンプルテーマのデータをインポートします。(メンテナンスページのインポート手順に関してはこちらのドキュメントを参考にしてください)

まとめ

ここまでで、Shopping Cart 拡張アプリ のインストール方法について学びました。ここまでの内容を理解することができたら、次は Shopping Cart 拡張アプリの基本設定を学ぶと良いでしょう。Shopping Cart 拡張アプリの基本設定についてはこちらのエントリーで解説しています。

リファレンス

Shopping Cart 拡張アプリで提供している機能についてのリファレンスです。

GETモジュール

Shopping Cart 拡張アプリで提供している GET モジュールについてのリファレンスです。

ショッピングカートサマリー
ShoppingCart_Summary
カート内エントリー(商品)の一覧を表示
ショッピングカートセッティングス
ShoppingCart_Settings
ShoppingCart拡張アプリの設定を表示
オーダーサマリー
Order_Summary
注文情報を表示
ショッピングカート
ShoppingCart
カートへの追加・削除・更新などの処理を行った結果を表示
シッピンググループアドミンセレクト
ShippingGroup_AdminSelect
Ver. 2.1.0〜
エントリー編集画面で選択可能な配送グループを表示
ペイメントセレクト
Payment_Select
Ver. 2.1.0〜
決済フォームで選択可能な決済方法を表示
アディションセレクト
Addition_Select
Ver. 2.1.0〜
決済フォームで選択可能な追加手数料を表示
ショッピングフォーム
ShoppingForm
決済フォームの表示
ショッピングフォーム ナウ
ShoppingForm_Now
今すぐ決済フォームの表示

ShoppingCart_Summary

カート内エントリー(商品)の一覧を表示できます。モジュールID設定 > 条件設定 > 引数 でブログIDを指定することで、指定したブログのカート内容を表示できます。

Order_Summary

カートの注文内容(注文商品、決済方法、追加手数料、注文金額)を表示します。POSTリクエスト(ShoppingForm_XXXモジュールでの送信)に配送地域、決済方法、追加手数料のデータをカスタムフィールド形式で送信した場合、配送料、決済手数料、追加手数料の金額も表示できます。

また、モジュールID設定 > 条件設定 > 引数のエントリーIDを指定することで、商品(エントリー)1つの注文内容を表示できます。(Ver. 2.1.0より、エントリーIDを指定しなくても、商品(エントリー)1つの注文内容を表示できるようになりました。)今すぐ購入フォームを実装する場合に利用できます。

タッチモジュール

Shopping Cart 拡張アプリで提供しているタッチモジュールについてのリファレンスです。

Touch_CartItem カートに商品が存在するときのみ表示する ソース
<!-- BEGIN_MODULE Touch_CartItem -->
<!-- END_MODULE Touch_CartItem -->
Touch_NotCartItem カートに商品が存在しないときのみ表示する ソース
<!-- BEGIN_MODULE Touch_NotCartItem -->
<!-- END_MODULE Touch_NotCartItem -->

POST モジュール

Shopping Cart 拡張アプリで提供している POST モジュールについてのリファレンスです。



モジュール名 概要
ShoppingCart_AddItem カートに商品を追加・更新します。
ShoppingCart_RemoveItem カートから商品を削除します。
ShoppingCart_Update_Quantity カートアイテムの数量を更新します。
ShoppingForm_Confirm 購入フォームを別のステップに遷移します。
ShoppingFrom_Submit 購入フォームを送信します。標準のFrom_Submitモジュールの機能に加えて、在庫管理や決済処理を行います。
ShoppingForm_ConfirmNow 今すぐ購入フォームを別のステップに遷移します。
ShoppingFrom_SubmitNow 今すぐ購入フォームを送信します。標準のFrom_Submitモジュールの機能に加えて、在庫管理や決済処理を行います。

ShoppingCart_AddItem

ShoppingCart_AddItem モジュールは、カートに商品を追加・更新するためのモジュールです。

フィールド

以下のフィールドを指定して実行できます。



フィールド 概要 備考
eid カートに追加するエントリー(商品)のエントリーID 必須
quantity カートに追加する数量を数値で指定 必須, 数値

カートアイテムには、上記の項目に加えて独自のデータをカスタムフィールドの形式で追加することができます。以下のソースコードは、カラーとサイズの項目をカートのカスタムフィールドとして追加する際のテンプレート例です。

<!-- BEGIN_MODULE ShoppingCart -->
<!-- BEGIN add -->
<!-- BEGIN_IF [{status}/eq/success] -->
<p class="acms-alert acms-alert-success">カートに商品を追加しました。</p>
<!-- ELSE -->
<p class="acms-alert acms-alert-danger">カートに商品を追加できませんでした。</p>
<!-- END_IF -->

<form action="" method="post" enctype="multipart/form-data">
    <div class="entry-price-bottom-box">
      <table class="entry-item-select-table">
        <tr>
          <th>色選択</th>
          <td>
            <select name="item_color">
              <option value="">選択してください</option>
              <option value="赤">赤色</option>
              <option value="黄">黄色</option>
            </select>
            <input type="hidden" name="field[]" value="item_color" />
          </td>
        </tr>
        <tr>
          <th>サイズ</th>
          <td>
            <select name="item_size">
              <option value="">選択してください</option>
              <option value="S">S</option>
              <option value="M">M</option>
              <option value="L">L</option>
            </select>
            <input type="hidden" name="field[]" value="item_size" />
          </td>
        </tr>
        <tr>
          <th>個数</th>
          <td>
            <select name="quantity" class="acms-admin-form-width-full">
              <option value="1">1</option>
              <option value="2">2</option>
              <option value="3">3</option>
              <option value="4">4</option>
              <option value="5">5</option>
              <option value="6">6</option>
              <option value="7">7</option>
              <option value="8">8</option>
              <option value="9">9</option>
              <option value="10">10</option>
            </select>
            <input type="hidden" name="cart[]" value="quantity">
            <div role="alert" aria-live="assertive">
              <div
                data-validator-label="quantity-v-required"
                class="validator-result-{quantity:validator#required}"
              >
               <p class="form-error-text">数量を選択してください。</p>
              </div>
            </div>
            <div role="alert" aria-live="assertive">
              <div
                data-validator-label="quantity-v-regex"
                class="validator-result-{quantity:validator#regex}"
              >
               <p class="form-error-text">数量の形式が間違っています。</p>
              </div>
            </div>
            <div role="alert" aria-live="assertive">
              <div
                data-validator-label="quantity-v-min"
                class="validator-result-{quantity:validator#min}"
              >
               <p class="form-error-text">1未満の数量は選択できません。</p>
              </div>
            </div>
            <div role="alert" aria-live="assertive">
              <div
                data-validator-label="quantity-v-stock"
                class="validator-result-{quantity:validator#stock}"
              >
               <p class="form-error-text">注文可能な数量を超えています。</p>
              </div>
            </div>
          </td>
        </tr>
      </table>
    </div>
    <button class="btn is-width-full" type="submit" name="ACMS_POST_ShoppingCart_AddItem">
      <span>カートに入れる</span>
    </button>
    <input type="hidden" name="eid" value="%{EID}">
    <input type="hidden" name="cart[]" value="eid">
</form>
<!-- END add -->
<!-- END_MODULE ShoppingCart -->

エラー時の表示

ShoppingCart_AddItem モジュール実行時に何らかのエラーが起きた場合には以下のフィールド(項目)がバリデーションエラーとして表示されます。



フィールド(項目)名 オプション名 概要
eid required カートに追加したい商品のエントリーIDが指定されていなかった場合に発生します。
quantity required カート追加したい数量が指定されていなかった場合に発生します。
quantity regex 数量の形式が符号なし整数でない場合に発生します。
quantity min 1未満の数量を指定した場合に発生します。
quantity stock 商品の在庫数を超えた数量を選択した場合に発生します。

ShoppingCart_RemoveItem

ShoppingCart_RemoveItem モジュールは、カートから商品を削除するためのモジュールです。

フィールド

以下のフィールドを指定して実行できます。



フィールド 概要 備考
eid カートから削除するエントリー(商品)のエントリーID 必須

以下はカートからエントリー(商品)を削除するサンプルコードです。

<!-- BEGIN_MODULE ShoppingCart -->
<!-- BEGIN remove -->
<!-- BEGIN_IF [{status}/eq/success] -->
<p class="acms-alert acms-alert-success">カートから商品を削除しました。</p>
<!-- ELSE -->
<p class="acms-alert acms-alert-danger">カートから商品を削除できませんでした。</p>
<!-- END_IF -->
<form action="" method="post" enctype="multipart/form-data"">
    <button class="btn" type="submit" name="ACMS_POST_ShoppingCart_RemoveItem">
      <span>カートから削除する</span>
    </button>
    <input type="hidden" name="eid" value="%{EID}">
    <input type="hidden" name="cart[]" value="eid">
</form>
<!-- END remove -->
<!-- END_MODULE ShoppingCart -->

エラー時の表示

ShoppingCart_RemoveItem モジュール実行時に何らかのエラーが起きた場合には以下のフィールド(項目)がバリデーションエラーとして表示されます。



フィールド(項目)名 オプション名 概要
eid required カートから削除したい商品のエントリーIDが指定されていなかった場合に発生します。

ShoppingCart_Update_Quantity

ShoppingCart_Update_Quantity モジュールは、カートアイテムの数量を更新するためのモジュールです。

フィールド

以下のフィールドを指定して実行できます。



フィールド 概要 備考
eid 数量を更新するカートアイテムのエントリーID 必須
quantity 更新する数量 必須, 数値

以下はカート内エントリー(商品)の数量を更新するサンプルコードです。

<!-- BEGIN_MODULE ShoppingCart -->
<!-- BEGIN update.quantity -->
<!-- BEGIN_IF [{status}/eq/success] -->
<p class="acms-alert acms-alert-success">カート内商品の数量を更新しました。</p>
<!-- ELSE -->
<p class="acms-alert acms-alert-danger">カート内商品の数量を更新できませんでした。</p>
<!-- END_IF -->

<form action="" method="post" enctype="multipart/form-data">
    <input  type="number" name="quantity" min="1" value="" >
    <input type="hidden" name="cart[]" value="quantity" >
    <div role="alert" aria-live="assertive">
      <div
        data-validator-label="quantity-v-required"
        class="validator-result-{quantity:validator#required}"
      >
        <p class="form-error-text">数量を入力してください。</p>
      </div>
    </div>
    <div role="alert" aria-live="assertive">
      <div
        data-validator-label="quantity-v-regex"
        class="validator-result-{quantity:validator#regex}"
      >
        <p class="form-error-text">数量の形式が間違っています。</p>
      </div>
    </div>
    <div role="alert" aria-live="assertive">
      <div
        data-validator-label="quantity-v-min"
        class="validator-result-{quantity:validator#min}"
      >
        <p class="form-error-text">1未満の数量は選択できません。</p>
      </div>
    </div>
    <div role="alert" aria-live="assertive">
      <div
        data-validator-label="quantity-v-stock"
        class="validator-result-{quantity:validator#stock}"
      >
        <p class="form-error-text">注文可能な数量を超えています。</p>
      </div>
    </div>
    <button class="btn" type="submit" name="ACMS_POST_ShoppingCart_Update_Quantity">
      <span>数量を更新する</span>
    </button>
    <input type="hidden" name="eid" value="%{EID}">
    <input type="hidden" name="cart[]" value="eid">
</form>
<!-- END update.quantity -->
<!-- END_MODULE ShoppingCart -->

エラー時の表示

ShoppingCart_Update_Quantity モジュール実行時に何らかのエラーが起きた場合には以下のフィールド(項目)がバリデーションエラーとして表示されます。



フィールド(項目)名 オプション名 概要
eid required 数量を更新したいカート内商品のエントリーIDが指定されていなかった場合に発生します。
quantity required 数量が指定されていなかった場合に発生します。
quantity regex 数量の形式が符号なし整数でない場合に発生します。
quantity min 1未満の数量を指定した場合に発生します。
quantity stock 商品の在庫数を超えた数量を選択した場合に発生します。

ShoppingCart モジュール

ShoppingCart モジュール は カートへの追加・削除・更新などのPOST処理を行った結果を表示する GET モジュールです。表示できる変数やブロックについては拡張アプリ管理画面から変数表を確認してください。

ShoppingForm_Confirm

ShoppingForm_Confirm モジュールは、Form_Confirm モジュールを継承して作成されたモジュールです。Form_Confirm モジュールの機能に加えて以下のことを行っています。

  • カートに在庫数を購入数が超過したアイテムが存在する場合、shoppingError ステップに遷移する

ShoppingForm_Submit

ShoppingForm_Submit モジュールは、Form_Submit モジュールを継承して作成されたモジュールです。Form_Submit モジュールの機能に加えて以下のことを行っています。

  • カートに在庫数を購入数が超過したアイテムが存在する場合、shoppingError ステップに遷移する
  • 決済処理
  • 在庫管理(注文数分の在庫数を減らす)
  • 購入フォームの送信が成功した場合、カート内商品の削除

ShoppingForm_ConfirmNow

ShoppingForm_ConfirmNow モジュールは 今すぐ決済フォームを実装するためのPOSTモジュールです。今すぐ決済フォームを実装することでカートを経由することなく、商品を購入できます。

ShoppingForm_SubmitNow

ShoppingForm_SubmitNow モジュールは 今すぐ決済フォームを実装するためのPOSTモジュールです。今すぐ決済フォームを実装することでカートを経由することなく、商品を購入できます。

グローバル変数

Shopping Cart 拡張アプリで提供しているグローバル変数についてのリファレンスです。



%{PAYMENT_SERVICE} Shopping Cart 設定 > 基本設定 > 決済サービス設定で設定した決済サービス(square)を表示
%{SQUARE_JS} square を利用した決済を行う場合に必要な JavaScript のURL
%{TAX_EXPRESSION_FORMAT} Shopping Cart 設定 > 基本設定 > 税金設定で設定した消費税区分(intax | extax)
%{TAX_CALC_METHOD} Shopping Cart 設定 > 基本設定 > 税金設定で設定した税計算方式(rebate | pileup)
%{TAX_ROUNDING_METHOD} Shopping Cart 設定 > 基本設定 > 税金設定で設定した税計算端数処理方式(floor | round | ceil)
%{INVOICE_NUMBER} Shopping Cart 設定 > 基本設定 > 適格請求書発行事業者の設定で設定した登録番号
%{INVOICE_NAME} Shopping Cart 設定 > 基本設定 > 適格請求書発行事業者の設定で設定した氏名または名称
%{SHIPPING_DATE_FROM} Shopping Cart 設定 > 注文画面設定 > 配送設定で設定した配送希望日の選択肢(開始)
%{SHIPPING_DATE_TO} Shopping Cart 設定 > 注文画面設定 > 配送設定で設定した配送希望日の選択肢(終了)
%{SHIPPING_FREE_SUBTOTAL} Shopping Cart 設定 > 注文画面設定 > 送料設定で設定した送料無料のしきい値(小計)
%{SHIPPING_FREE_SUBTOTAL_FORMATTED}
Ver. 2.1.0〜
%{SHIPPING_FREE_SUBTOTAL} をフォーマットした文字列
%{SHIPPING_CALC_METHOD} Shopping Cart 設定 > 送料設定で設定した送料の計算方法(sum | max)

校正オプション

Shopping Cart 拡張アプリで提供している校正オプションについてのリファレンスです。



convertToIncludingTax 税抜き価格を税込価格にします。適応する変数の価格は税抜きである必要があります。。
例:{price}[convertToIncludingTax('{tax}') | number_format]
priceが1000、taxが0.1のとき、1,100に校正されます。
convertToTotalPrice 単価 × 個数を計算します。第一引数に個数、第二引数に税率(省略可)を指定できます。
例:{price}[convertToTotalPrice('{quantity}', '{tax}') | number_format]
priceが1000、quantityが3、taxが0.1のとき、3,300に校正されます。
convertToTax 単価に対する消費税を計算します。
例:{price}[convertToTax('{tax}') | number_format]
priceが1000、taxが0.1 の場合、消費税区分が外税のとき、100に校正され、内税のとき、91に校正されます。
shippingGroupName 配送グループID から 配送グループ名を表示します。
例: {item_shipping_group_id}[shippingGroupName]

商品データ(エントリー)を登録する

Shopping Cart 拡張アプリでは1エントリーを1商品として扱います。そのため、商品データをサイトに追加したい時は、Shopping Cart 拡張アプリのルールに従ってエントリーを作成する必要があります。安心してください。難しいことは何もありません。Shopping Cart 拡張アプリを使用したECサイトで商品を登録する方法を学習しましょう。

商品を登録する手順は以下になります。

  • 商品管理に必要なエントリーのカスタムフィールドを追加する
  • 配送グループを選択するカスタムフィールドを追加する

商品管理に必要なエントリーのカスタムフィールドを追加する

Shopping Cart 拡張アプリを使用した、ECサイト構築ではエントリーを商品データとして扱うために必要なカスタムフィールドがいくつか設定されています。



フィールド 概要
item_price 商品の販売価格を設定するためのカスタムフィールドです。 1000
item_stock 商品の在庫数を設定するためのカスタムフィールドです。このフィールドの値が空文字の場合、その商品(エントリー)について在庫管理をしないことになります。 100
item_tax 商品の消費税率を設定するためのカスタムフィールドです。 0.1
item_shipping_group_id 商品の配送グループを設定するためのカスタムフィールドです。 Shopping Cart 設定で設定した配送グループの id の値を設定します。 group_default

※ Shopping Cart拡張アプリに同梱しているサンプルテーマでは、「商品を探す(products)」カテゴリーでエントリーを作成すると、上記の商品データ用のカスタムフィールドが設置された状態でエントリーを作成できるようになっています。

配送グループを選択するカスタムフィールドを追加する

エントリーのカスタムフィールドで Shopping Cart 拡張アプリ設定で設定した配送グループを設定できるようにするには、ShippingGroup_AdminSelect モジュール を使用して以下のように記述する必要があります。

ShippingGroup_AdminSelect モジュール を利用することで、自動的に配送グループのステータスを考慮した選択肢を表示することができます。

<select name="item_shipping_group_id">
  <!-- BEGIN_MODULE ShippingGroup_AdminSelect -->
    <!-- BEGIN shippingGroup:loop -->
    <option value="{id}" \{item_shipping_group_id:selected#{id}\}>{name}</option>
    <!-- END shippingGroup:loop -->
  <!-- END_MODULE ShippingGroup_AdminSelect -->
  </select>
<input type="hidden" name="field[]" value="item_shipping_group_id" />

【Tips】エントリー(商品)で在庫管理を行うかどうかを判定する

エントリーにおいて、在庫管理が有効かどうかは、エントリーのカスタムフィールド item_stock の値が空文字であるかどうかによって決まります。そのため、エントリーを表示するときに以下のようなIFブロックを記述することで、そのエントリーで在庫管理を行うかどうかを判定することができます。在庫管理を行うかどうかによってテンプレートを分岐させたい場合に活用できます。

<!-- BEGIN_IF [{item_stock}/isset] -->
在庫管理が有効な場合
<!-- ELSE -->
在庫管理が無効な場合
<!-- END_IF -->

まとめ

これで、ECサイトに商品データ(エントリー)を登録できるようになりました。商品データを登録できるようにはなりましたが、商品を購入できるようにするにはどうしたら良いのでしょうか?ユーザーが商品を購入するためには以下の2つのステップが必要になります。

  1. カート機能(カートへの商品の追加・削除)機能の実装
  2. 決済用フォームの実装

カートへの商品の追加・削除の実装方法ついてはリファレンスにて説明しています。また、決済用のフォームの作成についてはこちらのエントリーで説明しています。さぁ、ECサイトの構築完成まであと少しです!この調子で制作を進めていきましょう。

購入フォームを作成する

このエントリーでは、Shopping Cart 拡張アプリを使用して、購入フォームを作成する手順を説明します。購入フォームは以下の手順で作成できます。

  1. 決済フォーム用のGETモジュールを設定する
  2. 決済フォーム用のPOSTモジュールを設定する
  3. 決済方法の選択肢を実装する
  4. 追加手数料の選択肢を実装する

決済フォーム用のGETモジュールを設定する

a-blog cms でフォームを設置する場合は、Form モジュールをつかってフォームを作成しますが、決済フォームでは Shopping Cart 拡張アプリで提供している ShoppingForm モジュールを使用します。

基本的には、Form モジュールを設置していたところを ShoppingForm モジュールに置き換えていただくことで動作いたします。また、標準の Form モジュールを継承しているため、バリデーターやステップフォームの機能も備えています。

<!-- BEGIN_MODULE ShoppingForm -->

<!-- BEGIN step-->
<!-- 新規 -->
<!-- END step -->

<!-- BEGIN step#reapply -->
<!-- 修正 -->
<!-- END step#reapply -->

<!-- BEGIN step#confirm -->
<!-- 確認 -->
<!-- END step#confirm -->

<!-- BEGIN step#result -->
<!-- 完了 -->
<!-- END step#result -->

<!-- END_MODULE ShoppingForm -->

また、ShoppingForm モジュールでは、決済フォームで選択した決済方法や追加手数料を以下の変数とブロックで表示することが可能です。

Ver. 2.1.0 より、Order_Summary モジュールを利用して、決済フォームで選択した決済方法や追加手数料を表示できるようになりました。そのため、Ver. 2.1.0 以降では Order_Summary モジュールを利用して注文情報を表示することを推奨します。

Order_Summary モジュールで利用できる変数については、ShoppingCart 拡張アプリの管理画面内にある変数表からご確認ください。



変数名 概要
paymentMethodBlock 選択された決済方法のブロック
paymentMethodName 選択された決済方法の名前
paymentMethodCommissionPaid 選択された決済方法の決済手数料
paymentMethodDescription 選択された決済方法の説明テキスト
paymentMethodMailMessage 選択された決済方法のメール用テキスト


変数名 概要
additionId 選択された追加手数料のID
additionName 選択された追加手数料の名前
additionFee 選択された追加手数料の手数料

追加手数料を表示する変数は additionGroup:loop ブロック内で表示できます。

<h3 class="form-table-title">追加手数料</h3>
<table class="form-table">
  <!-- BEGIN additionGroup:loop -->
  <tr>
    <th></th>
    <td>
      {additionId} {additionName}(¥{additionFee}[number_format])
    </td>
  </tr>
  <!-- END additionGroup:loop -->
</table>

決済フォーム用のPOSTモジュールを設定する

a-blog cms でフォームを送信する場合は、Form_Confirm モジュールや Form_Submit モジュールを利用してフォームの確認ステップやエラーステップに遷移しますが、決済フォームでは Shopping Cart 拡張アプリで提供している ShoppingForm_Confirm モジュール及び、ShoppingForm_Submit モジュールを使用します。

利用方法は普段、Form_Confirm モジュールを使用しているところで ShoppingForm_Confirm モジュールを使用し、Form_Submit モジュールを使用しているところで、ShoppingForm_Submit モジュールを使用してフォーム送信を行うようにテンプレートを記述します。具体的なサンプルコードは以下になります。

ShoppingForm_Confirm モジュールを使用するサンプルコード

<form action="" method="post" class="js-unload_alert" enctype="multipart/form-data">
  <div class="form-btn-wrap">
    <input
      type="submit"
      name="ACMS_POST_ShoppingForm_Confirm"
      value="入力内容の確認へ"
    />
  </div>
  <input type="hidden" name="takeover" value="{takeover}" />
  <input type="hidden" name="step" value="confirm" />
  <input type="hidden" name="error" value="reapply" />
  <input type="hidden" name="id" value="shoppingForm" />
</form>

ShoppingForm_Submit モジュールを使用するサンプルコード

<form action="" method="post" class="js-unload_alert" enctype="multipart/form-data">
  <div class="form-btn-wrap">
    <input
      type="submit"
      name="ACMS_POST_ShoppingForm_Submit"
      value="注文を確定する"
    />
  </div>
  <input type="hidden" name="takeover" value="{takeover}" />
  <input type="hidden" name="step" value="result" />
  <input type="hidden" name="error" value="confirm" />
  <input type="hidden" name="id" value="shoppingForm" />
</form>

これで「決済フォーム用のPOSTモジュールを設定する」のステップは完了です。ShoppingForm_Confirm 及び、ShoppingForm_Submit モジュールが具体的に何をやっているかについてはリファレンスを参照してください。

決済方法を指定するカスタムフィールドを実装する

Shopping Cart 設定で設定した決済方法を指定するカスタムフィールドを作成します。フィールド名は payment-method である必要があります。以下は Payment_Select モジュールを使用して実装したサンプルコードになります。

Payment_Select モジュールを利用することで、自動的に決済方法のステータスを考慮した選択肢を表示することができます。

        <!-- BEGIN_MODULE Payment_Select -->
        <ul>
          <!-- BEGIN payment:loop -->
          <li>
            <div
              class="acms-form-radio"
            >
              <input
                id="input-radio-payment-method-{block}"
                type="radio"
                name="payment-method"
                value="{block}"
                \{payment-method:checked#{block}\}
                <!-- BEGIN_IF [\{payment-method\}/em/_and_/{payment.i}/eq/1] -->
                checked="checked"
                <!-- END_IF -->
                data-validator="payment-method"
              />
              <label for="input-radio-payment-method-{block}">
                <i class="acms-ico-radio"></i>{name}<!-- BEGIN_IF [{commissionPaid}/gt/0] -->:手数料 ¥{commissionPaid}[number_format]<!-- END_IF -->
              </label>
              <!-- BEGIN description:veil -->
              <div>
                <!-- BEGIN_IF [{description}[delnl]/nem] -->
                <div>{description}[nl2br]</div>
                <!-- END_IF -->
                <!-- BEGIN_IF [{image@path}/nem] -->
                <img
                  src="%{MEDIA_ARCHIVES_DIR}{image@path}"
                  class="acms-img-responsive"
                  alt="{image@alt}"
                  width="{image@width}"
                  height="{image@height}"
                >
                <!-- END_IF -->
              </div>
              <!-- END description:veil -->
            </div>
          </li>
          <!-- END payment:loop -->
        </ul>
        <!-- END_MODULE Payment_Select -->
        <input type="hidden" name="field[]" value="payment-method" />
        <input type="hidden" name="payment-method:v#required" id="payment-method-v-required" />
        <div role="alert" aria-live="assertive">
          <div data-validator-label="payment-method-v-required" class="validator-result-\{payment-method:v#required\}">
            <p class="form-error-text">決済方法を選択してください</p>
          </div>
        </div>

追加手数料を指定するカスタムフィールドを実装する

Shopping Cart 設定で設定した追加手数料を指定するカスタムフィールドを作成します。フィールド名は additionである必要があります。追加手数料は複数の値を指定して送信することが可能です。複数の値を指定してフォームを送信した場合、追加手数料は各手数料を合計した金額になります。以下は Addition_Select モジュールを使用して実装したサンプルコードになります。

Addition_Select モジュールを利用することで、自動的に決済方法のステータスを考慮した選択肢を表示することができます。

<!-- BEGIN_MODULE Addition_Select -->
<!-- BEGIN addition:veil -->
<h3>追加手数料</h3>
<table>
  <tbody>
    <tr>
      <th></th>
      <td>
        <ul>
          <!-- BEGIN addition:loop -->
          <li>
            <div class="acms-form-checkbox">
              <input type="checkbox" name="addition[]" value="{id}" \{addition:checked#{id}\} id="input-checkbox-addition-{id}" />
              <label for="input-checkbox-addition-{id}">
                <i class="acms-ico-checkbox"></i>{name}(¥{fee}[number_format])</label>
            </div>
          </li>
          <!-- END addition:loop -->
        </ul>
        <input type="hidden" name="field[]" value="addition" />
      </td>
    </tr>
  </tbody>
</table>
<!-- END addition:veil -->
<!-- END_MODULE Addition_Select -->

配送地域を指定するカスタムフィールドを実装する

決済フォームでは、配送先を送信することで、ShoppingCart設定 で配送グループごとに設定した送料設定に従って送料を計算します。送料を指定するフィールド名は deliver-area である必要があります。以下はサンプルコードになります。サンプルコードでは1つ前のステップで送信したカスタムフィールド deliver-pref の値を指定しています。

<input
  type="hidden"
  name="deliver-area"
  value="{deliver-pref}"
/>
<input type="hidden" name="field[]" value="deliver-area" />

購入エラー時のステップを追加する

購入フォームでは、購入時にエラーが発生した場合に表示する shoppingError ステップが標準で用意されています。

shoppingError ステップは購入処理中の商品に在庫切れの商品が存在する場合などに表示されます。

<!-- BEGIN_MODULE ShoppingForm -->

<!-- BEGIN step#shoppingError -->
<section>
  <h2>購入エラーが発生しました。</h2>
  <p class="message">購入手続き中の商品に問題がある可能性があります。お手数ですが、はじめからやり直して下さい。</p>
  <div class="form-btn-wrap">
    <a href="%{BASE_URL}cart/" class="btn">購入フォームに戻る</a>
  </div>
</section>
<!-- END step#shoppingError -->

<!-- END_MODULE ShoppingForm -->

まとめ

このエントリーでは、購入フォームを作成する方法を学びました。購入フォームのカスタマイズができるようになれば基本的なECサイトの構築についてはバッチリです。しかし、このままではサイト内で決済をすることができません。決済サービスと連携して、オンライン上で決済ができるECサイトを制作したい場合はこちらのドキュメントも合わせてご覧ください。

Squareと連携してクレジットカード決済機能を実装する

Shopping Cart 拡張アプリでは、決済サービスと連携することで、ECサイトにクレジットカード決済機能を実装することができます。このエントリーでは決済サービスとして Square と連携して、クレジットカード決済機能を実装する手順を説明します。

Square でクレジットカード決済を実装する場合の注意点

Square でクレジットカード決済を実装する場合、以下の場合は使用できませんのでご注意ください。

  • 税計算方式が「積み上げ」に設定されている
  • 税計算端数処理が「四捨五入」もしくは「切り上げ」に設定されている

クレジットカード決済機能を実装する

Squareと連携してクレジットカード決済機能を実装するには、以下の設定をする必要があります。

  • クレジットカード決済で使用するサービスとして Square を選択する
  • クレジットカード決済用の決済方法を登録する

また、a-blog cms を設置しているディレクトリに .env ファイルが作成されている必要があります。

クレジットカード決済で使用するサービスとして Square を選択する


連携するクレジットカード決済を設定する項目

連携するクレジットカード決済を選択する

クレジットカード決済を利用できるようにするためには、連携するクレジットカード決済を選択する必要があります。Shopping Cart 設定 > 基本設定 > 決済サービス設定で設定することができます。

クレジットカード決済用の決済方法を登録する


クレジットカード決済用の決済方法を登録する場合はブロック名を「creditcard」にする必要があります。

クレジットカード決済用の決済方法を登録する場合はブロック名を「creditcard」にする必要があります。


クレジットカード決済用の決済方法を登録する場合はブロック名を「creditcard」にする必要があるので、ブロック名を「creditcard」と入力した決済方法を Shopping Cart 設定 > 注文画面設定 > 決済方法と手数料で登録してください。

Square との連携

Square との連携は以下の手順で行います。

  1. アプリケーションを新規作成または選択する
  2. アプリケーションのOAuth設定をする
  3. a-blog cms と Square を OAuth 認証する
  4. Square を利用したクレジットカード決済に必要な HTML をテンプレートに記述する

1. アプリケーションを新規作成または選択する

まず、Square Developer にログインし、Applications 選択ページへ移動します。Square Developer のアカウントがなければ以下のURLから新規作成してください。


Applications 選択ページへ移動すると ↓ のような画面になっています。


アプリケーション選択ページ

アプリケーション選択ページ


次に、Shopping Cart 拡張アプリと連携させたいアプリケーションを新規作成または選択し、アプリケーションの個別の設定ページへ移動します。

2. アプリケーションの OAuth 設定をする


アプリケーションの個別ページ

アプリケーションの個別ページ


アプリケーションの個別の設定ページへ移動すると、↑ のような画面になっています。

画面左のメニューから、アプリケーションの OAuth 設定ページに移動します。開発中であれば Sandbox タブ、本番運用なら Production タブを選択します。(画像は Sandbox タブ)



OAuth 設定ページを開いたら、「Application ID」と「Application Secret」をメモ帳などに控えておいてください。

最後に、「Redirect URL」に https://ドメイン名/bid/ブログID/admin/app_shopping_cart_square_callback/と設定して保存します。https:// から始まるURLでないと登録できませんので注意してください。

a-blog cms と Square を OAuth 認証する

Square 側の設定ができたら、今度は a-blog cms 側の設定を行います。

まず、a-blog cmsの起動ファイルである、index.php と同じ階層に .env ファイルを設置します。a-blog cms をインストールした際に env.txt として設置してあるファイルを .env にリネームしていただければ ok です。

次に、拡張アプリの設定を行います。ShoppingCart 設定 > 決済サービスとの連携タブを選択してください。


Square との OAuth 認証が完了する前の設定画面

Square との OAuth 認証が完了する前の設定画面


先程メモ帳に控えた、「Application ID」と「Application Secret」を入力します。Sandbox(テスト運用)モードで認証する場合は、Sandbox(テスト運用)モードの設定 の入力欄に、Production(本番運用)モードで認証する場合は、Production(本番運用)モードの設定の入力欄に「Application ID」と「Application Secret」を入力してください。また、Sandbox(テスト運用)モードで認証する場合は、Sandboxモードのチェックボックスを有効にしてください。

「Application ID」と「Application Secret」の入力ができたら、一度「保存」ボタンをクリックし、設定を保存してください。保存すると、「認証する」ボタンがクリックできるようになります。

「認証する」ボタンがクリックできるようになったのを確認したら、「認証する」ボタンをクリックし、Square と OAuth 認証を行います。認証ページに遷移するので、ページ内の「許可」ボタンをクリックして認証を許可します。


認証の許可後、Shopping Cart 設定ページにリダイレクトされた画面

認証の許可後、Shopping Cart 設定ページにリダイレクトされた画面


認証の許可後、Shopping Cart 設定ページに自動的にリダイレクトされます。リダイレクト後の画面は ↑ のような画面になっています。ここまでで、OAuth 認証は完了しましたが、Square との連携はまだ完了できていません。ここまでの設定ができると、店舗というセレクトボックスが選択できるようになります。店舗のセレクトボックスから、アプリケーションで使用する店舗を選択して、保存してください。


OAuth 認証と店舗の設定が完了すると、認証ステータスが緑色になります。

OAuth 認証と店舗の設定が完了すると、認証ステータスが緑色になります。


店舗の設定が完了すると、Square との OAuth 認証は完了です。↑ 画像のように、認証ステータスが緑色になっていたらSquareとの連携が完了しています。

OAuth 認証時に、"サンドボックスアカウント用のOAuthフローを開始するには、最初に開発者向けSquare データから加盟店向けテストアカウントを起動します。" というエラーが発生した場合は、あらかじめCMSにログインしているブラウザで、開発者向けのSquareアカウントを起動してください。


開発者向けの Square アカウントを起動する手順は以下になります。


  1. Squareの ダッシュボード を開く
  2. 「Sandbox Test Accounts」のアカウントの「Open」ボタンをクリック
  3. CMSの管理画面に戻り、再度「認証」ボタンをクリックする

Square Sandbox とは

Square Sandbox とは、Square API のテストを行うために Square が用意している特別な環境です。

例えば、本番環境で Square API を利用したクレジットカード決済を行った場合は決済手数料がかかりますが、Sandbox 環境ではクレジットカードが実際に請求されることはなく、実際の銀行で支払いが処理されることはないため、決済手数料はかかりません。

Sandbox 環境では通常のクレジットカードは使用できません。Sandbox Payments に記載されているテスト用のクレジットカードを使用する必要がありますのでご注意ください。

Square を利用したクレジットカード決済に必要なテンプレートを記述する

最後に、Square を利用したクレジットカード決済に必要な テンプレートを記述します。

まず、Square と連携してクレジットカード決済をするために必要なJavaScript ライブラリを読み込みます。head要素内に下記のコードを記述してください。

<!-- BEGIN_MODULE Admin_InjectTemplate id="%{PAYMENT_SERVICE}-js" -->
<!-- END_MODULE Admin_InjectTemplate -->

次に、クレジットカード情報の入力欄を表示します。 クレジットカード情報の入力欄を表示したい箇所に下記のコードを記述してください。


<div
  id="js-sq-card-container"
  data-square-three-d-secure="true"
  data-square-amount="3000"
  data-square-currency-code="JPY"
  data-square-intent="CHARGE"
  data-square-seller-keyed-in="false"
  data-square-customer-initiated="true"
  data-square-billing-contact-given-name="太郎"
  data-square-billing-contact-family-name="山田"
  data-square-billing-contact-email="info@example.com"
  data-square-billing-contact-phone="090-0123-4567"
  data-square-billing-contact-country-code="JP"
  data-square-billing-contact-postal-code="4500002"
  data-square-billing-contact-state="愛知県"
  data-square-billing-contact-city="名古屋市中村区"
  data-square-billing-contact-address-line1="モンマートビル5階"
  data-square-billing-contact-address-line2="名駅3丁目18-5"
>
  <!-- Squareのカード入力用コンポーネントが表示されます -->
</div>

data-square から始まる属性の値は ShoppingForm モジュールや Order_Summary モジュールの変数を利用するなどの方法で動的に設定してください。


3Dセキュア機能を有効にするため、 data-square-three-d-secure 属性の値に true を設定し、決済情報及び決済者情報を設定してください。決済者情報は必須ではありませんが、セキュリティのため、できるだけ多くの情報を設定してください。


data 属性についての説明は以下になります。



属性名 説明 デフォルト
data-square-three-d-secure 3Dセキュアを有効にするかどうかを指定します。 true | false のどちらかになります。
true にした場合、data-square-amount は必須になります。
false
data-square-amount  クレジットカード支払いで請求される総額を指定します。(注1, 2)
data-square-currency-code ISO4217 の通貨コードを指定します。(注1, 2) JPY
data-square-intent
支払いのトランザクションインテントを指定します。CHARGE | CHARGE_AND_STORE のどちらかになります。(注1, 2)
CHARGE
data-square-seller-keyed-in
販売者が顧客に代わって支払詳細を入力したことを示します。これは、支払いをMail Order / Telephone Order (MOTO)としてフラグを立てるために使用されます。
true | false のどちらかで指定します。(注1, 2)
false
data-square-customer-initiated
顧客が支払いを開始したかどうかを示します。true | false のどちらかで指定します。(注1, 2)
true
data-square-billing-contact-given-name
購入者の名 (ファーストネーム)または、名前を指定します。(注1, 2)

data-square-billing-contact-family-name
購入者の苗字 (ファミリーネーム、「ラスト」ネーム)を指定します。(注1, 2)
性と名を分けて指定できない場合は、フルネームを data-square-billing-contact-given-nameとして指定してください。
data-square-billing-contact-email 購入者のメールアドレスを指定します。(注1, 2)
data-square-billing-contact-phone 購入者の電話番号を指定します。(注1, 2)
data-square-billing-contact-country-code 購入者の住所情報の内、 ISO 3166-1 の国名コードを指定します。(注1, 2)
data-square-billing-contact-postal-code 購入者の住所情報の内、郵便番号を指定します。(注1, 2)
data-square-billing-contact-state 購入者の住所情報の内、都道府県を指定します。(注1, 2)
data-square-billing-contact-city 購入者の住所情報の内、市区町村を指定します。(注1, 2)
data-square-billing-contact-address-line1 購入者の住所情報の内、国名コード・郵便番号・都道府県・市区町村以降の住所を指定します。(注1, 2)
data-square-billing-contact-address-line2 購入者の住所情報の内、国名コード・郵便番号・都道府県・市区町村以降の住所を指定します。(注1, 2)
data-square-billing-contact-address-line3 購入者の住所情報の内、国名コード・郵便番号・都道府県・市区町村以降の住所を指定します。(注1, 2)

  • 注1:これらの値はSquareによるクレジットカード情報のトークン化が行われるとき、つまりクレジットカード情報を入力するフォームを送信するときに評価されます。
  • 注2:これらの値は、まず document.querySelector() での検索に使用され、見つかればその value を使い、なければ指定値を生の文字列として扱います。

決済情報及び、決済者情報を設定することで、Square の API で適切に 3Dセキュア認証が必要かどうか判定することができ、必要であれば自動的に決済者に追加の認証を要求します。

設定した決済情報及び決済者情報は、Square のサーバーに送信され、検証のための詳細情報として扱われます。詳細は以下のURLからご確認ください。

Reference for tokenize() method fields


最後に、先程読み込んだJavaScriptライブラリを活用してクレジットカード情報入力用のコンポーネントを初期化します。 Admin_InjectTemplate モジュールで JavaScript ライブラリを読み込めていた場合、acmsSquare というオブジェクトが参照できるようになっています。acmsSquare オブジェクト の creditCard メソッドを実行することでクレジットカード情報入力用のコンポーネントを初期化できます。そのとき、第1引数に、クレジットカード入力要コンポーネントを表示したい要素をセレクター形式で指定してください。サンプルコードでは、先程 クレジットカード情報の入力欄を表示したい箇所に記述した要素を指定しています。


<script>  
  window.addEventListener('DOMContentLoaded', () => {
    if (document.querySelector('#js-sq-card-container')) {
      acmsSquare.creditCard('#js-sq-card-container');
    }
  });
</script>

creditCard メソッドを実行することで、クレジットカード情報入力用のコンポーネントを囲む form 要素の送信ボタンをクリックしたときに、Squareと通信し、クレジットカードの識別情報を取得します。

Square から取得した、クレジットカード識別情報は、「square-nonce」というフィールドに格納されます。このフィールドは JavaScript によって自動で追加されます。

<input type="hidden" name="square-nonce" value="取得したクレジットカード情報">
<input type="hidden" name="field[]" value="square-nonce">

ここまでできたら、Square と連携したクレジットカード決済機能が実装できています。実際に決済フォームからクレジットカード決済を試してみてください。

クレジットカード決済の失敗を表示する

不正なクレジットカード番号で決済が行われた場合など、クレジットカード決済でエラーとなることがあります。決済時にエラーが起きたことを表示できるようにするため、決済フォームでクレジットカード決済が失敗した場合、creditcard というフィールドの auth オプションがエラー判定されるようになっています。

そのため、決済フォームに、creditcard フィールドの auth オプションがエラー判定されたときのコードを書いておくと、クレジットカード決済が失敗した場合のエラーメッセージを表示可能です。以下はサンプルのソースコードです。

<div role="alert" aria-live="assertive">
  <div class="validator-result-{creditcard:v#auth}">
    <p class="form-error-text">クレジットカード認証に失敗しました。</p>
  </div>
</div>

オプション

payments オブジェクトの creditCard メソッドは第2引数にオプションを設定することができます。オプションは以下の項目が利用可能です。



オプション名 概要 デフォルト値
submitterElementOrSelector 購入フォームを送信するボタン要素を指定します。セレクター形式の文字列 or HTMLElement 型 で指定することが出来ます。 '[name*="ACMS_POST_ShoppingForm"]'
calbacks クレジットカード情報入力用のコンポーネントにイベントを追加できます。squareで用意されているイベントが設定できます。詳しくはこちらを参照してください。 {}
focus 初期化時に、クレジットカード情報入力用のコンポーネント内の特定のフィールドにフォーカスをセットします。指定できるフィールドについてはこちらを参照してください。フィールドを文字列形式でしていできるほか、関数を指定することも可能です。関数を指定した場合 focus メソッドが指定した関数の引数に渡されます。 undefined
recalculateSize クレジットカード情報入力用のコンポーネントのサイズを再計算します。カードコンポーネントは通常、購入者のブラウザのサイズに基づいて自動的にサイズ変更されますが、カードコンポーネントが display: none の計算スタイルプロパティを持つ要素に含まれている場合、カードコンポーネントは定義された幅を持たなくなり、したがってモバイルとデスクトップの構成間で適切にサイズ変更されなくなります。再び表示されたとき、Card コンポーネントはブラウザウィンドウに合わせて自動的にサイズを更新しません。
このメソッドrecalculateSize()を使用すると、Cardコンポーネントのサイズを強制的に再計算し、モバイルまたはデスクトップ用に適切に表示することで、このエッジケースを処理することができます。関数で設定でき、設定された関数には、recalculateSize  メソッドが引数として渡されます。
() => {}
squareCardOptions クレジットカード情報入力用のコンポーネントのスタイルや動作をカスタマイズするためのオプションです。こちらに記載されている項目がそのまま利用可能です。 { postalCode: '' }

オプション設定例

オプションを設定する例になります。

<script>
  acmsSquare.creditCard('#js-sq-card-container', {
    submitterElementOrSelector: '#js-shoppingForm-submit'
    callbacks: {
      cardBrandChanged(event) {
        console.info(event)
      },
      errorClassAdded(event) {
        console.info(event)
      },
      errorClassRemoved(event) {
        console.info(event)
      },
      escape(event) {
        console.info(event)
      },
      focusClassAdded(event) {
        console.info(event)
      },
      focusClassRemoved(event) {
        console.info(event)
      },
      postalCodeChanged(event) {
        console.info(event)
      },
      submit(event) {
        console.info(event)
      },
    },
    focus: 'cardNumber', // or (focus) => { focus('cardNumber') }
    recalculateSize: (recalculateSize) => {
      document
        .querySelector('.js-recalculate-size-trigger')
        .addEventListener('change', () => {
            recalculateSize();
         });
    },
    squareCardOptions: {
      postalCode: '',
      includeInputLabels: true,
      style: {
         "input": {
           "color": "red",
         },
         "@media screen and (max-width: 600px)": {
           "input": {
             "fontSize": "12px",
           }
         }
       }
     },
  });
</script>

イベント

Square 用の JavaScriptライブラリ では以下のイベントを用意しています。イベントを活用することで、特定のアクションが発生した時に処理を挟み込めます。



イベント名 概要
acmsSquareTokenizeSuccessed クレジットカード情報の取得に成功したときに発生します。
acmsSquareTokenizeFailed クレジットカード情報の取得に失敗したときに発生します。

イベント設定例

window.addEventListener('acmsSquareTokenizeSuccessed', (event) => {
  // クレジットカード情報の取得に成功したとき
  console.info(event)
})

window.addEventListener('acmsSquareTokenizeFailed', (event) => {
  // クレジットカード情報の取得に失敗したとき
  console.info(event)
})

メールテンプレートで利用可能な変数

Square を利用して決済した場合、メールテンプレートで以下の変数が利用可能です。



変数名 概要
square-last4 クレジットカード番号の下4桁を表示できます。
square-receiptNumber
Ver. 2.1.0〜
Square によって発行されるレシート番号
square-receiptUrl
Ver. 2.1.0〜
Square によって発行されるレシートのURL

お取引一覧のメモをカスタマイズする Ver. 2.2.2〜


Square の管理画面内のお取引一覧ページ

Square のお取引一覧ページ

Square のお取引一覧ページに表示されるメモをカスタマイズすることができます。デフォルト値は "a-blog cms による決済" です。

購入フォームにカスタムフィールドで square-note の値として、任意のメモを送信することで、Square のお取引一覧ページに表示されるメモを任意のテキストにカスタマイズできます。

以下は フォームのサンプルコードになります。

<input type="hidden" name="square-note" value="ウェブサイト決済" />
<input type="hidden" name="field[]" value="square-note" />

上記の例では、お取引一覧ページに表示されるメモを "ウェブサイト決済" という文字にカスタマイズしています。

おめでとうございます。ついに、ECサイトにクレジットカード決済機能を導入することができました。ここまでできたら ECサイトとしての機能はひととおり実装できているでしょう。