Google Pay
Intro
Google Pay™ est un portefeuille numérique pour les paiements en ligne proposé par Google.
Il s'agit d'une solution très polyvalente, car les clients peuvent ajouter des cartes de crédit/débit à leur portefeuille et les utiliser pour :
- Appareils Android en magasin et sites Web pris en charge
- Applications mobiles
- Services Google
En combinant l'API de Google avec notre API CreatePayment, le processus de paiement est rapide, facile et sécurisé. Augmentez votre taux de conversion avec ces fonctionnalités :
- Vos clients tapent simplement sur un appareil en magasin ou sur un bouton dans une application mobile.
- Google Pay™ et nous gérons toutes les données sensibles des clients pour vous.
- Une méthode de chiffrement/déchiffrement sécurisée renforce la confiance de vos clients dans l'ensemble du processus de paiement et réduit considérablement la fraude en ligne : les détails des clients ne sont pas envoyés pendant le processus de paiement, et les navigateurs/appareils n'affichent jamais les numéros de carte non masqués.
Pour rendre tout cela possible, Google Pay™ tokenise les cartes de vos clients. Google Pay™ identifie deux types de cartes :
- Cartes non tokenisées par le réseau : cartes de crédit physiques standard nécessitant une vérification 3-D Secure pour une protection supplémentaire contre la fraude. Cela n'est applicable que pour les paiements passant par votre propre page de paiement.
- Cartes tokenisées par le réseau : carte virtuelle avec un numéro de compte spécifique à l'appareil (DPAN). Ce type de cartes est utilisé à la place de la carte source sous-jacente. Comme la signature numérique de l'appareil mobile utilisé pour le paiement protège ces cartes contre une utilisation frauduleuse, 3-D Secure n'est pas nécessaire. Cela n'est applicable que pour les clients utilisant un appareil mobile.
Vos clients peuvent utiliser des cartes des marques suivantes :
- Google Pay - Visa
- Google Pay - MasterCard
- Google Pay - American Express
Key benefits
- Aucune donnée personnelle partagée
- Exigences PCI faibles (aucune donnée sensible ou personnelle partagée)
- Permet une opération de maintenance standard selon votre acquéreur
- Disponible via Full Service
Onboarding
Veuillez vous assurer
- D'obtenir un compte de test sur notre plateforme.
- Que cette méthode de paiement est active dans votre compte. Vérifiez cela dans le Merchant Portal via Business > Payment methods.
- Se conformer aux Conditions de Service de Google et de respecter la Politique d'utilisation acceptable de l'API Google Pay.
- Respecter les exigences relative à l'API Google Pay™ (vérifiez la section de configuration de la documentation Google et les directives d'utilisation acceptable)
- D'obtenir un compte Google et d'intégrer Google Pay™ soit sur votre page de paiement de boutique en ligne selon cette checklist, soit via Android selon cette checklist.
- De créer des transactions de test réussies, car c'est une exigence de Google pour obtenir l'accès à la production sur leur plateforme et leur approbation pour utiliser cette méthode de paiement sur votre page de paiement/application. En savoir plus sur "Demander l'accès à la production" de Google et la section "Déployer l'environnement de production
Utilisez les informations disponibles dans notre Integration et le chapitre Testing pour réaliser cela.
Countries & currencies
Supported countries
-
Albania
-
Algeria
-
American Samoa
-
Angola
-
Antigua and Barbuda
-
Argentina
-
Australia
-
Austria
-
Azerbaijan
-
Bahrain
-
Belarus
-
Belgium
Supported currencies
- Albanian lek (ALL)
- Algerian dinar (DZD)
- Angolan kwanza (AOA)
- Argentine peso (ARS)
- Armenian dram (AMD)
- Aruban florin (AWG)
- Australian dollar (AUD)
- Azerbaijani manat (AZN)
- Bahamian dollar (BSD)
- Bahraini dinar (BHD)
- Bangladeshi taka (BDT)
- Barbados dollar (BBD)
Integration
Avec Google Pay™, vos clients peuvent acheter des biens/services avec une carte de crédit ou de débit stockée dans leur compte Google. Que ce soit depuis leurs appareils Android ou sur Internet, le processus de paiement est beaucoup plus simple : Google Pay™ affiche une feuille de paiement qui sélectionne la méthode de paiement par carte préférée que les acheteurs confirment.
Regardez la vidéo pour voir comment les acheteurs paient avec Google Pay™.
Pour bénéficier d'un transfert de responsabilité lors de l'utilisation de Google Pay™, vous devez authentifier la transaction avec 3-D Secure.
Notre plateforme vous propose deux types d'intégration pour votre entreprise :
Retrouvez un aperçu général dans le chapitre "Process flows".
- Lorsque vous utilisez l'API Google, assurez-vous de consulter les guides pour le Web / Android / les directives de marque Google Pay™ pour le Web. Ils vous informent des pratiques à suivre et à éviter avec Google Pay™, montrent les types de boutons pris en charge et les meilleures pratiques pour maximiser votre taux de conversion.
- Pour utiliser cette méthode de paiement, vos clients doivent installer l'application Google Pay™ sur leur appareil.
- Si vous souhaitez proposer Google Pay™ sur votre propre page de paiement, assurez-vous que Visa et Mastercard sont actifs sur votre compte. Vérifiez cela dans votre compte. S'ils ne sont pas encore actifs, contactez-nous.
- Ce mode d'intégration nécessite que vos clients avec un ordinateur/tablette paient avec des cartes de crédit classiques. Dans un tel scénario, 3-D Secure est obligatoire. Découvrez ici comment implémenter 3-D Secure dans le flux de transaction.
Google Pay™ sur votre propre page de paiement
Utilisez notre SDK JavaScript pour intégrer Google Pay™ avec le bouton Google Pay™ directement dans votre propre page de paiement. Dans ce cas, vous devez ouvrir une page Google Pay™ et obtenir le token de paiement que Google chiffrera pour vous avec notre clé publique.
Une fois que vous avez reçu le token de paiement, vous devez nous l'envoyer en utilisant notre appel d'API Create Payment via l'API Serveur pour compléter le paiement. Après cette étape, nous nous occuperons du déchiffrement pour vous.
Pour ce faire, vous devez :
- Ouvrir une page Google Pay™.
- Obtenir le token de paiement que Google chiffre pour vous avec notre clé publique en utilisant l'API de Google.
- Envoyer le token de paiement en utilisant notre API CreatePayment avec l'un de nos SDK Serveur afin que nous puissions gérer le déchiffrement pour vous.
Ce mode d'intégration vous offre les avantages suivants :
- Meilleure visibilité du bouton Google Pay™ sur votre site web pour une conversion plus élevée.
- Vous pouvez utiliser l'API Google Pay™ pour récupérer les détails personnels de vos clients tels que leur adresse ou leur e-mail.
Une fois que vous avez suivi les directives de configuration de Google, vous êtes prêt pour l'intégration technique. Google propose un tutoriel clair et concis sur la manière d'implémenter Google Pay™ sur votre site web. L'intégration technique inclut les étapes suivantes :
- Récupérer GooglePay™
- Obtenir les réseaux de cartes de crédit disponibles
- Se conformer à l'Authentification Forte du Client (SCA)
- Afficher le bouton Google Pay™
- Initialiser la feuille de paiement
- Obtenir le token de paiement
- Envoyer le token de paiement
- Parce que vous nous utilisez pour déchiffrer les informations de paiement sensibles, Google utilise le type de tokenisation suivant : PAYMENT_GATEWAY. Nous expliquerons comment procéder dans les étapes suivantes.
- Selon l'appareil utilisé pour le paiement, deux scénarios sont possibles :
- 1. Appareils mobiles : Vos clients utilisent une carte tokenisée par le réseau pour le paiement. Ces cartes virtuelles sont liées à un numéro de compte spécifique à l'appareil (DPAN). Une signature numérique protège ces cartes contre une utilisation frauduleuse, rendant le 3-D Secure inutile.
- 2. Appareils de Desktop/tablette : Vos clients utilisent une carte non tokenisée par le réseau pour le paiement. Ce sont des cartes de crédit physiques standard qui nécessitent un contrôle 3-D Secure. L'étape
« Envoyer le token de paiement » explique en détail ce que vous devez faire dans chaque cas.
1. Récupérer Google Pay™
Utilisez le JavaScript Client SDK pour récupérer le moyen de paiement Google Pay™ via l’appel API payment product(s). Cela vous fournira les données nécessaires pour les étapes suivantes, comme les réseaux pris en charge.
Utilisez l’exemple de code suivant pour effectuer l’appel :
// session is an instance of the Session object, the SDK's main entry point. Note that the session has to be initialized before using it.const googlePayProduct = await session.getPaymentProduct(320, paymentDetails).catch(() => null);if (!googlePayProduct) {// Google Pay™ is not available, offer your customer another payment option to complete the payment}// Google Pay™ is available, show the Google Pay™ button
2. Préparer les données de la requête
Vous devez spécifier le réseau de carte de crédit autorisé pour la transaction Google Pay™ en cours. L’appel GetPaymentProduct (à la fois en client-to-server et en server-to-server) renvoie les réseaux disponibles. Les réseaux sont disponibles dans le champ de réponse paymentProduct320SpecificData. L’API Google Pay™ accepte directement les valeurs renvoyées.
Comme nous déchiffrons pour vous le jeton de paiement Google Pay™, vous devez définir une valeur spécifique pour le champ gateway dans la requête de tokenisation. Cette valeur est également disponible dans paymentProduct320SpecificData.
- merchantID : l’identifiant merchantID que vous recevez de Google après votre inscription dans la Google Pay™ Business Console.
- merchantName : le nom affiché dans la fenêtre de paiement. Ce champ est obligatoire si vous êtes basé dans l’Espace économique européen (EEE) afin de répondre aux exigences d’authentification forte (SCA). Encodez merchantName en UTF‑8 conformément aux spécifications de Google.
- gateway : utilisez la valeur renvoyée dans la réponse produit (voir les extraits de code ci‑dessous).
- gatewayMerchantId : votre identifiant marchand (PSPID) sur notre plateforme.
3. Se conformer à l’authentification forte (SCA)
Si votre acquéreur est situé dans l’Espace économique européen (EEE), vous devez transmettre à Google les informations de pays/région de la banque acquéreuse dans TransactionInfo.countryCode. Cela garantira le respect des exigences SCA. Google Pay™ renverra des données de transaction adaptées au pays/région de votre acquéreur.
Vous trouverez plus d’informations sur la conformité à l’authentification forte pour Google Pay™ dans la documentation de l’API Google Pay™ et dans notre guide dédié.
Pour vous assurer que la transaction est traitée conformément aux directives SCA, remplissez ces champs pour couvrir l'appareil de votre client.
customer.device.acceptHeader
customer.device.browserData.colorDepth
customer.device.browserData.javaEnabled
customer.device.browserData.screenHeight
customer.device.browserData.screenWidth
customer.device.ipAddress
customer.device.locale
customer.device.timezoneOffsetUtcMinutes
customer.device.userAgent
Trouvez plus d'informations sur ces champs dans notre aperçu complet des propriétés 3-D Secure.
4. Rendre le bouton Google Pay™
Si Google Pay™ est disponible, ajoutez le bouton Google Pay™ sur votre page de paiement. Assurez-vous de suivre les directives de Google concernant l'affichage du bouton Google Pay™ et la politique de marque de Google.
Utilisez l'exemple de code suivant pour l'ajouter :
Ajouter le bouton Google Pay™
function addGooglePayButton() {
const paymentsClient = getGooglePaymentsClient();
const button =
paymentsClient.createButton({
onClick: onGooglePaymentButtonClicked
});
document.getElementById('container').appendChild(button);
}
5. Initialiser la feuille de paiement
Répondez au client en utilisant le bouton Google Pay™ en créant une session de paiement Google Pay™ pour le paiement :
Afficher la feuille de paiement Google Pay™
function onGooglePaymentButtonClicked() {
const paymentDataRequest = getGooglePaymentDataRequest();
paymentDataRequest.transactionInfo = getGoogleTransactionInfo();
const paymentsClient = getGooglePaymentsClient();
paymentsClient.loadPaymentData(paymentDataRequest).then(function(paymentData) {
// gérer la réponse
processPayment(paymentData);
}).catch(function(err) {
// afficher l'erreur dans la console du développeur pour débogage
console.error(err);
});
}
6. Obtenir le token de paiement
Pour traiter le paiement réel, vous devez demander le token de paiement à Google. Pour ce faire, utilisez l'exemple de code suivant :
Obtenir le token de paiement Google Pay™
function processPayment(paymentData) {
var paymentToken = paymentData.paymentMethodData.tokenizationData.token;
@todo traiter le paymentToken comme décrit à l'étape suivante
}
7. Envoyer le token de paiement
Dans l'appel API de création de paiement, vous pouvez fournir des tokens de paiement de deux manières différentes :
- Envoyez le token dans la propriété mobilePaymentMethodSpecificInput.encryptedPaymentData. Assurez-vous également d'envoyer mobilePaymentMethodSpecificInput.paymentProductId
{ "mobilePaymentMethodSpecificInput":{ "encryptedPaymentData":"{\"signature\":\"MEUCIQCcSASjWu3ax9jQ8qX/+rsNLZ95uiyxamXiKnHlJi8A1QIgZj ...", "paymentProductId":"320" } } - Spécifiez le token comme valeur de paiement dans encryptedCustomerInput. Cette entrée est une liste chiffrée de paires clé-valeur, contenant généralement des données saisies par l'utilisateur, qui est compilée en fonction du champ de saisie réel. Les détails de paiement chiffrés du client :
- sont à nouveau chiffrés
- envoyés à votre serveur
- enfin à notre serveur
Vous devez utiliser le SDK Android côté client pour créer la valeur CustomerInput chiffrée. L'fieldId du champ de données de paiement chiffrées est renvoyé lorsque Google Pay™ reçoit des moyens de paiement via l'API. Bien que ce champ soit renvoyé comme un champ de saisie, vous ne devez pas fournir ce champ aux utilisateurs.// Cet exemple suppose que le SDK est correctement initialisé var paymentRequest = session.getPaymentRequest(); paymentRequest.setValue("encryptedPaymentData", "{\"signature\":\"MEUCIG/WtsJnBf6yLsvnD2LOGaVMCO8E93QizIE0foMscVujAi...\"}") var encryptor = session.getEncryptor(); encryptor.encrypt(paymentRequest).then(function(encryptedString) { // Envoyez le encryptedString à votre backend. Cette chaîne exacte est la valeur attendue pour le // encryptedCustomerInput dans Server-to-server CreatePaymentAPI }, function(errors) { // Informez le consommateur qu'un problème s'est produit });
Une fois que vous avez reçu le token, envoyez la requête de paiement à notre plateforme. Ajoutez les propriétés suivantes à une requête CreatePayment standard :
| Propriétés | Remarques |
|---|---|
|
mobilePaymentMethodSpecificInput |
paymentProductId : Indique à notre plateforme de cibler Google Pay. requiresApproval : Traite la transaction comme une autorisation ou une Direct Sale. encryptedPaymentData : Le token que vous avez reçu à l'étape précédente. |
Trouvez des informations détaillées sur cet objet et ses propriétés dans notre API CreatePayment.
Assurez-vous de déterminer l'appareil utilisé par vos clients pour le paiement, car cela détermine si vous devez déployer manuellement 3-D Secure.
- Vos clients utilisent un ordinateur/tablette : Traitez ce type de transactions comme des transactions ordinaires par carte de crédit. Par conséquent, vous devez inclure les propriétés 3-D Secure dans votre requête. Consultez les exemples de code pour apprendre comment cela fonctionne :
Dequête avec des propriétés 3-D Secure utilisant encryptedPaymentData
Dequête avec des propriétés 3-D Secure utilisant encryptedCustomerInput - Vos clients utilisent un appareil mobile. Les cartes utilisées pour ce type de transactions sont des cartes virtuelles liées à un numéro de compte spécifique à l'appareil (DPAN). Une signature numérique protège ces cartes contre l'utilisation frauduleuse, rendant 3-D Secure inutile. Consultez les exemples de code pour :
Requête sans propriétés 3-D Secure utilisant encryptedPaymentData
Requête sans propriétés 3-D Secure utilisant encryptedCustomerInput
Une requête typique ressemble à ceci :
Request with 3-D Secure properties using encryptedPaymentData
{
"mobilePaymentMethodSpecificInput": {
"paymentProductId": "320",
"requiresApproval": true,
"encryptedPaymentData": "{\"signature\":\"MEUCIG/WtsJnBf6yLsvnD2LOGaVMCO8E93QizIE0foMscVujAi..."
},
"paymentProduct320SpecificInput": {
"threeDSecure": {
"challengeIndicator": "no-preference",
"challengeCanvasSize": "600x400",
"skipAuthentication": false,
"redirectionData": {
"returnUrl": "https://hostname.myownwebsite.url",
"variant": "100"
}
}
},
"order": {
"amountOfMoney": {
"currencyCode": "EUR",
"amount": 2300
},
"customer": {
"billingAddress": {
"countryCode": "BE"
},
"device": {
"acceptHeader": "texthtml,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"browserData": {
"colorDepth": 24,
"javaEnabled": false,
"screenHeight": "1200",
"screenWidth": "1920"
},
"ipAddress": "123.123.123.123",
"locale": "en-US",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1 Safari/605.1.15",
"timezoneOffsetUtcMinutes": "420"
},
"locale": "en_US",
"merchantCustomerId": "your id="" of="" the="" consumer="""
}
}
}
Request with 3-D Secure properties using encryptedCustomerInput
{
"mobilePaymentMethodSpecificInput": {
"paymentProductId": "320",
"requiresApproval": true
},
"paymentProduct320SpecificInput": {
"threeDSecure": {
"challengeIndicator": "no-preference",
"challengeCanvasSize": "600x400",
"skipAuthentication": false,
"redirectionData": {
"returnUrl": "https://hostname.myownwebsite.url",
"variant": "100"
}
}
},
"order": {
"amountOfMoney": {
"currencyCode": "EUR",
"amount": 2300
},
"customer": {
"billingAddress": {
"countryCode": "BE"
},
"device": {
"acceptHeader": "texthtml,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"browserData": {
"colorDepth": 24,
"javaEnabled": false,
"javaScriptEnabled": true,
"screenHeight": "800",
"screenWidth": "360"
},
"ipAddress": "123.123.123.123",
"locale": "en-US",
"userAgent": "Mozilla/5.0 (Linux; Android 10; SM-G980F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.101 Mobile Safari/537.36",
"timezoneOffsetUtcMinutes": "420"
},
"locale": "en_US",
"merchantCustomerId": "your id="" of="" the="" consumer="""
},
"encryptedCustomerInput" : "encrypted string="""
}
}
Request without 3-D Secure properties using encryptedpaymentdata
{
"order" : {
"amountOfMoney" : {
"currencyCode" : "EUR",
"amount" : 2300
},
"customer" : {
"merchantCustomerId": "
",
"billingAddress" : {
"countryCode" : "NL"
}
}
},
"mobilePaymentMethodSpecificInput" : {
"paymentProductId" : 320,
"encryptedPaymentData": "{\"signature\":\"MEUCIQCcSASjWu3ax9jQ8qX/+rsNLZ95uiyxamXiKnHlJi8A1QIgZj ..."
}
}
Request without 3-D Secure properties using encryptedcustomerinput
{
"order" : {
"amountOfMoney" : {
"currencyCode" : "EUR",
"amount" : 2300
},
"customer" : {
"merchantCustomerId": "your id="" of="" the="" consumer=""",
"billingAddress" : {
"countryCode" : "NL"
}
}
},
"encryptedCustomerInput" : "encrypted string="""
}
Google Pay™ dans l'application
Nous proposons également Google Pay™ pour les applications Android natives. Notre client SDK Android vous aide à intégrer Google Pay™ dans votre application tandis que nous déchiffrons pour vous les informations de paiement sensibles.
Une fois que vous avez suivi les directives d'installation de Google, vous êtes prêt à commencer l'intégration technique avec nous. Google offre un tutoriel très clair et concis sur la façon d'implémenter Google Pay™ sur votre site Web. L'intégration technique inclut les étapes suivantes :
- Récupérer Google Pay™
- Se conformer à l'authentification forte du client (SCA)
- Afficher le bouton Google Pay™
- Obtenir le token de paiement
- Envoyer le token de paiement
Parce que vous nous utilisez pour déchiffrer les informations de paiement sensibles, Google utilise le type de tokenisation suivant : PAYMENT_GATEWAY. L'obtention du moyen de paiement renvoie le token dans la propriété paymentProduct320SpecificData.gateway.
1. Récupérer Google Pay™
Google Pay™ n’est pas toujours disponible sur tous les appareils. Le client Android SDK vous permet de masquer facilement Google Pay™ dans ce cas. Notre plateforme renverra alors null. Utilisez l’exemple de code suivant pour effectuer cet appel :
// The paymentContext is an instance of the PaymentContext class holing the order payment data, such as amount and currencyval googlePayProduct = session.getPaymentProduct(320, paymentContext)if (googlePayProduct != null) {// Google Pay™ is available, render the Google Pay™ button.} else {// Google Pay™ is NOT available.}
2. Se conformer à l’authentification forte (SCA)
Si votre acquéreur est situé dans l’Espace économique européen (EEE), vous devez transmettre à Google les informations de pays/région de la banque acquéreuse dans TransactionInfo.countryCode. Cela garantira le respect des exigences SCA. Google Pay™ renverra des données de transaction adaptées au pays/région de votre acquéreur.
L’appel API payment product depuis le Client SDK ou en Server-to-Server renvoie le champ acquirerCountry, que vous devez envoyer à Google.
private JSONObject getGooglePayPaymentRequestData(PaymentContext paymentContext, PaymentProduct googlePayProduct) {val googlePayData = googlePayProduct.paymentProduct320SpecificDataval cardPaymentMethod = JSONObject().apply {put("type", "CARD")put("parameters", JSONObject().apply {put("allowedAuthMethods", JSONArray(listOf("PAN_ONLY", "CRYPTOGRAM_3DS")))put("allowedCardNetworks", JSONArray(googlePayData.networks))put("billingAddressRequired", false)})put("tokenizationSpecification", JSONObject().apply {put("type", "PAYMENT_GATEWAY")put("parameters", JSONObject().apply {put("gateway", googlePayData.gateway)put("gatewayMerchantId", merchantId)})})}
val transactionInfo = JSONObject().apply {
put("totalPrice", price.toString())
put("totalPriceStatus", "FINAL")
put("currencyCode", currencyCode)
// use the acquirer country code or the country code from your current context
put("countryCode", "BE")
}val paymentRequest = JSONObject() {put("apiVersion", 2)put("apiVersionMinor", 0)}paymentRequest.put("allowedPaymentMethods", JSONArray().put(cardPaymentMethod))paymentRequest.put("transactionInfo", transactionInfo)paymentRequest.put("merchantInfo", JSONObject().apply {put("merchantId", googleMerchantId)put("merchantName", googleMerchantName)})return paymentRequest;}
Vous trouverez plus d’informations sur la conformité à l’authentification forte pour Google Pay™ dans la documentation de l’API Google Pay™ et dans notre guide dédié.
3. Afficher le bouton Google Pay™
Une fois la requête de paiement préparée, affichez le bouton Google Pay™ dans votre application. Veillez à respecter les directives de Google sur l’affichage du bouton Google Pay™ et la politique de marque de Google.
val walletOptions = Wallet.WalletOptions.Builder()
.setEnvironment(WalletConstants.ENVIRONMENT_PRODUCTION)
.build()
val client = Wallet.getPaymentsClient(activity, walletOptions)
val requestData = getGooglePayPaymentRequestData(paymentContext, googlePayProduct)
val isReadyToPayRequest = IsReadyToPayRequest.fromJson(requestData.toString())
// First, determine whether Google Pay™ is ready
val isReadyToPayTask = client.isReadyToPay(isReadyToPayRequest)
isReadyToPayTask.addOnCompleteListener { completedTask ->
try {
val isAvailable = completedTask.getResult(ApiException::class.java)
if (isAvailable) {
val task = client.loadPaymentData(paymentRequest)
// note that Google Pay requires an activity flow
AutoResolveHelper.resolveTask(
client.loadPaymentData(PaymentDataRequest.fromJson(requestData.toString())),
requireActivity(),
GOOGLE_PAY_REQUEST_CODE // Your activity code. Check onActivityResult() method below.
)
}
} catch (_: ApiException) {
// Google pay is not available
}
}
4. Récupérer le jeton de paiement
Une fois le processus Google Pay réussi, vous devez récupérer le jeton de paiement. Pour ce faire, utilisez l’extrait de code suivant :
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {when (requestCode) {GOOGLE_PAY_REQUEST_CODE -> {when (resultCode) {Activity.RESULT_OK ->data?.let { intent ->PaymentData.getFromIntent(intent)?.let(::handleGooglePaySuccess)}Activity.RESULT_CANCELED -> {dismiss()}AutoResolveHelper.RESULT_ERROR -> {AutoResolveHelper.getStatusFromIntent(data)?.let { status ->// display the error message}dismiss()}}}}}private fun handleGooglePaySuccess(paymentData: PaymentData) {val paymentDataJSONString = paymentData.toJson()try {// Token will be null if PaymentDataRequest was not constructed using fromJson(String).val unformattedGooglePayToken = JSONObject(paymentDataJSONString).getJSONObject("paymentMethodData").getJSONObject("tokenizationData").getString("token")// Token needs to be formatted when using it to create a payment// with mobilePaymentMethodSpecificInput.encryptedPaymentData// Send this to your server to be processed. Check step 5 for more details.val formattedGooglePayToken = JSONObject.quote(unformattedGooglePayToken)} catch (exception: JSONException) {// display the error message}}
5. Envoyer le jeton de paiement
Dans l’appel API Create payment, vous pouvez fournir les jetons de paiement de deux manières différentes :
- Vous pouvez traiter le jeton de paiement brut reçu à l’étape précédente. Voici un extrait de l’objet de requête Create Payment :
{// ..."mobilePaymentMethodSpecificInput":{"encryptedPaymentData": formattedGooglePayToken,"paymentProductId":"320"}// ...} - Vous pouvez utiliser le Client SDK pour chiffrer le jeton et l’envoyer comme valeur de paiement dans le champ encryptedCustomerInput de la requête Create Payment. Cet input est une liste chiffrée de paires clé‑valeur, contenant généralement les données saisies par l’utilisateur, compilée à partir des champs de saisie réels. Les données de paiement chiffrées du client :
- sont chiffrées à nouveau
- sont envoyées à votre serveur
- sont utilisées dans le Server SDK pour créer un paiement
Voici le code qui explique comment les chiffrer à l’aide du SDK Android et du code décrit précédemment :
val paymentRequest = PaymentRequest()paymentRequest.paymentProduct = googlePayProductpaymentRequest.setValue("encryptedPaymentData", formattedGooglePayToken)val encryptedString = session.preparePaymentRequest(paymentRequest)Une fois envoyée à votre serveur, utilisez cette valeur pour construire l’objet de requête Create Payment :
{// ..."encryptedCustomerInput": encryptedString,// ...}Vous trouverez des informations détaillées sur cet objet et ses propriétés dans notre CreatePaymentAPI.
Process flows
- Vos clients finalisent une commande dans votre boutique / application et sélectionnent Google Pay™.
- Votre serveur envoie un appel API spécifique à Google pour afficher une liste de méthodes de paiement prises en charge dans le navigateur / l'application.
- Vos clients sélectionnent une méthode de paiement.
- Votre serveur demande un token de paiement à Google.
- Vous envoyez cette demande CreatePayment à notre plateforme, contenant le token de paiement dans la propriété mobilePaymentMethodSpecificInput.encryptedPaymentData
5'(Optionnel pour les paiements passant par votre propre page de paiement). Si vos clients utilisent une carte non tokenisée par le réseau, vous redirigez les clients vers leur banque émettrice pour l'authentification 3-D Secure.
5''(Optionnel pour les paiements passant par votre propre page de paiement). Vos clients effectuent la vérification 3-D Secure. Notre système reçoit le résultat de l'émetteur. Selon le résultat, deux scénarios sont possibles :
a) Si l'identification a réussi, le flux continue à l'étape 6.
b) Si l'identification a échoué, nous redirigeons vos clients vers votre returnUrl, mettant fin au flux. Vous pouvez demander le résultat de la transaction comme décrit à l'étape 8. - Google Pay™ traite la transaction financière réelle. Nous recevons le résultat de la transaction.
- Nous redirigeons votre client vers votre application / returnUrl
- Vous demandez le résultat de la transaction à notre plateforme via GetPaymentDetails ou recevez le résultat via webhooks.
- Si la transaction a réussi, vous pouvez livrer les biens / services.
Testing
Consultez nos Test cases pour des données de test et des instructions détaillées.
- Assurez-vous d'utiliser le bon endpoint et de renseigner l'URL de production dès que vous avez terminé vos tests.
- Les données dans notre chapitre Test cases fonctionnent UNIQUEMENT pour les demandes de paiement dans notre environnement de test. Utiliser ces données dans notre environnement de production entraînera des résultats de test indésirables.
Additional information
Google Pay et Card On File
Card On File (COF) permet de stocker les détails de la carte d’un client pour des paiements futurs, ce qui est également possible pour Google Pay.
Le cadre COF définit l'utilisation équitable des données de carte stockées, vous fournissant des instructions spécifiques. Nous expliquons cela dans la section cas d'utilisation dédiée et fournissons pour chacun des exemples JSON/API endpoints. Google Pay ne supporte que les cas d'utilisation A et E, et comme il y a des différences, nous les documentons ici directement.
Exemple A - CIT premier et récurrent
| CreateHostedCheckout | CreatePayment |
|---|---|
|
|
Exemple E - Paiements programmés MIT
{
"subsequentCardPaymentMethodSpecificInput": {
"subsequentType": "recurring"
},
"order": {
"amountOfMoney": {
"amount": 100,
"currencyCode": "EUR"
}
}
}