- Apple Developer アカウントと Merchant ID。
- Payment Processing Certificate と対応する秘密鍵。
- Apple Pay on the Web のドメイン検証。
- Apple Pay JS または PassKit のフロントエンド連携。
- トークン署名検証、復号、リプレイ防止、機密データのコンプライアンス対応。
現在サポート:復号済みトークンの送信
現在は、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 へ送信します。復号後の payload 構造
token.paymentData を復号すると、Apple が定義する payment token payload が得られます。
merchantTokenIdentifier などの Merchant Token 情報も含まれます。
送信形式
復号済み payload だけでは不十分です。復号済みデータにはカードネットワークが含まれず、Apple Pay の DPAN の BIN から通常はネットワークを特定できません。billingContact も暗号化データの外側にあり、カード名義人名と請求先住所の唯一の取得元です。Apple Pay が返す外側の構造を保持し、token 内に token.decryptedPaymentData を追加してください。token.paymentData も同時に保持できます。
次の JSON は、/api/v1/order/create リクエストの paymentTokenData フィールドに設定する内容です。
paymentTokenData は String です。リクエストを送信する前に、オブジェクト全体を JSON 文字列へシリアライズしてください。
token.decryptedPaymentData を検出すると、復号済みトークンを優先して処理し、プラットフォームでの復号をスキップします。
フィールド要件
復号済みトークンの送信に対応しているのは Apple Pay のみです。Google Pay トークンは暗号化形式で送信する必要があります。