API REFERENCE
Google Pay ™
Für Zahlungsabläufe mit Google Pay
Google Pay funktioniert in Webbrowsern und Apps auf gängigen Desktop- und Mobilgeräten. YabandPay unterstützt über Google Pay Debit- und Kreditkarten der folgenden Kartennetzwerke:
-
Visa / VPay
-
Mastercard / Maestro
-
UnionPay
Das Abrechnungskonto muss sich im Europäischen Wirtschaftsraum (EWR) oder im Vereinigten Königreich befinden.
Tipp
Alle Händler, die Google Pay verwenden, müssen die folgenden Bedingungen einhalten:
- Google Pay APIs Acceptable Use Policy
- Google Pay API Terms of Service
Durch die Integration von Google Pay über die gehostete Lösung von YabandPay erklären sich Händler mit den oben genannten Bedingungen einverstanden und verpflichten sich, diese einzuhalten.
1. Credential types and 3DS requirements
Google Pay unterstützt die folgenden zwei Arten von Zahlungsdaten:
-
PAN_ONLY: Gibt eine verschlüsselte Hülle mit der lesbaren primären Kontonummer (cardInfo.cardDetails) und dem Kartennetzwerk (cardInfo.cardNetwork) zurück, jedoch ohne Kryptogramm.
-
CRYPTOGRAM_3DS: Gibt tokenbasierte, verschlüsselte Zahlungsdaten mit einem Netzwerk-Token (DPAN) und einem Kryptogramm für Transaktionen zurück, die ein höheres Sicherheitsniveau erfordern.
3DS requirements:
Wenn Sie PAN_ONLY Zahlungsdaten über die Google-Pay-API erhalten, müssen Sie eine 3D-Secure-Prüfung durchführen (setzen Sie 3ds_initiate=01). YabandPay lehnt Transaktionen ohne 3DS-Prüfung ab.
Beachten Sie aus Gründen der Kompatibilität und Sicherheit diese Integrationsempfehlungen:
-
Aktivieren Sie beide ["CRYPTOGRAM_3DS", "PAN_ONLY"] in Ihrer Google-Pay-Frontend-Konfiguration.
-
Setzen Sie immer 3ds_initiate=01 wenn Sie eine Zahlungsanfrage an YabandPay senden.
-
Das Backend von YabandPay entscheidet anhand der Art der Zahlungsdaten, ob eine 3D-Secure-Prüfung erforderlich ist.
2. App or web integration (self-hosted)
Händler können die Google-API integrieren, um den Zahlungsvorgang auf ihrer eigenen Website oder in ihrer App zu starten. Ablauf und Konfiguration werden im Folgenden beschrieben:
Payment flow:
Google Pay verwendet Zahlungsdaten einer mit dem Gerät verknüpften Karte (DPAN, Netzwerk-Token) anstelle der tatsächlichen Kartennummer (PAN). Der Zahlungsvorgang läuft folgendermaßen ab:
-
Der Kunde wählt auf der Website oder in der App des Händlers die Google-Pay-Schaltfläche aus.
-
Der Kunde autorisiert die Zahlung mit Face ID, Touch ID oder einem Passwort.
-
Google gibt ein verschlüsseltes Token zurück.
-
Der Händler übermittelt das Token zur Verarbeitung an YabandPay.
Hinweis: Im selbst gehosteten Modus müssen Händler in der Google Pay & Wallet Console ein eigenes Google-Pay-Händlerkonto registrieren und eine Händler-ID beantragen. Diese Händler-ID wird mit dem Zahlungskanal von YabandPay verknüpft.
API configuration example:
"tokenizationSpecification": {
"type": "PAYMENT_GATEWAY",
"parameters": {
"gateway": "yabandpay",
"gatewayMerchantId": "<Merchant ID assigned by YabandPay>"
}
}
-
Base64-encode the received token and submit it to the YabandPay payment API in payment_token_object.
-
gateway: a fixed value that must be "yabandpay".
-
Disabling address verification is recommended, as configured below:
billingAddressRequired: false
3. Hosted integration
YabandPay provides a hosted Google Pay solution. Merchants do not need to integrate a Google Pay button or SDK. Submit an order through the standard API and direct the customer to YabandPay’s hosted page at https://pay.yabandpay.com to complete the Google Pay payment.
In hosted mode, Google Pay runs on YabandPay’s page, so merchants do not need to configure CSP, load Google scripts, or set an SDK version.
Integration flow:
-
The merchant submits an order using YabandPay’s Gehostete Zahlungslösung (HPP). YabandPay returns pay_url.
-
The customer is redirected to the hosted page at pay_url.
-
The customer completes Google Pay payment on that page.
-
After payment, the customer is redirected to the configured redirect_url, and an asynchronous notification is sent to notify_url.
Notes:
-
Merchants do not need to load Google Pay JavaScript or construct Google Pay requests themselves.
-
YabandPay handles all backend decryption and transaction verification for Google Pay.
-
Merchants must enable Google Pay in the YabandPay merchant portal.
-
The hosted payment page automatically displays the merchant name, order amount, and other information so the customer can identify the payment.
-
All transactions are processed using YabandPay’s shared Google Merchant ID.
4. Authorization methods
YabandPay supports the following Google Pay Autorisierung modes:
-
One-time transaction Autorisierungs (DPAN + cryptogram) are supported.
-
Card-on-File (COF) is not supported.
-
FIDO biometric authentication is not supported.
5. Data submission requirements
-
Submit the encrypted payment_token_object to YabandPay through HTTPS POST.
-
All data is encrypted in transit using TLS 1.2 or later.
-
YabandPay uses PCI DSS-compliant HSMs for backend decryption.
6. Official Google integration references
General resources:
-
Registration and documentation: https://developers.google.com/
-
JS button example: https://jsfiddle.net/fw5t6caL/
App integration guides:
-
Eindroid integration overview: https://developers.google.com/pay/api/android/overview
-
Eindroid integration checklist: https://developers.google.com/pay/api/android/guides/test-and-deploy/integration-checklist
-
Brand guidelines: https://developers.google.com/pay/api/android/guides/brand-guidelines
Web integration guides:
-
Web integration overview: https://developers.google.com/pay/api/web/overview
-
Web integration checklist: https://developers.google.com/pay/api/web/guides/test-and-deploy/integration-checklist
-
Brand guidelines: https://developers.google.com/pay/api/web/guides/brand-guidelines
| Parameter | Typ | Beschreibung | Erforderlich |
|---|---|---|---|
| user | String | Kassiererkonto UID | Erforderlich |
| sign | String | Signature | Erforderlich |
| method | String | v3.GooglePay | Erforderlich |
| time | Long | Timestamp | Erforderlich |
- Parameter
| Parameter | Typ | Beschreibung | Erforderlich |
|---|---|---|---|
| pay_method | String | online | Erforderlich |
| sub_pay_method | String | Google Pay | Erforderlich |
| operation | String | 1. Sales; 2.Authorisation | Erforderlich |
| order_id | String | Händlerbestellnummer | Erforderlich |
| amount | String | Betrag als numerische Zeichenfolge. Geben Sie beispielsweise 24.99 for € 24.99. | Erforderlich |
| currency | String | ISO 4217 Währungscode, zum Beispiel EUR oder CHF | Erforderlich |
| description | String | Bestellbeschreibung | Erforderlich |
| demo | String | Benutzerdefiniertes Feld | Optional |
| 3ds_initiate | String | 3DS configuration. 01. Enable 3DS verification. | Erforderlich |
| payment_token_object | String | Base64-encoded "token" string obtained from Google Pay | Erforderlich |
| cardinfo | String | Includes the cardholder name and email | Erforderlich |
| cardinfo.card_holder | string | Name des Karteninhabers | Erforderlich |
| cardinfo.email | string | E-Mail-Adresse des Karteninhabers | Erforderlich |
| timeout | String | Ablaufzeit in Minuten (0-1440) | Erforderlich |
| redirect_url | String | Weiterleitungs-URL nach der Zahlung | Optional |
| notify_url | String | URL für asynchrone Benachrichtigung nach der Zahlung | Erforderlich |
| request_id | String | Eindeutige Einfrage-ID; empfohlen wird eine Kombination aus Ziffern und Buchstaben mit mindestens 24 Zeichen | Erforderlich |
Obtaining payment_token_object:
Example token returned by Google Pay:
{
"signature": "MEUCIC+XtiYdlmjL2/1wEn33qnya8G4POk5jYkRNY5+MkdBlAiEAwoRYQu26ZopwpcOWlwUe/E+i4FKzpunCFZf44mS0cxQ\u003d",
"intermediateSigningKey": {
"signedKey": "{\"keyValue\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUJW8LjUtTV7esDMJLtCe8hYjlcQih8g7HP5bgO4ysma4/CwGq0CnZ5G0t0o44D92d9L3SfXS2GyK2PJMtE/NBg\\u003d\\u003d\",\"keyExpiration\":\"1724120515000\"}",
"signatures": ["MEYCIQC1ZWgFEaSR1pNbwTW6liQL7WXZQZExx1Idj7oQzHvoPQIhAOx1b+9CamfDeZUcHXpU01xTfa6EaaH3TgKaTBnrsuuG"]
},
"protocolVersion": "ECv2",
"signedMessage": "{\"encryptedMessage\":\"y+XA1ltwldTcmVSZwfVayP7b0hPNLODGyi2UgCCJcSSs0iBj73HML5eWcYBiT+T+ZP8SmV54U9E2AmuRwVeVYHai8Z/ajrxE7fM+Fv/e9IXt36WjC4SWhAHM8T/DkOlE6BcuoKAMz6iLkJJ40g0zAkUKijln5YEbhLXHRoh/5l/8wGNDxErI7JdNZ4cA9vh8go/gR2YXKxVngFH4PFHcGyKa4MKnYDATMBDdx/F+MI4vVtPLXruTPpG0HBgLlJct95LZl9T686sOWuwg4pWLLSqcbuqd+MAZZihy2FW+9cdKNXsebL91rRbq7dahtET1K90YzyWzM9CfntcjHf5YqhnssApnE+Jb7OZ+mn5hO27Z93by7G3Fgi7YxJqcW4o/4D+NIANe0BqwbFyhw5Un8rIKkXg//WD9TlFHl2oIgyOKnZLO8NrnfEffoxstvRft1enafD0DadUk2IL5+Q\\u003d\\u003d\",\"ephemeralPublicKey\":\"BFzys/8Oy4iBu0ZYlLcy5SNZUOKFQhTx/985qiMFKGssVm4Fk9hweWlemyClMbI216lbsPS4Sy15ab/75gW1v08\\u003d\",\"tag\":\"jpHUeHrZuI1y77wRisFznOadAzlP2je8RFpT9PFpmHs\\u003d\"}"
}
The payment_token_object field is the base64_encode string of the token data obtained from the Google Pay integration.
Signaturbeispiel:
Nach Parametern sortierte Werte, verkettet zu einer URL-ähnlichen Abfragezeichenfolge
"3ds_initiate=01&amount=0.1&cardinfo={"card_holder":"John Smith","email":"JohnSmith@gmail.com"}¤cy=EUR&description=test&method=v3.GooglePayment¬ify_url=https://www.yabandpay.com/notify&operation=1&order_id=1723517503&pay_method=online&payment_token_object=eyJzaWduYXR1cmUiOiJNRVVDSUMrWHRpWWRsbWpMMi8xd0VuMzNxbnlhOEc0UE9rNWpZa1JOWTUrTWtkQmxBaUVBd29SWVF1MjZab3B3cGNPV2x3VWUvRStpNEZLenB1bkNGWmY0NG1TMGN4UVx1MDAzZCIsImludGVybWVkaWF0ZVNpZ25pbmdLZXkiOnsic2lnbmVkS2V5Ijoie1wia2V5VmFsdWVcIjpcIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVVKVzhMalV0VFY3ZXNETUpMdENlOGhZamxjUWloOGc3SFA1YmdPNHlzbWE0L0N3R3EwQ25aNUcwdDBvNDREOTJkOUwzU2ZYUzJHeUsyUEpNdEUvTkJnXHUwMDNkXHUwMDNkXCIsXCJrZXlFeHBpcmF0aW9uXCI6XCIxNzI0MTIwNTE1MDAwXCJ9Iiwic2lnbmF0dXJlcyI6WyJNRVlDSVFDMVpXZ0ZFYVNSMXBOYndUVzZsaVFMN1dYWlFaRXh4MUlkajdvUXpIdm9QUUloQU94MWIrOUNhbWZEZVpVY0hYcFUwMXhUZmE2RWFhSDNUZ0thVEJucnN1dUciXX0sInByb3RvY29sVmVyc2lvbiI6IkVDdjIiLCJzaWduZWRNZXNzYWdlIjoie1wiZW5jcnlwdGVkTWVzc2FnZVwiOlwieStYQTFsdHdsZFRjbVZTWndmVmF5UDdiMGhQTkxPREd5aTJVZ0NDSmNTU3MwaUJqNzNITUw1ZVdjWUJpVCtUK1pQOFNtVjU0VTlFMkFtdVJ3VmVWWUhhaThaL2FqcnhFN2ZNK0Z2L2U5SVh0MzZXakM0U1doQUhNOFQvRGtPbEU2QmN1b0tBTXo2aUxrSko0MGcwekFrVUtpamxuNVlFYmhMWEhSb2gvNWwvOHdHTkR4RXJJN0pkTlo0Y0E5dmg4Z28vZ1IyWVhLeFZuZ0ZINFBGSGNHeUthNE1LbllEQVRNQkRkeC9GK01JNHZWdFBMWHJ1VFBwRzBIQmdMbEpjdDk1TFpsOVQ2ODZzT1d1d2c0cFdMTFNxY2J1cWQrTUFaWmloeTJGVys5Y2RLTlhzZWJMOTFyUmJxN2RhaHRFVDFLOTBZenlXek05Q2ZudGNqSGY1WXFobnNzQXBuRStKYjdPWittbjVoTzI3WjkzYnk3RzNGZ2k3WXhKcWNXNG8vNEQrTklBTmUwQnF3YkZ5aHc1VW44cklLa1hnLy9XRDlUbEZIbDJvSWd5T0tuWkxPOE5ybmZFZmZveHN0dlJmdDFlbmFmRDBEYWRVazJJTDUrUVx1MDAzZFx1MDAzZFwiLFwiZXBoZW1lcmFsUHVibGljS2V5XCI6XCJCRnp5cy84T3k0aUJ1MFpZbExjeTVTTlpVT0tGUWhUeC85ODVxaU1GS0dzc1ZtNEZrOWh3ZVdsZW15Q2xNYkkyMTZsYnNQUzRTeTE1YWIvNzVnVzF2MDhcdTAwM2RcIixcInRhZ1wiOlwianBIVWVIclp1STF5Nzd3UmlzRnpuT2FkQXpsUDJqZThSRnBUOVBGcG1Ic1x1MDAzZFwifSJ9&redirect_url=https://www.yabandpay.com/redirect_url&request_id=g77ur3oqhkqd348iljrb04pbj412rka3&sub_pay_method=Google Pay&time=1723517503&timeout=0&user=YOUR_CASHIER_UID"
Sign stringA using secret_key
The resulting signature is:
"YOUR_SIGNATURE"
Einfragebeispiel (operation=1 Sales):
{
"user": "YOUR_CASHIER_UID",
"sign": "YOUR_SIGNATURE",
"method": "v3.GooglePay",
"time": 1721979693,
"data": {
"description": "test",
"timeout": "0",
"pay_method": "online",
"sub_pay_method": "Google Pay",
"order_id": 1721979693,
"amount": "0.1",
"currency": "EUR",
"operation": "1",
"redirect_url": "https://www.yabandpay.com/redirect_url",
"notify_url": "https://www.yabandpay.com/notify",
"3ds_initiate": "01",
"payment_token_object": "eyJzaWduYXR1cmUiOiJNRVVDSVFDOEJmbDJrSkttUjVvOUxNc3RCYnA0MGtBRW9FQnh4SlQ4VTl2UVgyc1JMd0lnTUJTOWpidDFxR0NoVmxmeElDUTdYOHBKM3VYN1lkY0M5UFd1eEVubmo5b1x1MDAzZCIsImludGVybWVkaWF0ZVNpZ25pbmdLZXkiOnsic2lnbmVkS2V5Ijoie1wia2V5VmFsdWVcIjpcIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVdabXZVODU3SnlOV2ZEbFFuVzBaRG1MUEpoSG91dlpsT09aZk5ORm9nWElJVlRVTnNYNGJ0MEZFakdpVEs4QTNGb094a0d5NStrQ0ZCWDUyL0hhcS93XHUwMDNkXHUwMDNkXCIsXCJrZXlFeHBpcmF0aW9uXCI6XCIxNzIwNTg5NjI3MTk5XCJ9Iiwic2lnbmF0dXJlcyI6WyJNRVVDSVFDbWpKSmFMYzUxWEo3T3dEaUY5QVVIVloyVytGMFJSVWdnNmI5YUc0S2hiUUlnVDBKeVdjRHNlcEpyc2ZyM0xzekdtTUpUNkxZSitzRmZ5YWtmYlIweHg1c1x1MDAzZCJdfSwicHJvdG9jb2xWZXJzaW9uIjoiRUN2MiIsInNpZ25lZE1lc3NhZ2UiOiJ7XCJlbmNyeXB0ZWRNZXNzYWdlXCI6XCJBaVhPT3BJYitNdGxSWnV3MW9nL3ZLVVdvT3FmVEcwZndMcG14WCtuSkFPRXJPQkFYa3dWWG8zd01DaVpQaEppZVN3dHZBNnFaVXpWVTBOVWJaWTVSdE1qZWxUWnVHV3dKcjdRVU9Ob3NXRzFXSmd4bjRHVVRPL2g2Nzdpd2ROajgzbVRDdWNPZnNHeDVMcTZCdXZXT1F0a21Gdk9qSnVSN1daQ2k3QTl4S2tWckxvVEsyWEpBNmNxb0pZMERpa1NMOU1WQW5JWVNyenpCakFwWVc0SGxXTm14ZnJYUUUzYTFKTW95UlRDWWR4azZwUGVzNi9xOG5zN2Fid1RHUGNicmNVZndaN0hiSnFWRVd1aFZxTWpxZW50RHgvRXd3SHFYd0s0YUhMc0hvOGVkc09jbEdMTXBNeFVVOHc0MHJ2ZFNxc3NyUEFmN0RnSGoydkNBNUt2amMrcnBaaGY0Wnl1UkFacHpHSmNvYXNTV3JVeXNqUG5FcFNyVnpzbWV3ejB1K2JyYmNFOTlFNnd0cHhnWVZwUVl0d3FmY2FRY3ZJWUZaT3FXaEJGNFpXcUZoUmdGSkZlQVJSQU1ndnlURmhDaVhObExqcFZcIixcImVwaGVtZXJhbFB1YmxpY0tleVwiOlwiQk83SUpTMVNBanlqWG9EUTVOblBqZmk3dWJ3UVB0Mkx1OFZVQm9SVlh0Q2pWV3h4UUNLWm9sbmc0cnBmUEdaVlRyQzNwOWRUMEtveWhBc2NsR0Z5ZFhFXHUwMDNkXCIsXCJ0YWdcIjpcImtoT1dIRUlSSzBuWVBiWU1OdnhkZVNUTzlsYWJRdlBYZWQrQ1NLZTFyZ1FcdTAwM2RcIn0ifQ==",
"cardinfo": "{\"card_holder\":\"John Smith\",\"email\":\"JohnSmith@gmail.com\"}",
"request_id": "2cwmm7wubqkgtzbtzjhvhkaubev81a0r"
}
}
Eintwortbeispiel (PAN_ONLY):
Note: for PAN_ONLY, redirect to the returned url to complete 3DS verification. After 3DS, the customer is redirected to redirect_url:
{
"status": true,
"code": "200",
"data": {
"order_id": "YOUR_ORDER_ID",
"trade_id": "e684679e-658b-ac70-fd9e-e4959e147e00",
"amount": "0.10",
"currency": "EUR",
"sub_pay_method": "Google Pay",
"state": "processing",
"url": "https://pay.yabandpay.com/dispose_shift4_googlepay_3ds?data=eyJwc3QiOiJlNjg0Njc5ZS02NThiLWFjNzAtZmQ5ZS1lNDk1OWUxNDdlMDAiLCJzaWduX3RyYWRlX2lkIjoiNWZkNzc5Zjg0MmY1ZTc2ZjVmNGQzNGQyNGQ5MGZkMzYyZWMyZGY5ZjU0ODk5ZjBlZDgxYTRkYWUxODM2MmEwNCIsInVzZXIiOiIwMTY2ODMifQ=="
},
"message": "",
"response_id": "202408131051432400124088"
}
Eintwortbeispiel (CRYPTOGRAM_3DS):
Note: for CRYPTOGRAM_3DS, no further 3DS verification is required, and state is returned directly:
{
"status": true,
"code": "200",
"data": {
"order_id": "YOUR_ORDER_ID",
"trade_id": "e684679e-658b-ac70-fd9e-e4959e147e00",
"amount": "0.10",
"currency": "EUR",
"sub_pay_method": "Google Pay",
"state": "paid"
},
"message": "",
"response_id": "202408131051432400124088"
}
Zusätzliche Informationen:
Eintwortergebnis:
-
Eine erfolgreiche Einfrage gibt "status": true.
-
Eine fehlgeschlagene Einfrage gibt "status": false.
Evaluate the returned information: if it contains url, redirect to it; if it does not contain url, read state directly.
For PAN_ONLY, after the user completes 3DS verification at url, they are redirected back to redirect_url synchronously. Wir empfehlen dringend, sowohl Bestellabfrage and Asynchrone Benachrichtigungen zu verwenden, um den Zahlungsstatus zu synchronisieren und Zahlungsinformationen in Echtzeit aktuell zu halten. a) If the order status state is paid, payment succeeded; b) if the order status state is authorized, Autorisierung succeeded. To capture funds after successful Autorisierung, call the Autorisierung capture API.
Eintwortcodes:
| Status | Code | Message |
|---|---|---|
| true | 200 | |
| false | -1000 | Internal error |
| false | -403 | The signature Error |
| false | -2001 | The user not exist |
| false | -3001 | Required field is missing |
| false | -4118 | Incorrect request ID |
