- Ghid de integrare
- Caracteristici acceptate (Metode de plată)
- Plăți dispozitive
- Plățile Google Pay
Google Pay
Google Pay™ este un serviciu de plăți mobile și portofel digital creat de Google, care oferă plătitorilor o experiență fluidizată a validării online, în aplicațiile Android și pe site-urile mobile, folosind metodele de plată salvate într-un cont Google sau pe un dispozitiv Android. Google Pay este o metodă de plată prin dispozitiv acceptată în Mastercard Gateway.
Această pagină descrie modul de procesare specific plăților Google Pay prin dispozitiv. Este recomandat să citiți ghidul de integrare pentru plățile prin dispozitiv înainte de a crea o integrare Google Pay.
Mastercard Gateway oferă Google Pay începând de la API v47.
Cerințe preliminare
Pentru a accepta plățile Google Pay:
- Trebuie să vă înscrieți la Google și să vă creați ID-ul de comerciant (necesar pentru Direct Payment).
- Profilul dvs. de comerciant de pe gateway trebuie să aibă opțiunea „Plăți dispozitiv” activată de către your payment service provider.
- Dacă doriți ca gateway-ul să efectueze decriptarea simbolurilor plăților, profilul dvs. de comerciant de pe gateway trebuie să aibă dreptul „Activați decriptarea plăților pe dispozitiv Google Pay” (obligatoriu pentru integrări Hosted Checkout, opțional pentru Direct Payment).
- Dacă utilizați un domeniu cu etichetă albă, contactați furnizorul de servicii de plată pentru a vă asigura că este activat pentru Google Pay.
Integrare Google Pay
Integrarea Hosted Checkout vă permite să colectați detalii de plată de la plătitorii dvs. prin intermediul unei interacțiuni găzduite și afișate de gateway.
Începând cu versiunea API 72, Google Pay este automat disponibil ca metodă de plată odată ce your payment service provider activează și configurează această metodă de plată pentru dvs.
Integrarea Direct Payment vă permite să oferiți metoda de plată Google Pay pe propria dvs. pagină de validare.
Adăugarea compatibilității cu Google Pay în integrarea dvs.
Puteți integra Google Pay în aplicația dvs. mobilă sau pe pagina de validare a site-ului dvs. web folosind Direct Payment.
- La confirmarea plății, furnizați următorii parametri în obiectul
tokenizationSpecification
din API-ul Google Pay:
- tipul de creare de simboluri (
type
): Setați acest câmp laPAYMENT_GATEWAY
. - identificatorul gateway-ului (
gateway
): Setați acest câmp lampgs
. - identificatorul comerciantului pe gateway (
gatewayMerchantId
): Un identificator unic al comerciantului, pe care gateway-ul îl poate utiliza pentru verificarea și identificarea comerciantului la decriptarea simbolului plății. Acest identificator al comerciantului trebuie să fie identic cu valoareamerchantId
trimisă în solicitarea API de pe gateway.
La finalizarea interacțiunii plătitorului cu interfața cu utilizatorul Google Pay, veți primi un set de date care conține un simbol de plată criptat și semnat de Google. Simbolul plății va fi emis indiferent dacă plata este efectuată cu dispozitivul sau cu cardul.
Puteți specifica dacă doriți ca API-ul Google Pay să returneze FPAN sau DPAN. Acest lucru poate fi util dacă achizitorul nu acceptă plățile cu dispozitivul, caz în care puteți limita acceptarea codurilor FPAN setândallowedAuthMethods
laPAN_ONLY
în obiectulallowedPaymentMethods
din API-ul Google Pay. - tipul de creare de simboluri (
- (Opțional) Autentificarea plătitorului: Completați următoarele câmpuri în solicitarea 3DS
Check Enrollment
.
order.walletProvider
=GOOGLE_PAY
sourceOfFunds.provided.card.devicePayment.paymentToken
: Simbolul criptat al plății obținut din SDK-ul Google Pay.
Gateway-ul va decripta simbolul plății și, dacă acesta conține un FPAN, solicitarea 3DS
Check Enrollment
va continua. Dacă simbolul plății conține un DPAN, solicitarea va fi respinsă (autentificarea 3DS nu este acceptată pentru DPAN). Pentru mai multe informații privind integrarea în gateway prin 3DS, consultați Autentificarea 3-D Secure.Mastercard Gateway oferă autentificarea 3DS a plătitorilor în Google Pay începând de la API v53. - Completați următoarele câmpuri într-un
Authorize
/Pay
sau o solicitareUpdate Session
:
order.walletProvider
=GOOGLE_PAY
order.amount
: Valoarea furnizată trebuie să fie valoarea finală a comenzii (inclusiv expedierea și alte sume suplimentare).order.currency
sourceOfFunds.provided.card.devicePayment.paymentToken
: Simbolul criptat al plății obținut din SDK-ul Google Pay.
sourceOfFunds.provided.card.devicePayment.paymentToken [REST][NVP]
- Gateway-ul va verifica semnătura simbolului plății pentru a se asigura că acesta a fost semnat de Google. După verificare, gateway-ul decriptează simbolul plății pentru dvs., validează identificatorul de pe gateway, identificatorul de pe gateway al comerciantului din simbolul plății și procesează tranzacția folosind datele decriptate.
În plus față de câmpurile standard, vor fi returnate următoarele câmpuri de răspuns pentru efectuarea cu succes a autorizării cu ajutorul simbolului plății.
Dacă setul de date a inclus un DPAN (pentru plățile cu dispozitivul):
sourceOfFunds.provided.card.encryption
=DEVICE
sourceOfFunds.provided.card.deviceSpecificNumber
: DPAN în format ascuns.sourceOfFunds.provided.card.deviceSpecificExpiry.month
sourceOfFunds.provided.card.deviceSpecificExpiry.year
sourceOfFunds.provided.card.number
: FPAN în format ascuns.sourceOfFunds.provided.card.expiry.month
sourceOfFunds.provided.card.expiry.year
sourceOfFunds.provided.card.devicePayment.cryptogramFormat
Dacă setul de date a inclus un FPAN (pentru plățile cu portofelul digital Google Pay):
sourceOfFunds.provided.card.encryption
=DIGITAL_WALLET
sourceOfFunds.provided.card.number
: FPAN în format ascuns.sourceOfFunds.provided.card.expiry.month
sourceOfFunds.provided.card.expiry.year
Dacă doriți să vă asumați responsabilitatea decriptării simbolurilor plăților pe serverul dvs., consultați Decriptarea simbolurilor plăților.
Iată un exemplu de solicitare de autorizare în REST în care simbolul plății este decriptat de către gateway.
URL | 'https://na.gateway.mastercard.com/api/rest/version/71/merchant/MADA_DMS_AU/order/810663616/transaction/911988788' |
Metoda HTTP | PUT |
Antet | 'Authorization: Basic bWVyY2hhbnQuTUFEQV9ETVNfQVU6M2RjYTQ2YTU1ODYwNDlmMjhhM2FmZGJmZDEwMGNmNWQ=' |
'{ "apiOperation": "AUTHORIZE", "order": { "amount": "30.10", "currency": "USD", "walletProvider": "GOOGLE_PAY" }, "sourceOfFunds": { "provided": { "card": { "devicePayment": { "paymentToken"{\n \"protocolVersion\" : \"ECv1\",\n \"signature\" : \"MEYCIQCiSE4dCSwpXwJLo1lKYOZNmFyL...\",\n \"signedMessage\" : \"{\\\"encryptedMessage\\\":\\\"gTVbbw8Nsv4kTulngmSVsZijvS5x7sAM9UZiqyaKfjkqxxJ1pkqRvhWBFc4FnEiMm2rjUPlX55e0dUqI00iQwAfePuhrna...\\\",\\\"ephemeralPublicKey\\\":\\\"BKoBQYjYIEYgw9nzA+0Q06FD77ZhrOXQh9yNUX0LasjL2W9eMvWZ0pCGGRzPKZLCtk...\\\",\\\"tag\\\":\\\"fnZGEbpCkXzKU3xhS5u1E3c6OoB6RzkHbhHx58...\\\"}\"\n}" //This is only a sample token and will not pass validation. You should substitute this with an actual payment token returned from Google Pay. //The gateway considers this value to be a string, NOT JSON itself. The parenthesis are a part of the string. } } }, "type": "CARD" }, "device": { "ani": "12341234" }, "transaction": { "source": "INTERNET" } }'
{ "authorizationResponse": { "commercialCard": "123", "commercialCardIndicator": "1", "date": "0314", "financialNetworkCode": "MCC", "posData": "1025104006600", "posEntryMode": "812", "processingCode": "003000", "responseCode": "00", "stan": "45467", "time": "105002", "transactionIdentifier": "906660122", "transactionIntegrityClass": "A1" }, "device": { "ani": "12341234" }, "gatewayEntryPoint": "WEB_SERVICES_API", "merchant": "MADA_DMS_AU", "order": { "amount": 30.10, "authenticationStatus": "AUTHENTICATION_NOT_IN_EFFECT", "certainty": "FINAL", "chargeback": { "amount": 0, "currency": "USD" }, "creationTime": "2023-03-14T10:50:01.524Z", "currency": "USD", "id": "810663616", "lastUpdatedTime": "2023-03-14T10:50:02.092Z", "merchantAmount": 30.10, "merchantCategoryCode": "1234", "merchantCurrency": "USD", "status": "AUTHORIZED", "totalAuthorizedAmount": 30.10, "totalCapturedAmount": 0.00, "totalDisbursedAmount": 0.00, "totalRefundedAmount": 0.00, "walletProvider": "GOOGLE_PAY" }, "response": { "acquirerCode": "00", "acquirerMessage": "Approved", "gatewayCode": "APPROVED", "gatewayRecommendation": "NO_ACTION" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "devicePayment": { "cryptogramFormat": "3DSECURE" }, "deviceSpecificExpiry": { "month": "1", "year": "39" }, "deviceSpecificNumber": "512345xxxxxx0008", "fundingMethod": "UNKNOWN", "number": "xxxxxxxxxxxxxxxx", "scheme": "MASTERCARD", "storedOnFile": "NOT_STORED" } }, "type": "CARD" }, "timeOfLastUpdate": "2023-03-14T10:50:02.092Z", "timeOfRecord": "2023-03-14T10:50:01.625Z", "transaction": { "acquirer": { "batch": 20230314, "date": "0314", "id": "SYSTEST_ACQ_S2I", "merchantId": "12345678", "transactionId": "906660122" }, "amount": 30.10, "authenticationStatus": "AUTHENTICATION_NOT_IN_EFFECT", "authorizationCode": "112233", "currency": "USD", "id": "911988788", "receipt": "307310045467", "source": "INTERNET", "stan": "45467", "terminal": "1111", "type": "AUTHORIZATION" }, "version": "71" }
Decriptarea simbolului plății
Puteți alege să decriptați simbolul plății pe serverul dvs. în loc să furnizați gateway-ului simbolul plății pentru decriptare. În acest caz, va fi necesar să vă asumați responsabilitatea stocării acreditărilor de criptare și a executării decriptării.
- La confirmarea plății, trimiteți simbolul criptat al plății returnat de Google Pay către serverul dvs.
- Decriptați simbolul plății pe serverul dvs. folosindu-vă cheia privată. Consultați etapele de decriptare aici.
- Introduceți cheile datelor plății din simbolul decriptat în câmpurile corespunzătoare ale tranzacției din solicitarea Authorize/Pay sau solicitarea Update Session.
- Dacă simbolul decriptat al plății conține un DPAN, completați următoarele câmpuri:
Nu încercați autentificarea 3DS a plătitorului dacă simbolul plății conține un DPAN. Gateway-ul va respinge solicitarea, deoarece DPAN nu sunt acceptate pentru autentificarea 3DS.Cheie JSON Google PayCâmp corespunzător solicitare APIDescrierepan sourceOfFunds.provided.card.number Numărul de cont principal specific dispozitivului (DPAN) pentru cardul care finanțează tranzacția. expirationMonth sourceOfFunds.provided.card.expiry.month Luna de expirare a pan. expirationYear sourceOfFunds.provided.card.expiry.year Anul de expirare a pan. authMethod sourceOfFunds.provided.card.
devicePayment.cryptogramFormatFormatul criptogramei. Setați acest câmp la 3DSECURE. cryptogram sourceOfFunds.provided.card.devicePayment.
onlinePaymentCryptogramCriptogramă în format 3-D Secure. eciIndicator sourceOfFunds.provided.card.devicePayment.
eciIndicatorFurnizați indicatorul de comerț electronic (ECI), dacă este disponibil. sourceOfFunds.provided.card.nameOnCard (Opțional) Numele posesorului cardului. order.currency Codul ISO 4217 al monedei utilizate pentru tranzacție. order.amount Valoarea comenzii. - Dacă simbolul decriptat al plății conține un FPAN, puteți alege să autentificați plătitorul înainte de efectuarea tranzacției. Pentru a autentifica plătitorul, trebuie să completați următoarele câmpuri în solicitarea 3DS
Check Enrollment
.
order.walletProvider
=GOOGLE_PAY
sourceOfFunds.provided.card.number
: Consultați tabelul de mai jos.
Pentru mai multe informații privind integrarea în gateway prin 3DS, consultați Autentificarea 3-D Secure.
Cheie JSON Google PayCâmp corespunzător solicitare APIDescrierepan sourceOfFunds.provided.card.number Numărul (FPAN) al cardului care a finanțat tranzacția. Setul de date conține un FPAN atunci când plătitorul alege să plătească cu un card salvat în contul său Google Pay.
Rețineți că, în cazul plăților cu cardul, capturarea CSC nu este acceptată în prezent de API-ul Google Pay.expirationMonth sourceOfFunds.provided.card.expiry.month Luna de expirare a pan. expirationYear sourceOfFunds.provided.card.expiry.year Anul de expirare a pan. sourceOfFunds.provided.card.nameOnCard (Opțional) Numele posesorului cardului. order.currency Codul ISO 4217 al monedei utilizate pentru tranzacție. order.amount Valoarea comenzii.
- Dacă simbolul decriptat al plății conține un DPAN, completați următoarele câmpuri:
- În plus față de câmpurile de mai sus, includeți următoarele în solicitarea Authorize/Pay sau solicitarea Update Session și trimiteți-o către gateway.
- transaction.source=INTERNET
- order.walletProvider=GOOGLE_PAY
- device.mobilePhoneModel: (opțional) Identificatorul dispozitivului mobil utilizat pentru inițierea plății.
- posTerminal.location: Puteți specifica
PAYER_TERMINAL_OFF_PREMISES
sauPAYER_TERMINAL_ON_PREMISES
. Dacă nu furnizați o valoare, se va utiliza valoareaPAYER_TERMINAL_OFF_PREMISES
.
Iată un exemplu de solicitare Authorization din REST în care valorile din simbolul decriptat al plății sunt trimise către gateway.
{ "apiOperation": "AUTHORIZE", "order": { "amount": "30.10", "currency": "INR", "walletProvider": "GOOGLE_PAY" }, "sourceOfFunds": { "provided": { "card": { "expiry": { "month": "01", "year": "39" }, "number": "5123450000000008", "devicePayment": { "cryptogramFormat": "3DSECURE", : { "onlinePaymentCryptogram": "IA/8pdiWftSsxpFT6wABoDABhgA=", "eciIndicator": "20" } } } }, "type": "CARD" }, "device": { "ani": "12341234" }, "transaction": { "source": "INTERNET" } }
{ "authorizationResponse": { "commercialCard": "123", "commercialCardIndicator": "1", "date": "0330", "financialNetworkCode": "MCC", "posData": "1025104006600", "posEntryMode": "812", "processingCode": "003000", "responseCode": "00", "stan": "290026", "time": "220509", "transactionIdentifier": "865442937", "transactionIntegrityClass": "A1" }, "device": { "ani": "12341234" }, "gatewayEntryPoint": "WEB_SERVICES_API", "merchant": "LOVECRAFTS2I", "order": { "amount": 30.10, "authenticationStatus": "AUTHENTICATION_NOT_IN_EFFECT", "certainty": "ESTIMATED", "chargeback": { "amount": 0, "currency": "INR" }, "creationTime": "2022-03-30T22:05:09.395Z", "currency": "INR", "id": "09765d59-cdd8-432c-96c9-d6ae91588251", "lastUpdatedTime": "2022-03-30T22:05:09.857Z", "merchantAmount": 30.10, "merchantCategoryCode": "1234", "merchantCurrency": "INR", "status": "AUTHORIZED", "totalAuthorizedAmount": 30.10, "totalCapturedAmount": 0.00, "totalDisbursedAmount": 0.00, "totalRefundedAmount": 0.00, "walletProvider": "GOOGLE_PAY" }, "response": { "acquirerCode": "00", "acquirerMessage": "Approved", "gatewayCode": "APPROVED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "devicePayment": { "cryptogramFormat": "3DSECURE" }, "deviceSpecificExpiry": { "month": "1", "year": "39" }, "deviceSpecificNumber": "512345xxxxxx0008", "fundingMethod": "UNKNOWN", "number": "xxxxxxxxxxxxxxxx", "scheme": "MASTERCARD", "storedOnFile": "NOT_STORED" } }, "type": "CARD" }, "timeOfLastUpdate": "2022-03-30T22:05:09.857Z", "timeOfRecord": "2022-03-30T22:05:09.410Z", "transaction": { "acquirer": { "batch": 20220330, "date": "0330", "id": "SYSTEST_ACQ_S2I", "merchantId": "123463", "transactionId": "865442937" }, "amount": 30.10, "authenticationStatus": "AUTHENTICATION_NOT_IN_EFFECT", "authorizationCode": "112233", "currency": "INR", "id": "1", "receipt": "208922290026", "source": "INTERNET", "stan": "290026", "terminal": "CBAS2I02", "type": "AUTHORIZATION" }, "version": "71" }
Testarea integrării Google Pay
Dacă dvs. decriptați simbolul plății, este necesar ca integrarea dvs. să fie aprobată de Google. Urmați instrucțiunile furnizate de Google aici: Android/Web.
Înainte de a vă trimite integrarea către Google în vederea aprobării, trebuie, însă, să efectuați câteva tranzacții de testare. Puteți testa integrarea pe gateway în modul de lucru, folosindu-vă profilul de testare comerciant și un DPAN sau FPAN acceptat. Pentru mai multe informații, consultați Testarea cu exemple de simboluri.
Dacă testați o plată cu dispozitivul (card salvat pe dispozitivul dvs. Android), utilizați un DPAN acceptat din tabelul următor.
Schemă |
DPAN |
Dată de expirare |
---|---|---|
Visa | 4895370012003478 | 12/2027 |
American Express | 370295136149943 | 12/2027 |
Dacă testați o plată cu cardul (card salvat în contul dvs. Google Play), utilizați un FPAN acceptat din tabelul următor.
Schemă |
FPAN |
Dată de expirare |
---|---|---|
Visa | 4111111111111111 | 12/2027 |
Odată ce integrarea dvs. este aprobată de Google, trebuie să efectuați testarea de verificare finală în modul de lucru înainte de activare.
Dacă gateway-ul decriptează simbolul plății, aplicația dvs. trebuie să specifice gateway-ul ("mpgs") ca your payment service provider. Această informație este necesară pentru a permite criptarea simbolului plății, generat de Google, cu ajutorul cheii publice a gateway-ului.
Pentru a efectua tranzacții de testare, trebuie să vă utilizați ID-ul de comerciant de lucru în modul de lucru — ID-ul de testare comerciant de pe gateway nu poate decripta simbolurile de plată.
Dacă tranzacțiile au starea APPROVED sau DECLINED, gateway-ul a putut procesa cu succes tranzacțiile dvs. de testare.
Google Pay prin Mobile SDK
Mobile SDK facilitează dezvoltarea aplicațiilor mobile care acceptă plățile digitale prin Mastercard Gateway. Gateway-ul acceptă Google Pay prin Mobile SDK. Faceți clic aici pentru ghidul de integrare Mobile SDK aplicabil platformei Android.