- Directives d'intégration
- Fonctionnalités prises en charge (Modes de paiement)
- Paiements mobiles
- Paiements par Google Pay
Google Pay
Google Pay™ est un service de paiement mobile et de portefeuille numérique fourni par Google qui propose aux payeurs une expérience de paiement en ligne fluide sur les applications Android et sur le Web mobile en utilisant des modes de paiement enregistrés sur un compte Google ou un appareil Android. Google Pay est un paiement mobile pris en charge sur Mastercard Gateway.
Cette page explique le traitement spécifique aux paiements mobiles Google Pay. Nous vous recommandons de lire les instructions d'intégration pour les paiements mobiles avant de créer une intégration Google Pay.
Mastercard Gateway propose Google Pay à compter de API v47.
Conditions préalables
Pour accepter les paiements par Google Pay :
- Vous devez vous inscrire auprès de Google et créer votre ID de commerçant (obligatoire pour Direct Payment).
- Votre your payment service provider doit activer les « paiements mobiles » pour votre profil de commerçant sur la passerelle.
- Si vous voulez que la passerelle gère le décryptage du jeton de paiement, l'autorisation « Activer le décryptage des paiements mobiles sur Google Pay » doit être activée pour votre profil de commerçant sur la passerelle (requis pour les intégrations Hosted Checkout, facultatif pour Direct Payment).
- Si vous utilisez un domaine en marque blanche, veuillez contacter votre prestataire de services de paiement pour vous assurer que ce domaine est activé pour Google Pay.
Intégration de Google Pay
L'intégration Hosted Checkout vous permet de recueillir des détails de paiement auprès de votre payeur à l'aide d'une interaction hébergée et affichée par la passerelle.
À compter de la version 72 de l'API, Google Pay est automatiquement disponible comme mode de paiement après votre activation et votre configuration par votre your payment service provider pour ce mode de paiement.
L'intégration Direct Payment vous permet de proposer le mode de paiement Google Pay sur votre propre page de paiement.
Ajout de la prise en charge de Google Pay à votre intégration
Vous pouvez intégrer Google Pay à votre application mobile ou la page de paiement de votre site Web à l'aide de Direct Payment.
- Sur la confirmation du paiement, renseignez les paramètres suivants dans l'objet
tokenizationSpecification
de l'API Google Pay :
- type de création de jeton (
type
) : définissez ce champ avec la valeurPAYMENT_GATEWAY
- identifiant de la passerelle (
gateway
) : définissez ce champ avec la valeurmpgs
- identifiant de la passerelle du commerçant (
gatewayMerchantId
) : identifiant du commerçant unique que la passerelle peut utiliser afin de vérifier et identifier le commerçant lors du décryptage du jeton de paiement. Cet identifiant de commerçant doit être identique à votremerchantId
soumis dans la demande d'API de la passerelle.
À la fin de l'interaction du payeur avec l'interface utilisateur Google Pay, vous recevez un paiement comportant un jeton de paiement crypté signé par Google. Le jeton de paiement est émis pour un paiement mobile ou pour un paiement par carte.
Vous pouvez indiquer si vous voulez que l'API Google Pay API retourne des FPAN ou des DPAN. Cela peut être très utile si votre acquéreur ne prend pas en charge les paiements mobiles, auquel cas vous pouvez limiter la prise en charge aux FPAN uniquement en définissantallowedAuthMethods
avec la valeurPAN_ONLY
dans l'objetallowedPaymentMethods
de l'API Google Pay. - type de création de jeton (
- (Facultatif) Authentifiez le payeur : renseignez les champs suivants dans la demande 3DS
Check Enrollment
.
order.walletProvider
=GOOGLE_PAY
sourceOfFunds.provided.card.devicePayment.paymentToken
: jeton de paiement crypté obtenu à partir du SDK Google Pay.
La passerelle décryptera le jeton de paiement, et si elle contient un FPAN, alors la demande 3DS
Check Enrollment
se poursuivra. Si le jeton de paiement contient un DPAN, la demande est rejetée (l'authentification 3DS n'est pas prise en charge pour les DPAN). Pour plus d'informations sur l'intégration avec la passerelle à l'aide de 3DS, voir Authentification 3-D Secure.Mastercard Gateway propose l'authentification du payeur 3DS sur Google Pay à compter de API v53. - Renseignez les champs suivants dans une demande
Authorize
/Pay
ouUpdate Session
.
order.walletProvider
=GOOGLE_PAY
order.amount
: la valeur indiquée doit correspondre au montant final de la commande (notamment les montants d'expédition et autres).order.currency
sourceOfFunds.provided.card.devicePayment.paymentToken
: jeton de paiement crypté obtenu à partir du SDK Google Pay.
sourceOfFunds.provided.card.devicePayment.paymentToken [REST][NVP]
- La passerelle vérifie la signature sur le jeton de paiement afin de s'assurer que celui-ci a bien été signé par Google. Après cette vérification, la passerelle décrypte le jeton de paiement pour vous, valide l'identifiant de la passerelle, l'identifiant de la passerelle du commerçant figurant sur le jeton de paiement, et traite la transaction en utilisant les données décryptées.
Outre les champs standard, les champs de réponse suivants sont retournés pour une autorisation réussie à l'aide du jeton de paiement.
Si le paiement contient un DPAN (pour les paiements mobiles) :
sourceOfFunds.provided.card.encryption
=DEVICE
sourceOfFunds.provided.card.deviceSpecificNumber
: DPAN en format masqué.sourceOfFunds.provided.card.deviceSpecificExpiry.month
sourceOfFunds.provided.card.deviceSpecificExpiry.year
sourceOfFunds.provided.card.number
: FPAN en format masqué.sourceOfFunds.provided.card.expiry.month
sourceOfFunds.provided.card.expiry.year
sourceOfFunds.provided.card.devicePayment.cryptogramFormat
Si le paiement contient un FPAN (pour les paiements par portefeuille numérique Google Pay) :
sourceOfFunds.provided.card.encryption
=DIGITAL_WALLET
sourceOfFunds.provided.card.number
: FPAN en format masqué.sourceOfFunds.provided.card.expiry.month
sourceOfFunds.provided.card.expiry.year
Si vous voulez prendre la responsabilité de décrypter le jeton de paiement sur votre serveur, voir Décrypter le jeton de paiement.
L'exemple ci-dessous présente une demande Authorization (Autorisation) dans REST, où le jeton de paiement est décrypté par la passerelle.
URL | 'https://na.gateway.mastercard.com/api/rest/version/71/merchant/MADA_DMS_AU/order/810663616/transaction/911988788' |
Méthode HTTP | PUT |
En-tête | 'Autorisation : De base 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" }
Décrypter le jeton de paiement
Vous pouvez choisir de décrypter le jeton de paiement sur votre serveur plutôt que de fournir le jeton de paiement pour décryptage à la passerelle. Dans ce cas, vous devez prendre la responsabilité de stocker les informations de cryptage et d'exécuter le décryptage.
- Lors de la confirmation du paiement, vous soumettez le jeton de paiement crypté retourné par Google Pay à votre serveur.
- Décryptez le jeton de paiement sur votre serveur en utilisant votre clé privée. Reportez-vous aux étapes de décryptage ici.
- Renseignez les champs de transaction correspondants sur la demande Authorize/Pay (Autoriser/Payer) ou la demande Update Session (Mettre à jour la session) avec les clés des données de paiements du jeton décrypté.
- Si le jeton de paiement décrypté contient un DPAN, renseignez les champs suivants :
Ne tentez pas l'authentification du payeur 3DS si le jeton de paiement contient un DPAN. La passerelle rejettera la demande car les DPAN ne sont pas pris en charge par l'authentification 3DS.Clé JSON Google PayChamp de demande d'API correspondantDescriptionpan sourceOfFunds.provided.card.number Numéro de compte principal spécifique à l'appareil (DPAN) de la carte finançant cette transaction. expirationMonth sourceOfFunds.provided.card.expiry.month Mois d'expiration du pan. expirationYear sourceOfFunds.provided.card.expiry.year Année d'expiration du pan. authMethod sourceOfFunds.provided.card.
devicePayment.cryptogramFormatFormat du cryptogramme. Définissez ce champ avec la valeur 3DSECURE. cryptogram sourceOfFunds.provided.card.devicePayment.
onlinePaymentCryptogramCryptogramme au format 3DSecure. eciIndicator sourceOfFunds.provided.card.devicePayment.
eciIndicatorSi disponible, indiquez la valeur ECI (Electronic Commerce Indicator). sourceOfFunds.provided.card.nameOnCard (Facultatif) Nom du titulaire de la carte. order.currency Code devise ISO 4217 pour la transaction. order.amount Montant de la commande. - Si le jeton de paiement décrypté contient un FPAN, vous pouvez choisir d'authentifier le payeur avant d'effectuer la transaction. Pour authentifier le payeur, renseignez les champs suivants dans la demande 3DS
Check Enrollment
.
order.walletProvider
=GOOGLE_PAY
sourceOfFunds.provided.card.number
: voir le tableau ci-dessous.
Pour plus d'informations sur l'intégration avec la passerelle à l'aide de 3DS, voir Authentification 3-D Secure.
Clé JSON Google PayChamp de demande d'API correspondantDescriptionpan sourceOfFunds.provided.card.number Numéro de carte (FPAN) de la carte finançant cette transaction. Le paiement contient un FPAN lorsque le payeur choisit de payer à l'aide d'une carte enregistrée avec son compte Google Play.
Notez que, pour les paiements par carte, la collecte du cryptogramme visuel n'est actuellement pas prise en charge par l'API Google Pay.expirationMonth sourceOfFunds.provided.card.expiry.month Mois d'expiration du pan. expirationYear sourceOfFunds.provided.card.expiry.year Année d'expiration du pan. sourceOfFunds.provided.card.nameOnCard (Facultatif) Nom du titulaire de la carte. order.currency Code devise ISO 4217 pour la transaction. order.amount Montant de la commande.
- Si le jeton de paiement décrypté contient un DPAN, renseignez les champs suivants :
- Outre les champs ci-dessus, incluez les champs suivants dans la demande Authorize/Pay (Autoriser/Payer) ou Update Session (Mettre à jour la session) et soumettez cette dernière à la passerelle.
- transaction.source=INTERNET
- order.walletProvider=GOOGLE_PAY
- device.mobilePhoneModel : (facultatif) identifiant de l'appareil mobile utilisé pour initier le paiement.
- posTerminal.location : vous pouvez spécifier
PAYER_TERMINAL_OFF_PREMISES
ouPAYER_TERMINAL_ON_PREMISES
. Si vous n'indiquez pas de valeur, la valeurPAYER_TERMINAL_OFF_PREMISES
est utilisée.
L'exemple ci-dessous présente une demande Authorization (Autorisation) dans REST où les valeurs du jeton de paiement décrypté sont fournies à la passerelle.
{ "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" }
Tester l'intégration Google Pay
Si vous décryptez le jeton de paiement, votre intégration doit être approuvée par Google. Suivez les instructions fournies par Google ici : Android/Web.
Cependant, avant de soumettre votre intégration pour approbation à Google, vous devez effectuer quelques transactions de test. Vous pouvez tester votre intégration avec la passerelle en environnement de production à l'aide de votre profil de commerçant de test et un DPAN ou un FPAN pris en charge. Pour plus d'informations, voir Tester avec des exemples de jetons.
Si vous testez un paiement mobile (la carte étant enregistrée sur votre appareil Android), utilisez l'un des DPAN pris en charge indiqué dans le tableau ci-dessous.
Système |
DPAN |
Date d'expiration |
---|---|---|
Visa | 4895370012003478 | 12/2027 |
American Express | 370295136149943 | 12/2027 |
Si vous testez un paiement par carte (la carte étant enregistrée sur votre compte Google Play), utilisez le FPAN pris en charge indiqué dans le tableau ci-dessous.
Système |
FPAN |
Date d'expiration |
---|---|---|
Visa | 4111111111111111 | 12/2027 |
Après l'approbation de votre intégration par Google, vous devez effectuer un test final de vérification en environnement de production avant de passer en production.
Si la passerelle décrypte le jeton de paiement, votre application doit déclarer la passerelle (« mpgs ») comme votre your payment service provider. Cette information est requise pour permettre le cryptage du jeton de paiement généré par Google à l'aide de la clé publique de la passerelle.
Pour effectuer les transactions de test, vous devez utiliser votre ID de commerçant de production dans l'environnement de production — l'ID de commerçant de la passerelle de l'environnement de test ne pouvant pas décrypter les jetons de paiement.
Si les transactions ont pour résultat APPROVED ou DECLINED, la passerelle a pu traiter avec succès vos transactions de test.
Google Pay via Mobile SDK
Mobile SDK vous aide à développer une application mobile (app) qui acceptera les paiements numériques via Mastercard Gateway. La passerelle propose une prise en charge de Google Pay via Mobile SDK. Cliquez ici pour des directives d'intégration Mobile SDK pour la plateforme Android.