Skip to main content
直接連携では、Apple Pay JS または PassKit で Apple Pay トークンを取得し、Merchant サーバーから Waffo へ送信します。 Merchant は次の項目を管理します。
  • Apple Developer アカウントと Merchant ID。
  • Payment Processing Certificate と対応する秘密鍵。
  • Apple Pay on the Web のドメイン検証。
  • Apple Pay JS または PassKit のフロントエンド連携。
  • トークン署名検証、復号、リプレイ防止、機密データのコンプライアンス対応。
開始前に Waffo テクニカルサポートへ連絡し、Merchant と決済手段の設定を確認してください。

現在サポート:復号済みトークンの送信

現在は、Merchant サーバーで Apple Pay トークンを復号し、以下の形式で復号結果を Waffo へ送信する必要があります。
リクエストには token.decryptedPaymentData が必要です。token.paymentData も同時に保持できますが、それだけを送信結果として使用することはできません。

元の暗号化済みトークンの構造

Apple Pay JS または PassKit は、次の元の payment token エンベロープを返します。現在、このオブジェクトは Merchant サーバーで署名検証と復号を行うための入力です。Waffo へ直接送信できる paymentTokenData ではありません。

トークンを復号して検証する

Apple Pay JS または PassKit が返すトークンでは、token.paymentData に暗号化された決済データが含まれます。サーバーで次の処理を行います。
1

復号鍵を選択する

Payment Processing Certificate に対応する秘密鍵を使用します。
2

トークンを検証する

Apple の仕様に従って、トークン署名と証明書チェーンを検証します。
3

決済データを復号する

トークンの version に従って token.paymentData.data を復号し、UTF-8 の結果を JSON として解析します。
4

取引を検証する

transactionId が未処理であることを確認し、復号結果の通貨と金額を注文と照合します。
5

Waffo リクエストを組み立てる

復号済み JSON を token.decryptedPaymentData に格納し、Waffo へ送信します。
暗号処理の全手順とフィールド定義については、Apple の Payment token format referenceに従ってください。証明書の設定については、Setting up Apple Payを参照してください。
復号済みデータには、デバイスアカウント番号と決済暗号文が含まれます。ブラウザーで復号しないでください。また、完全なトークン、デバイスアカウント番号、秘密鍵、決済暗号文をログに記録しないでください。

復号後の payload 構造

token.paymentData を復号すると、Apple が定義する payment token payload が得られます。
Subscription 決済の MPAN シナリオでは、merchantTokenIdentifier などの Merchant Token 情報も含まれます。

送信形式

復号済み payload だけでは不十分です。復号済みデータにはカードネットワークが含まれず、Apple Pay の DPAN の BIN から通常はネットワークを特定できません。billingContact も暗号化データの外側にあり、カード名義人名と請求先住所の唯一の取得元です。Apple Pay が返す外側の構造を保持し、token 内に token.decryptedPaymentData を追加してください。token.paymentData も同時に保持できます。 次の JSON は、/api/v1/order/create リクエストの paymentTokenData フィールドに設定する内容です。
注文作成 API では、paymentTokenDataString です。リクエストを送信する前に、オブジェクト全体を JSON 文字列へシリアライズしてください。
Waffo は token.decryptedPaymentData を検出すると、復号済みトークンを優先して処理し、プラットフォームでの復号をスキップします。

フィールド要件

復号済みトークンの送信に対応しているのは Apple Pay のみです。Google Pay トークンは暗号化形式で送信する必要があります。