Google Pay API 于 2018 年 7 月为 PaymentDataRequest
和 IsReadyToPayRequest
对象推出了新的对象结构。本指南介绍了如何将针对 Google Pay API 版本 1 设置了格式的对象更新为针对版本 2 设置了格式的对象。
付款方式
Google Pay API 版本 2 中的每个请求对象均指定了 API 版本。
Google Pay API 版本 1 支持将卡作为唯一的付款方式。在 Google Pay API 版本 2 中,CARD
付款方式是多个可能的付款方式选项之一。以前将 allowedPaymentMethods
值指定为 CARD
的网站现在必须将 allowedAuthMethods
值设置为 PAN_ONLY
。以前将 allowedPaymentMethods
值指定为 TOKENIZED_CARD
的网站现在必须将 allowedAuthMethods
值设置为 CRYPTOGRAM_3DS
。
允许的支付卡网络会与这些网络中的支付卡对应的受支持的身份验证方法一起指定。
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
对象响应已更改为将卡作为多个可能的付款数据响应之一来引用。PaymentDataRequest
对象中包含的 apiVersion
和 apiVersionMinor
属性会显示在 PaymentData
响应中,以指明预期格式。
apiVersion 1
{ // no version specified }
apiVersion 2
{ apiVersion: 2, apiVersionMinor: 0 }
所选付款方式及其令牌化的相关信息位于 paymentMethodData
属性中。卡付款方式的 cardInfo
对象中移除了两个属性:cardClass
和 cardImageUri
。
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
付款方式令牌化类型并接受 API 版本 1 TOKENIZED_CARD
付款方式的网站必须更新其对解密的 encryptedMessage
属性的处理方式。网站必须执行此操作,才能继续将使用 3D 安全密文和可选的电子商务指示器 (ECI) 进行身份验证的 Android 设备令牌转发到您的网关或处理方。卡是 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" } }