購入フォームを作成する

このエントリーでは、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サイトとしての機能はひととおり実装できているでしょう。