Google Pay API では、2018 年 7 月に新しいオブジェクト構造として、PaymentDataRequest
と IsReadyToPayRequest
が導入されました。このガイドでは、Google Pay API バージョン 1 用にフォーマットされたオブジェクトを、バージョン 2 用のオブジェクトに更新する方法について説明します。
お支払い方法
API バージョンは、Google Pay API のバージョン 2 で各リクエスト オブジェクトで指定されます。
Google Pay API のバージョン 1 でサポートしていたお支払い方法はカードのみでしたが、Google Pay API のバージョン 2 では、CARD
は唯一のお支払い方法ではなく、他のお支払い方法も含まれます。以前に CARD
の値として allowedPaymentMethods
を指定していたサイトでは、現在は PAN_ONLY
の値として allowedAuthMethods
を設定する必要があります。以前に TOKENIZED_CARD
の値として allowedPaymentMethods
を指定していたサイトでは、現在は CRYPTOGRAM_3DS
の値として allowedAuthMethods
を設定する必要があります。
許可されたカード ネットワークは、そのネットワーク上のカードに対してサポートされている認証方法とともに指定されます。
apiVersion 1
{ allowedPaymentMethods: [ 'CARD', 'TOKENIZED_CARD' ], cardRequirements: { allowedCardNetworks: [ 'AMEX', 'DISCOVER', 'JCB', 'MASTERCARD', 'VISA' ] } }
apiVersion 2
{ apiVersion: 2, apiVersionMinor: 0, allowedPaymentMethods: [{ type: 'CARD', parameters: { allowedAuthMethods: [ 'PAN_ONLY', 'CRYPTOGRAM_3DS' ], allowedCardNetworks: [ 'AMEX', 'DISCOVER', 'JCB', 'MASTERCARD', 'VISA' ] } }] }
許可されたカード ネットワークとその認証方法は、CARD
のお支払い方法の IsReadyToPayRequest
に含まれています。
カード支払いデータのトークン化
Google Pay API は、指定したゲートウェイによって参照されるか販売者独自のサーバーで復号される、暗号化されたカードデータを返します。Google Pay API のバージョン 2 では、支払い方法のトークン化は CARD
のお支払い方法の中に移動されています。
apiVersion 1
{ paymentMethodTokenizationParameters: { tokenizationType: 'PAYMENT_GATEWAY', parameters: { 'gateway': 'example', 'gatewayMerchantId': 'exampleMerchantId' } } }
apiVersion 2
{ allowedPaymentMethods: [{ type: 'CARD', tokenizationSpecification: { type: 'PAYMENT_GATEWAY', parameters: { 'gateway': 'example', 'gatewayMerchantId': 'exampleMerchantId' } } }] }
Google 販売者 ID
Google の販売者 ID は、Google Pay API のバージョン 1 の最上位のプロパティでした。現在、Google の販売者 ID は、オプションの販売者名を持つ MerchantInfo
オブジェクト内に配置されます。
apiVersion 1
{ merchantId: '12345678901234567890' }
apiVersion 2
{ merchantInfo: { merchantId: '12345678901234567890' } }
請求先住所
オプションの請求先住所と請求先電話番号は、CARD
のお支払い方法に関連付けられています。サイトから請求先住所がリクエストされる場合、必要なレスポンスに関連する構成は BillingAddressParameters
オブジェクト内に配置されます。
apiVersion 1
{ cardRequirements: { billingAddressRequired: true, billingAddressFormat: 'FULL' }, phoneNumberRequired: true }
apiVersion 2
{ allowedPaymentMethods: [{ type: 'CARD', parameters: { billingAddressRequired: true, billingAddressParameters: { format: 'FULL', phoneNumberRequired: true } } }] }
配送先住所
オプションの配送先住所要件は、PaymentDataRequest
オブジェクトの最上位に残されています。shippingAddressRequirements
プロパティは名前が shippingAddressParameters
に変更されました。
以前の Google Pay API レスポンスでは、電話番号がリクエストされたときに配送先住所の一部として電話番号を返していたことがありました。しかし、現在では Google Pay API のどのバージョンでも配送先の電話番号はサポートされていません。 配送先の電話番号を必要とするレスポンス ハンドラはすべて更新する必要があります。
apiVersion 1
{ shippingAddressRequired: true, shippingAddressRequirements: { allowedCountryCodes: [ 'US', 'CA' ] } }
apiVersion 2
{ shippingAddressRequired: true, shippingAddressParameters: { allowedCountryCodes: [ 'US', 'CA' ] } }
PaymentData レスポンス
PaymentDataRequest
で apiVersion
プロパティの値として 2
を設定したサイトでの PaymentData
オブジェクトによるレスポンスは、使用可能な複数の支払いデータ レスポンスの 1 つとしてカードを参照するように変更されました。PaymentDataRequest
オブジェクトに含まれていた apiVersion
プロパティと apiVersionMinor
プロパティは、必要な形式を示すために PaymentData
レスポンスに含まれます。
apiVersion 1
{ // no version specified }
apiVersion 2
{ apiVersion: 2, apiVersionMinor: 0 }
選択されたお支払い方法とそのトークン化に関する情報は、paymentMethodData
プロパティ内に配置されます。cardClass
と cardImageUri
の 2 つのプロパティがカードのお支払い方法の cardInfo
オブジェクトから削除されました。
apiVersion 1
{ cardInfo: { cardDescription: 'Visa •••• 1234', cardNetwork: 'VISA', cardDetails: 1234 }, paymentMethodToken: { tokenizationType: 'PAYMENT_GATEWAY', token: 'examplePaymentMethodToken' } }
apiVersion 2
{ paymentMethodData: { type: 'CARD', description: 'Visa •••• 1234', info: { cardNetwork: 'VISA', cardDetails: '1234' }, tokenizationData: { type: 'PAYMENT_GATEWAY', token: 'examplePaymentMethodToken' } } }
暗号化されたメッセージ レスポンス
DIRECT
の支払い方法トークン化タイプを指定し、TOKENIZED_CARD
の API バージョン 1 のお支払い方法を受け入れるサイトでは、復号された encryptedMessage
プロパティの処理方法を更新する必要があります。更新することで、3D セキュア クリプトグラムで認証された Android デバイスのトークンとオプションの電子商取引インジケータ(ECI)をゲートウェイまたはデータ処理者へ引き続き転送できます。カードは CARD
の paymentMethod
であり、選択されたカードの認証方法に関する追加情報が paymentMethodDetails.authMethod
に含まれます。
apiVersion 1
{ "paymentMethod": "TOKENIZED_CARD", "paymentMethodDetails": { "authMethod": "3DS", "dpan": "1111222233334444", "expirationMonth": 10, "expirationYear": 2020, "3dsCryptogram": "AAAAAA...", "3dsEciIndicator": "eci indicator" } }
apiVersion 2
{ "paymentMethod": "CARD", "paymentMethodDetails": { "authMethod": "CRYPTOGRAM_3DS", "pan": "1111222233334444", "expirationMonth": 10, "expirationYear": 2020, "cryptogram": "AAAAAA...", "eciIndicator": "eci indicator" } }