Documentation/Référence API

API REFERENCE

Google Pay ™

POSThttps://mapi.yabandpay.com/Payments
Live API
API PLAYGROUND · Live API

Google Pay ™

POSThttps://mapi.yabandpay.com/Payments
Automatically signed with your credentials

Request parameters14

Required fields first

Google Pay ™

pay_methodRequiredstringdata.pay_methodonline
sub_pay_methodRequiredstringdata.sub_pay_methodGoogle Pay
operationRequiredstringdata.operation1. Sales; 2.Authorisation
amountRequiredstringdata.amount金额数字。例如 € 24.99 应该写成24.99
currencyRequiredstringdata.currency货币代码,ISO 4217,例如EUR,CHF
descriptionRequiredstringdata.description订单描述
payment_token_objectRequiredstringdata.payment_token_object从Google Pay拿到的“token”的字符串base64
cardinfoRequiredstringdata.cardinfo包括持卡人姓名和email
timeoutRequiredstringdata.timeout过期时间单位分钟(0-1440)
notify_urlRequiredstringdata.notify_url支付完成后异步通知地址
request_idRequiredstringdata.request_id请求id需保持唯一,建议24以上位数字+字母
Optional parameters 2
demoOptionalstringdata.demo自定义字段
redirect_urlOptionalstringdata.redirect_url支付完成后跳转地址

请求参数

3ds_initiateRequiredstringdata.3ds_initiate3ds设置。 01. 开启3ds验证;

Credentials stay on this page. Your secret key is never stored or sent to the documentation server.

Paramètres

ParameterTypeDescriptionObligatoire
data.pay_methodstringonline✓
data.sub_pay_methodstringGoogle Pay✓
data.operationstring1. Sales; 2.Authorisation✓
data.order_idinteger商户的订单ID✓
data.amountstring金额数字。例如 € 24.99 应该写成24.99✓
data.currencystring货币代码,ISO 4217,例如EUR,CHF✓
data.descriptionstring订单描述✓
data.demostring自定义字段—
data.payment_token_objectstring从Google Pay拿到的“token”的字符串base64✓
data.cardinfostring包括持卡人姓名和email✓
data.timeoutstring过期时间单位分钟(0-1440)✓
data.redirect_urlstring支付完成后跳转地址—
data.notify_urlstring支付完成后异步通知地址✓
data.request_idstring请求id需保持唯一,建议24以上位数字+字母✓
data.3ds_initiatestring3ds设置。 01. 开启3ds验证;✓

S’applique aux parcours de paiement compatibles avec Google Pay

Google Pay fonctionne dans les navigateurs Web et les applications des principaux appareils de bureau et mobiles. Via Google Pay, YabandPay prend en charge les cartes de débit et de crédit des réseaux suivants :

  • Visa / VPay

  • Mastercard / Maestro

  • UnionPay

Le compte de règlement doit être situé dans l’Espace économique européen (EEE) ou au Royaume-Uni.

Conseil

Tous les marchands qui utilisent Google Pay doivent respecter les conditions suivantes :

  • Google Pay APIs Acceptable Use Policy
  • Google Pay API Terms of Service

En intégrant Google Pay via la solution hébergée de YabandPay, les marchands acceptent les conditions ci-dessus et s’engagent à les respecter.

1. Types d’identifiants et exigences 3DS

Google Pay prend en charge les deux types d’identifiants suivants :

  • PAN_ONLY: Renvoie une enveloppe chiffrée contenant le numéro de compte principal en clair (cardInfo.cardDetails) et le réseau de carte (cardInfo.cardNetwork), sans cryptogramme.

  • CRYPTOGRAM_3DS: Renvoie des identifiants chiffrés basés sur un jeton, contenant un jeton réseau (DPAN) et un cryptogramme, pour les transactions nécessitant un niveau de sécurité supérieur.

3DS requirements:

Lorsque vous recevez PAN_ONLY des identifiants via l’API Google Pay, vous devez effectuer la vérification 3D Secure (définissez 3ds_initiate=01). YabandPay rejette les transactions sans vérification 3DS.

Pour assurer la compatibilité et la sécurité, suivez ces recommandations d’intégration :

  • Activez les deux ["CRYPTOGRAM_3DS", "PAN_ONLY"] dans la configuration frontend de Google Pay.

  • Définissez toujours 3ds_initiate=01 lors de l’envoi d’une demande de paiement à YabandPay.

  • Le backend de YabandPay détermine s’il faut effectuer une vérification 3D Secure en fonction du type d’identifiant.

2. Intégration dans une application ou sur le Web (hébergement autonome)

Les marchands peuvent intégrer l’API Google pour lancer le parcours de paiement sur leur propre site Web ou application. La procédure et la configuration sont décrites ci-dessous :

Parcours de paiement :

Google Pay utilise les identifiants d’une carte liée à l’appareil (DPAN, jeton réseau) plutôt que le numéro réel de la carte (PAN). Le parcours de paiement est le suivant :

  1. Le client sélectionne le bouton Google Pay sur le site Web ou dans l’application du marchand.

  2. Le client autorise le paiement avec Face ID, Touch ID ou un mot de passe.

  3. Google renvoie un jeton chiffré.

  4. Le marchand transmet le jeton à YabandPay pour traitement.

Remarque : en mode autonome, les marchands doivent enregistrer leur propre compte marchand Google Pay dans Google Pay & Wallet Console et obtenir un Merchant ID. Cet identifiant est associé au canal de paiement YabandPay.

