Google Pay API는 2018년 7월에 PaymentDataRequest
및 IsReadyToPayRequest
객체의 새로운 객체 구조를 도입했습니다. 이 가이드는 Google Pay API 버전 1용으로 형식이 지정된 객체를 버전 2용으로 업데이트하는 방법을 설명합니다.
결제 수단
API 버전은 Google Pay API 버전 2의 각 요청 객체와 함께 지정됩니다.
Google Pay API 버전 1은 카드를 유일한 결제 방법으로 지원했지만 CARD
결제 수단은 Google Pay API 버전 2에서 사용할 수 있는 여러 결제 수단 옵션 중 하나입니다. 이전에 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 Pay API 버전 1에서 Google 판매자 ID는 최상위 속성이었습니다. 하지만 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
에서 2
의 apiVersion
속성 값을 설정하는 사이트의 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
결제 수단 토큰화 유형을 지정하고 TOKENIZED_CARD
의 API 버전 1 결제 수단을 수락하는 사이트는 복호화된 encryptedMessage
속성을 처리하는 방식을 업데이트해야 합니다. 3D Secure 암호 및 선택적 전자 상거래 표시기(ECI)로 인증된 Android 기기 토큰을 게이트웨이 또는 대행업체로 계속 전달해야 하기 때문입니다. 카드는 paymentMethodDetails.authMethod
에서 선택한 카드의 인증 방법에 대한 추가 정보가 있는 CARD
의 paymentMethod
입니다.
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" } }