W lipcu 2018 r. w Google Pay API wprowadzone zostały nowe struktury obiektów PaymentDataRequest
i IsReadyToPayRequest
. Ten przewodnik wyjaśnia, jak zaktualizować obiekty w formacie wersji 1 Google Pay API do obiektów w formacie wersji 2.
Formy płatności
W wersji 2 Google Pay API każdy obiekt żądania zawiera wersję interfejsu API.
Wersja 1 interfejsu Google Pay API obsługiwała tylko karty. Forma płatności CARD
jest jedną z wielu dostępnych opcji płatności w wersji 2 interfejsu Google Pay API. Witryny, które do tej pory miały ustawioną wartość allowedPaymentMethods
w CARD
, teraz muszą mieć ustawioną wartość allowedAuthMethods
w PAN_ONLY
. Witryny, które do tej pory miały ustawioną wartość allowedPaymentMethods
w TOKENIZED_CARD
, teraz muszą mieć ustawioną wartość allowedAuthMethods
w CRYPTOGRAM_3DS
.
Dozwolone sieci kart są podane razem z obsługiwanymi metodami uwierzytelniania kart w tych sieciach.
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' ] } }] }
Dozwolone sieci kart i ich metody uwierzytelniania są zawarte w IsReadyToPayRequest
dla formy płatności CARD
.
Tokenizacja danych płatności kartą
Google Pay API zwraca zaszyfrowane dane karty, które są używane przez podaną bramę lub odszyfrowane na Twoich serwerach. W wersji 2 interfejsu Google Pay API tokenizacja formy płatności odbywa się wewnątrz formy płatności 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' } } }] }
Identyfikator sprzedawcy w Google
W wersji 1 interfejsu Google Pay API identyfikator sprzedawcy w Google był właściwością najwyższego poziomu. Teraz znajduje się w obiekcie MerchantInfo
wraz z opcjonalną nazwą sprzedawcy.
apiVersion 1
{ merchantId: '12345678901234567890' }
apiVersion 2
{ merchantInfo: { merchantId: '12345678901234567890' } }
Adres rozliczeniowy
Opcjonalny adres rozliczeniowy i numer telefonu na potrzeby rozliczeń są powiązane z formą płatności CARD
.
Witryna może wysłać żądanie adresu rozliczeniowego – w takiej sytuacji konfiguracja spodziewanej odpowiedzi znajduje się w obiekcie BillingAddressParameters
.
apiVersion 1
{ cardRequirements: { billingAddressRequired: true, billingAddressFormat: 'FULL' }, phoneNumberRequired: true }
apiVersion 2
{ allowedPaymentMethods: [{ type: 'CARD', parameters: { billingAddressRequired: true, billingAddressParameters: { format: 'FULL', phoneNumberRequired: true } } }] }
Adres dostawy
Opcjonalny adres dostawy nadal jest wymagany na najwyższym poziomie obiektu PaymentDataRequest
.
Nazwa shippingAddressRequirements
została zmieniona na shippingAddressParameters
.
Do tej pory odpowiedzi Google Pay API na żądanie numeru telefonu mogły zwracać numer telefonu jako część adresu dostawy. Numer telefonu na potrzeby dostawy nie jest już obsługiwany w żadnej wersji Google Pay API. Trzeba zaktualizować funkcje przetwarzające odpowiedź, które oczekują podania numeru telefonu na potrzeby dostawy.
apiVersion 1
{ shippingAddressRequired: true, shippingAddressRequirements: { allowedCountryCodes: [ 'US', 'CA' ] } }
apiVersion 2
{ shippingAddressRequired: true, shippingAddressParameters: { allowedCountryCodes: [ 'US', 'CA' ] } }
Odpowiedź PaymentData
Odpowiedź obiektu PaymentData
dla witryn z właściwością apiVersion
o wartości 2
w PaymentDataRequest
zmieniła się i teraz jako jednej z dostępnych odpowiedzi dotyczących danych płatności używa kart.
Właściwości apiVersion
i apiVersionMinor
w obiekcie PaymentDataRequest
występują w odpowiedzi PaymentData
, aby określić spodziewany format.
apiVersion 1
{ // no version specified }
apiVersion 2
{ apiVersion: 2, apiVersionMinor: 0 }
Informacje o wybranej formie płatności i jej tokenizacji znajdują się we właściwości paymentMethodData
.
Z obiektu cardInfo
karty zostały usunięte dwie właściwości: cardClass
i 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' } } }
Odpowiedź na zaszyfrowaną wiadomość
W witrynach, które używają typu tokenizacji formy płatności DIRECT
i obsługują formę płatności TOKENIZED_CARD
zgodnie z wersją 1 interfejsu API, trzeba zaktualizować sposób obsługi odszyfrowanej właściwości encryptedMessage
. Jest to konieczne, aby dalej przekazywać tokeny urządzeń z Androidem uwierzytelnianych za pomocą kryptogramu 3-D Secure i opcjonalnie za pomocą wskaźnika handlu elektronicznego (electronic commerce indicator, ECI) do bramy lub firmy obsługującej płatności. Karta to paymentMethod
z wartością CARD
. W paymentMethodDetails.authMethod
zawiera dodatkowe informacje o metodzie uwierzytelniania wybranej karty.
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" } }