API configuration example:

"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "yabandpay",
    "gatewayMerchantId": "<Merchant ID assigned by YabandPay>"
  }
}
  • Encodez le jeton reçu en Base64 et transmettez-le à l’API de paiement YabandPay dans payment_token_object.

  • gateway: une valeur fixe qui doit être "yabandpay".

  • Il est recommandé de désactiver la vérification de l’adresse, comme indiqué ci-dessous :

billingAddressRequired: false

3. Intégration hébergée

YabandPay propose une solution Google Pay hébergée. Les marchands n’ont pas besoin d’intégrer de bouton Google Pay ni de SDK. Soumettez une commande via l’API standard et redirigez le client vers la page hébergée de YabandPay à https://pay.yabandpay.com to complete the Google Pay payment.

En mode hébergé, Google Pay s’exécute sur la page de YabandPay ; les marchands n’ont donc pas à configurer CSP, charger les scripts Google ni définir une version du SDK.

Integration flow:

  1. Le marchand soumet une commande à l’aide de Solution de paiement hébergée (HPP). YabandPay renvoie pay_url.

  2. Le client est redirigé vers la page hébergée à pay_url.

  3. Le client effectue son paiement Google Pay sur cette page.

  4. Après le paiement, le client est redirigé vers le redirect_url, configuré, et une notification asynchrone est envoyée à notify_url.

Notes:

  • Les marchands n’ont pas besoin de charger JavaScript Google Pay ni de construire eux-mêmes les requêtes Google Pay.

  • YabandPay prend en charge le déchiffrement backend et la vérification des transactions Google Pay.

  • Les marchands doivent activer Google Pay dans le portail marchand YabandPay.

  • La page de paiement hébergée affiche automatiquement le nom du marchand, le montant de la commande et d’autres informations afin que le client puisse identifier le paiement.

  • Toutes les transactions sont traitées à l’aide du Google Merchant ID partagé de YabandPay.

4. Modes d’autorisation

YabandPay prend en charge les modes d’autorisation Google Pay suivants :

  • Les autorisations de transactions ponctuelles (DPAN + cryptogramme) sont prises en charge.

  • Card-on-File (COF) n’est pas pris en charge.

  • L’authentification biométrique FIDO n’est pas prise en charge.

5. Exigences de transmission des données

  • Transmettez le payment_token_object chiffré à YabandPay via HTTPS POST.

  • Toutes les données sont chiffrées en transit avec TLS 1.2 ou une version ultérieure.

  • YabandPay utilise des HSM conformes à PCI DSS pour le déchiffrement backend.

6. Références officielles d’intégration Google

Ressources générales :

Guides d’intégration pour applications :

Guides d’intégration Web :


ParamètreTypeDescriptionObligatoire
userStringCashier account UIDObligatoire
signStringSignatureObligatoire
methodStringv3.GooglePayObligatoire
timeLongTimestampObligatoire
  • Parameters
ParamètreTypeDescriptionObligatoire
pay_methodStringonlineObligatoire
sub_pay_methodStringGoogle PayObligatoire
operationString1. Sales; 2.AuthorisationObligatoire
order_idStringMerchant order IDObligatoire
amountStringAmount as a numeric string. For example, enter 24.99 for € 24.99.Obligatoire
currencyStringISO 4217 currency code, for example EUR or CHFObligatoire
descriptionStringOrder descriptionObligatoire
demoStringCustom fieldFacultatif
3ds_initiateString3DS configuration. 01. Enable 3DS verification.Obligatoire
payment_token_objectStringBase64-encoded "token" string obtained from Google PayObligatoire
cardinfoStringIncludes the cardholder name and emailObligatoire
cardinfo.card_holderstringCardholder nameObligatoire
cardinfo.emailstringCardholder emailObligatoire
timeoutStringExpiration time in minutes (0-1440)Obligatoire
redirect_urlStringRedirect URL after paymentFacultatif
notify_urlStringAsynchronous notification URL after paymentObligatoire
request_idStringUnique request ID; a combination of digits and letters at least 24 characters is recommendedObligatoire

Obtention de payment_token_object:

Exemple de jeton renvoyé par 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\"}"
}

Le champ payment_token_object est la chaîne base64_encode des données de jeton obtenues via l’intégration Google Pay.

Signature example:

Sorted parameters concatenated into a URL-style query string

"3ds_initiate=01&amount=0.1&cardinfo={"card_holder":"John Smith","email":"JohnSmith@gmail.com"}&currency=EUR&description=test&method=v3.GooglePayment&notify_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

Le champ resulting signature is:

"YOUR_SIGNATURE"

Exemple de requête (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"
    }
}


Exemple de réponse (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"
}

Exemple de réponse (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"
}

Informations complémentaires:

Résultat de la réponse:
  1. Une requête réussie renvoie "status": true.

  2. Une requête échouée renvoie "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. Nous recommandons vivement d’utiliser à la fois Order Query and Asynchronous Notifications afin de synchroniser et mettre à jour le statut du paiement et de maintenir les informations exactes en temps réel. a) If the order status state is paid, payment succeeded; b) if the order status state is authorized, authorization succeeded. To capture funds after successful authorization, call the authorization capture API.

Response codes:
StatusCodeMessage
true200
false-1000Internal error
false-403The signature Error
false-2001The user not exist
false-3001Required field is missing
false-4118Incorrect request ID