Google Pay
Wstęp
Google Pay™ to portfel cyfrowy, który upraszcza płatności kartą, umożliwiając szybkie i bezproblemowe transakcje bez konieczności wielokrotnego wprowadzania danych karty. Ta opcja jest kompatybilna ze wszystkimi urządzeniami (telefonami komórkowymi i komputerami), niezależnie od systemu operacyjnego i przeglądarki internetowej.
W Przypadku gdy Akceptant korzysta z usługi Google Pay zobowiązuje się do stosowania postanowień regulaminu usługi.
Poniższy opis dotyczy udostępnienia tej usługi poprzez wyświetlenie lightboxa Google Pay bezpośrednio na stronie odbiorcy płatności (sklepu internetowego) lub w aplikacji mobilnej.
W celu skorzystania z tej metody płatności poprzez jej wybór na stronie płatniczej PayU, nie jest konieczna żadna dodatkowa integracja.
Integracja web Google Pay
Aby zintegrować stronę internetową z płatnością Google Pay, postępuj zgodnie z instrukcjami na stronach:
- Dokumentacja API: https://developers.google.com/pay/api/web
- Zalecenia i wytyczne Google: https://developers.google.com/pay/api/web/guides/brand-guidelines
Parametr gateway
powinien w skrypcie przyjąć stałą wartość payu, zgodnie z poniższym przykładem:
const tokenizationSpecification = {
type: 'PAYMENT_GATEWAY',
parameters: {
gateway: 'payu',
gatewayMerchantId: '[Point of Service Id (pos_id)]',
},
}
Wartością parametru gatewayMerchantId
powinien być natomiast identyfikator punktu płatności, na którym zostanie złożone zamówienie.
Zwróć uwagę, że PayU jako procesor płatności Google Pay umożliwia obsługę wszystkich typów kart płatniczych organizacji Visa i MasterCard (w tym Maestro). To implikuje następującą konfigurację skryptu Google:
const allowedCardNetworks = ['MASTERCARD', 'VISA']
const allowedCardAuthMethods = ['PAN_ONLY', 'CRYPTOGRAM_3DS']
W odpowiedzi Google zwróci obiekt PaymentData
, w polu paymentMethodData.tokenizationData.token
przesyłając bezpiecznie zaszyfrowany Token Google Pay (ciąg znaków).
{
"signature": "MEUCIQDY3wBQyHB4sZcktRoJXKxm+OLcjHzCvdDeGn23oX0kkwIgKznRFZZL+sDMv1b5cuD+YurXMZraYBsr9hbravVY5Ro\u003d",
"protocolVersion": "ECv1",
"signedMessage": "{\"encryptedMessage\":\"cI87tLqzqTGyCFnMMCVWcTHw3xhYIK+CEnuQ74K+nlLpCgOlfpScib9jds4sxDtN6CunCqCSMfd/3yHeeRy6aCx1yyqcT4ey6NueeBznprJpkmVVgI1JHWLQt4hzAXMUAcYASYLOabKP9fUZvHkOBDytD531jpzNXa+Spc/zrpGzFKx2C4VU9sC95q9i+ey+kr7ZMNVCOFJPWXu7lKZ105IOOqozJ6/70MKmxP3jM89eeq+/19QnyHjQLXfnQPvQjiUJKGCcRKDLlrb3XoY5ZUUzGfN5eZCLzCVg0hWEbwU+6J7KWYJyW+Wr1r8bagN9zWsrMKhDpsQbHfyzb+yBzFUoxeUgL4a7FeVvEllIcHtqsvTCf6FENV20aF5VLDv5qzUkV+PzTAIbFEuabA0God9UbVCVVv7nM8QFzvRPhzYYFVFTn4JHvL2qZ4pAR9lE+w\\u003d\\u003d\",\"ephemeralPublicKey\":\"BPHLC4sBHpenY1M0ixmiDMuWJTaTJOqggRUwtgBJMcBp28VsxHD7zPI7985x4F5EjMP5y8j/cuUzbe/cGPjOKGk\\u003d\",\"tag\":\"RaXrPOUuc5iw3oxDa0C2MOjaKxgxIRQvwOspmtFV0zU\\u003d\"}"
}
Integracja Google Pay na Android
W przypadku aplikacji mobilnych zalecana jest natywna integracja Google Pay ponieważ Google Pay nie wspiera trybu WebView.
Aby zintegrować aplikację mobilną z płatnością Google Pay, postępuj zgodnie z instrukcjami na stronach:
- Dokumentacja API: https://developers.google.com/pay/api/android
- Zalecenia i wytyczne Google: https://developers.google.com/pay/api/android/guides/brand-guidelines
Aby integracja była łatwiejsza, wykorzystaj dokumentację techniczną SDK PayU | Mobile.
Tworzenie zamówienia Google Pay
Aby obciążyć kartę płatniczą zapisaną w Google Pay, należy w żądaniu zamówienia umieścić rozszerzony obiekt payMethods
.
Obiekt payMethods.payMethod
musi zawierać pole authorizationCode
, którego wartość odpowiada parametrowi Token GooglePay zakodowany funkcją Base64. Natomiast pole payMethod.value
powinno mieć wartość ap, a payMethod.type
wartość PBL.
"payMethods": {
"payMethod": {
"value": "ap",
"type": "PBL",
"authorizationCode": "eyJzaWduYXR1cmUiOiJNRVVDSVFEWTN3QlF5SEI0c1pja3RSb0pYS3htK09MY2pIekN2ZERlR24yM29YMGtrd0lnS3puUkZaWkwrc0RNdjFiNWN1RCtZdXJYTVpyYVlCc3I5aGJyYXZWWTVSb1x1MDAzZCIsInByb3RvY29sVmVyc2lvbiI6IkVDdjEiLCJzaWduZWRNZXNzYWdlIjoie1wiZW5jcnlwdGVkTWVzc2FnZVwiOlwiY0k4N3RMcXpxVEd5Q0ZuTU1DVldjVEh3M3hoWUlLK0NFbnVRNzRLK25sTHBDZ09sZnBTY2liOWpkczRzeER0TjZDdW5DcUNTTWZkLzN5SGVlUnk2YUN4MXl5cWNUNGV5Nk51ZWVCem5wckpwa21WVmdJMUpIV0xRdDRoekFYTVVBY1lBU1lMT2FiS1A5ZlVadkhrT0JEeXRENTMxanB6TlhhK1NwYy96cnBHekZLeDJDNFZVOXNDOTVxOWkrZXkra3I3Wk1OVkNPRkpQV1h1N2xLWjEwNUlPT3Fveko2LzcwTUtteFAzak04OWVlcSsvMTlRbnlIalFMWGZuUVB2UWppVUpLR0NjUktETGxyYjNYb1k1WlVVekdmTjVlWkNMekNWZzBoV0Vid1UrNko3S1dZSnlXK1dyMXI4YmFnTjl6V3NyTUtoRHBzUWJIZnl6Yit5QnpGVW94ZVVnTDRhN0ZlVnZFbGxJY0h0cXN2VENmNkZFTlYyMGFGNVZMRHY1cXpVa1YrUHpUQUliRkV1YWJBMEdvZDlVYlZDVlZ2N25NOFFGenZSUGh6WVlGVkZUbjRKSHZMMnFaNHBBUjlsRSt3XFx1MDAzZFxcdTAwM2RcIixcImVwaGVtZXJhbFB1YmxpY0tleVwiOlwiQlBITEM0c0JIcGVuWTFNMGl4bWlETXVXSlRhVEpPcWdnUlV3dGdCSk1jQnAyOFZzeEhEN3pQSTc5ODV4NEY1RWpNUDV5OGovY3VVemJlL2NHUGpPS0drXFx1MDAzZFwiLFwidGFnXCI6XCJSYVhyUE9VdWM1aXczb3hEYTBDMk1PamFLeGd4SVJRdndPc3BtdEZWMHpVXFx1MDAzZFwifSJ9"
}
}
Dalsze przetwarzanie żądania podlega standardowemu procesowi opisanemu w sekcji Tworzenie nowego zamówienia.
Zwróć uwagę, że może być konieczne obsłużenie przekierowania na stronę weryfikacji 3D Secure.
Ponieważ zamówienia z metodą płatności Google Pay będą rozliczane tak, jak standardowe płatności kartą, warto rozważyć integrację usługi pobieranaia danych transakcji. W ten sposób odróżnisz karty wpisane przez formularz PayU od kart pobranych z Google Pay.
Błędy zwracane w usłudze Google Pay
Lista standardowych błędów zwracanych przez lightbox Google Pay znajduje się na stronie Google Developers.
Kod statusu | CodeLiteral | Kod | Opis |
---|---|---|---|
ERROR_VALUE_INVALID | GOOGLE_PAY_CLIENT_ERROR | 8322 | Błąd walidacji. Token Google Pay został utworzony dla innego punktu płatności. ID punktów płatności użytych w zamówieniu oraz w polu gatewayMerchantId muszą być zgodne. |
- "Nieoczekiwany błąd po stronie programisty - spróbuj ponownie później" - zwracany np. w przypadku podania environment:
PRODUCTION
dla POS ze środowiska Sandbox.
Testowanie
Metoda płatności Google Pay jest dostępna również w środowisku Sandbox – w procesie integracji należy jawnie wskazać środowisko testowe:
var paymentsClient = new google.payments.api.PaymentsClient({
environment: 'TEST',
})