API-ul Google Pay a introdus noi structuri de obiecte pentru obiectele PaymentDataRequest și IsReadyToPayRequest în iulie 2018. Acest ghid explică cum se actualizează obiectele formatate pentru versiunea 1 a API-ului Google Pay la obiecte formatate pentru versiunea 2.
Metode de plată
O versiune API este specificată pentru fiecare obiect de solicitare în versiunea 2 a API-ului Google Pay.
Versiunea 1 a API-ului Google Pay accepta cardurile ca unică formă de plată. Metoda de plată CARD este una dintre multiplele opțiuni de metodă de plată posibile în versiunea 2 a API-ului Google Pay. Site-urile care anterior specificau o valoare allowedPaymentMethods de CARD trebuie acum să seteze o valoare allowedAuthMethods de PAN_ONLY . Site-urile care anterior specificau o valoare allowedPaymentMethods de TOKENIZED_CARD trebuie acum să seteze o valoare allowedAuthMethods de CRYPTOGRAM_3DS .
Rețelele de carduri permise sunt specificate alături de metodele de autentificare acceptate pentru cardurile din rețelele respective.
Versiunea api 1
{ allowedPaymentMethods: [ 'CARD', 'TOKENIZED_CARD' ], cardRequirements: { allowedCardNetworks: [ 'AMEX', 'DISCOVER', 'JCB', 'MASTERCARD', 'VISA' ] } }
apiVersiunea 2
{ apiVersion: 2, apiVersionMinor: 0, allowedPaymentMethods: [{ type: 'CARD', parameters: { allowedAuthMethods: [ 'PAN_ONLY', 'CRYPTOGRAM_3DS' ], allowedCardNetworks: [ 'AMEX', 'DISCOVER', 'JCB', 'MASTERCARD', 'VISA' ] } }] }
Rețelele de carduri permise și metodele lor de autentificare sunt incluse într-o cerere IsReadyToPayRequest pentru o metodă de plată CARD .
Tokenizarea datelor de plată cu cardul
API-ul Google Pay returnează date criptate ale cardului, la care se face referire prin gateway-ul specificat sau care sunt decriptate pe serverele dvs. Versiunea 2 a API-ului Google Pay mutătokenizarea metodei de plată în cadrul metodei de plată CARD .
Versiunea api 1
{ paymentMethodTokenizationParameters: { tokenizationType: 'PAYMENT_GATEWAY', parameters: { 'gateway': 'example', 'gatewayMerchantId': 'exampleMerchantId' } } }
apiVersiunea 2
{ allowedPaymentMethods: [{ type: 'CARD', tokenizationSpecification: { type: 'PAYMENT_GATEWAY', parameters: { 'gateway': 'example', 'gatewayMerchantId': 'exampleMerchantId' } } }] }
ID-ul comerciantului Google
Un ID de comerciant Google era o proprietate de nivel superior în versiunea 1 a API-ului Google Pay. Acum, ID-ul de comerciant Google este plasat într-un obiect MerchantInfo cu un nume de comerciant opțional.
Versiunea api 1
{ merchantId: '12345678901234567890' }
apiVersiunea 2
{ merchantInfo: { merchantId: '12345678901234567890' } }
Adresa de facturare
O adresă de facturare opțională și un număr de telefon pentru facturare sunt asociate unei metode de plată CARD . Dacă un site solicită o adresă de facturare, orice configurație legată de răspunsul așteptat este plasată într-un obiect BillingAddressParameters .
Versiunea api 1
{ cardRequirements: { billingAddressRequired: true, billingAddressFormat: 'FULL' }, phoneNumberRequired: true }
apiVersiunea 2
{ allowedPaymentMethods: [{ type: 'CARD', parameters: { billingAddressRequired: true, billingAddressParameters: { format: 'FULL', phoneNumberRequired: true } } }] }
Adresa de transport
O cerință opțională privind adresa de livrare rămâne la nivelul superior al obiectului PaymentDataRequest . Proprietatea shippingAddressRequirements a fost redenumită shippingAddressParameters .
Răspunsurile anterioare ale API-ului Google Pay ar fi putut returna un număr de telefon ca parte a adresei de livrare atunci când se solicita un număr de telefon. Un număr de telefon pentru livrare nu mai este acceptat de API-ul Google Pay în nicio versiune. Orice gestionare a răspunsurilor care așteaptă un număr de telefon pentru livrare trebuie actualizată.
Versiunea api 1
{ shippingAddressRequired: true, shippingAddressRequirements: { allowedCountryCodes: [ 'US', 'CA' ] } }
apiVersiunea 2
{ shippingAddressRequired: true, shippingAddressParameters: { allowedCountryCodes: [ 'US', 'CA' ] } }
Răspuns PaymentData
Răspunsul obiectului PaymentData pentru site-urile care setează o valoare a proprietății apiVersion de 2 în PaymentDataRequest s-a modificat pentru a face referire la carduri ca unul dintre multiplele răspunsuri posibile privind datele de plată. Proprietățile apiVersion și apiVersionMinor incluse în obiectul PaymentDataRequest apar în răspunsul PaymentData pentru a indica formatul așteptat.
Versiunea api 1
{ // no version specified }
apiVersiunea 2
{ apiVersion: 2, apiVersionMinor: 0 }
Informațiile despre o metodă de plată selectată și tokenizarea acesteia sunt plasate în proprietatea paymentMethodData . Două proprietăți au fost eliminate din obiectul cardInfo al metodei de plată cu cardul: cardClass și cardImageUri .
Versiunea api 1
{ cardInfo: { cardDescription: 'Visa •••• 1234', cardNetwork: 'VISA', cardDetails: 1234 }, paymentMethodToken: { tokenizationType: 'PAYMENT_GATEWAY', token: 'examplePaymentMethodToken' } }
apiVersiunea 2
{ paymentMethodData: { type: 'CARD', description: 'Visa •••• 1234', info: { cardNetwork: 'VISA', cardDetails: '1234' }, tokenizationData: { type: 'PAYMENT_GATEWAY', token: 'examplePaymentMethodToken' } } }
Răspuns la mesaj criptat
Site-urile care specifică un tip de tokenizare pentru metoda de plată DIRECT și acceptă o metodă de plată API versiunea 1 de tip TOKENIZED_CARD trebuie să actualizeze modul în care gestionează proprietatea encryptedMessage decriptată. Site-ul trebuie să facă acest lucru pentru a continua să redirecționeze token-urile dispozitivelor Android autentificate cu o criptogramă 3-D Secure și un indicator opțional de comerț electronic (ECI) către gateway-ul sau procesatorul dvs. Cardurile sunt o paymentMethod ) a CARD , cu informații suplimentare despre metoda de autentificare a cardului selectat în paymentMethodDetails.authMethod .
Versiunea api 1
{ "paymentMethod": "TOKENIZED_CARD", "paymentMethodDetails": { "authMethod": "3DS", "dpan": "1111222233334444", "expirationMonth": 10, "expirationYear": 2020, "3dsCryptogram": "AAAAAA...", "3dsEciIndicator": "eci indicator" } }
apiVersiunea 2
{ "paymentMethod": "CARD", "paymentMethodDetails": { "authMethod": "CRYPTOGRAM_3DS", "pan": "1111222233334444", "expirationMonth": 10, "expirationYear": 2020, "cryptogram": "AAAAAA...", "eciIndicator": "eci indicator" } }