Google Pay

Introduction
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
Avantages clés
- 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
Activation
Veuillez vous assurer :
- D'obtenir un compte de test/de production sur notre plateforme.
- Que cette méthode de paiement est active dans votre compte. Vérifiez cela dans le Merchant Portal via Entreprise > Moyens de paiement.
Utilisez-vous le Back Office ?
Vous pouvez vérifier le statut d'activation de la méthode de paiement via Configuration > Activation PM. - D'accepter les conditions d'utilisation de Google et de respecter la politique d'utilisation acceptable de l'API Google Pay.
- De satisfaire aux exigences de l'API Google Pay™ (consultez 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™ sur la page de paiement de votre boutique en ligne selon cette liste de contrôle / ou via Android selon cette liste de contrôle.
- De créer des transactions de test réussies, car cela est nécessaire pour que Google vous accorde l'accès à la production sur leur plateforme et leur approbation pour utiliser cette méthode de paiement sur votre page de paiement/dans votre application. Pour en savoir plus, consultez les sections de Google "Demander l'accès à la production" et "Déployer un environnement de production".
Utilisez les informations disponibles dans notre chapitre Intégration et Test pour réaliser cela.
Intégration
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 "Cinématique".
- 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 des moyens de paiement. Cela vous fournira les données nécessaires pour les étapes suivantes, telles que les réseaux pris en charge. Lors de la réception des informations sur le moyen de paiement, le SDK appellera également l'API Google isReadyToPay pour vérifier si Google Pay™ est disponible sur l'appareil et les paramètres que vos consommateurs utilisent. Si l'appel génère une erreur, le SDK ne retournera pas Google Pay™ comme méthode de paiement utilisable pour la transaction.
Utilisez l'exemple de code suivant pour effectuer l'appel :
// la session est une instance de l'objet Session, qui est le point d'entrée principal pour le SDK
session.getPaymentProduct(320, paymentDetails, paymentProductSpecificInputs).then(
function(paymentProduct) {
// Google Pay™ est disponible, montrez le bouton Google Pay™
// Stockez le moyen de paiement dans la requête de paiement Connect
session.getPaymentProductRequest().setPaymentProduct(paymentProduct);
},
function() {
// Google Pay™ n'est pas disponible, offrez à votre client une autre option de paiement pour compléter le paiement
}
);
2. Obtenez les réseaux de cartes de crédit disponibles
Vous devez spécifier le réseau de cartes de crédit autorisé pour la transaction Google Pay™ actuelle. L'appel GetPaymentProduct (à la fois via client-serveur et serveur-serveur) 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 de retour.
Étant donné que nous décryptons pour vous le token de paiement Google Pay™, vous devez définir une valeur spécifique pour le champ ‘gateway’ dans la tokenizationSpecification. Cette valeur est également disponible dans le paymentProduct320SpecificData. Le gatewayMerchantId est votre propre merchantID (PSPID) sur notre plateforme.
- merchantID : le merchantID que vous obtenez de Google après inscription sur la Google Pay™ Business Console.
- merchantName : le nom affiché dans la feuille de paiement. Ceci est obligatoire si vous êtes basé dans l'Espace économique européen (EEE) pour répondre aux exigences de l'authentification forte du client (SCA). Encodez le merchantName en UTF-8 selon les spécifications de Google.
- gateway : utilisez la valeur renvoyée dans la réponse du produit : paymentProduct.paymentProduct320SpecificData.gateway.
- gatewayMerchantId : votre merchantID (PSPID) sur notre plateforme.
Utilisez le code suivant pour initialiser à la fois allowedCardNetworks et la tokenizationSpecification après avoir reçu le moyen de paiement Google Pay™ :
Initialiser Google Pay™
// Si vous souhaitez utiliser Google Pay™ dans votre application, vous devez vous inscrire
// auprès de Google pour recevoir un Google Merchant ID
var paymentProductSpecificInputs = {
googlePay: {
merchantId: '
',
merchantName: '
',
gatewayMerchantId: '
'
}
};
// Récupérer le moyen de paiement Google Pay™ via l'API client à serveur
// On suppose que les objets session, paymentDetails et paymentProductSpecificInputs ici sont tous valides
session.getPaymentProduct(320, paymentDetails, paymentProductSpecificInputs).then(
function(paymentProduct) {
const allowedCardNetworks = paymentProduct.paymentProduct320SpecificData.networks;
const tokenizationSpecification = {
type: 'PAYMENT_GATEWAY',
parameters: {
gateway: paymentProduct.paymentProduct320SpecificData.gateway,
gatewayMerchantId: paymentProductSpecificInputs.googlePay.gatewayMerchantId
}
};
// Stockez le moyen de paiement dans la requête de paiement, ce qui est requis pour
// créer les données client encryptées plus tard
session.getPaymentRequest().setPaymentProduct(paymentProduct);
},
function() {
// Google Pay™ n'est pas disponible, offrez à votre client une autre option de paiement pour compléter le paiement
}
);
3. Se conformer à l'authentification forte du client (SCA)
Si votre acquéreur est situé dans l'Espace économique européen (EEE), vous devez soumettre les informations du pays/région de la banque acquéreuse à Google dans TransactionInfo.countryCode. Cela garantira votre conformité aux exigences de SCA. Google Pay™ renverra les données de transaction correspondantes en fonction du pays/région de votre acquéreur.
L'appel API du moyen de paiement depuis le Client SDK ou le Server-to-server renvoie le acquirerCountry que vous devez envoyer à Google. Le code suivant montre comment
- obtenir le code du pays de l'acquéreur à partir de la réponse du moyen de paiement et l'utiliser pour initialiser Google Pay™.
- obtenir le champ résultat de l'objet transactionInfo.
- spécifier les paramètres totalPrice et MerchantName (comme décrit dans l'étape 8.3 du tutoriel Google Pay™ et dans la section Authentification forte du client sur le site de documentation de Google).
Trouver plus d'informations sur la conformité à l'authentification forte du client pour Google Pay™ dans la documentation de l'API Google Pay™ et dans notre guide dédié.
Conformité à l'authentification forte du client (SCA)
// Si vous souhaitez utiliser Google Pay™ dans votre application, vous devez vous inscrire
// auprès de Google pour recevoir un Google Merchant ID
var paymentProductSpecificInputs = {
googlePay: {
merchantId: '
',
merchantName: '
',
gatewayMerchantId: '
'
}
};
// https://developers.google.com/pay/api/web/reference/request-objects#TransactionInfo
var transactionInfo = {
currencyCode: 'currency code=""',
totalPriceStatus: 'final',
totalPrice: 'amount'
};
// Récupérer le moyen de paiement Google Pay™ via l'API client à serveur
// On suppose que les objets session, paymentDetails et paymentProductSpecificInputs ici sont tous valides
session.getPaymentProduct(320, paymentDetails, paymentProductSpecificInputs).then(
function(paymentProduct) {
const acquirerCountry = paymentProduct.acquirerCountry;
if (acquirerCountry != null) {
transactionInfo.countryCode = acquirerCountry;
}
},
function() {
// Google Pay™ n'est pas disponible, offrez à votre client une autre option de paiement pour compléter le paiement
}
);
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™ peut ne pas être disponible sur tous les appareils. Le client SDK Android vous permet de masquer facilement Google Pay™ si tel est le cas. Notre plateforme renverra alors null. Utilisez l'exemple de code suivant pour effectuer cet appel :
// Vérifier la disponibilité de Google Pay™
private void getGooglePayPaymentProduct() {
// la session est une instance déjà initialisée de l'objet GcSession du SDK
session.getPaymentProduct(
this, // Instance du contexte d'application Android
Constants.PAYMENTPRODUCTID_GOOGLEPAY,
paymentContext,
this. // Mise en œuvre de OnPaymentProductCallCompleteListener
);
}
/**
* Mise en œuvre de la méthode de rappel pour récupérer un moyen de paiement
*/
@Override
public void onPaymentProductCallComplete(PaymentProduct paymentProduct) {
if (paymentProduct != null) {
if (Constants.PAYMENTPRODUCTID_GOOGLEPAY.equals(paymentProduct.getId())) {
// Google Pay™ est disponible, affichez le bouton Google Pay™.
} else {
// Un produit différent a été récupéré..
}
} else {
// Google Pay™ n'est pas disponible, nous ne devrions pas l'afficher.
}
}
2. Se conformer à l'authentification forte du client (SCA)
Si votre acquéreur est dans l'Espace économique européen (EEE), vous devez soumettre les informations du pays/région de la banque acquéreuse à Google dans TransactionInfo.countryCode. Cela garantira votre conformité aux exigences de SCA. Google Pay™ renverra les données de transaction correspondantes en fonction du pays/région de votre acquéreur.
L'appel d'API du moyen de paiement depuis le SDK Client ou le serveur-à-serveur renvoie le acquirerCountry que vous devez envoyer à Google. Le code suivant montre comment :
- obtenir le code du pays de l'acquéreur à partir de la réponse du moyen de paiement et l'utiliser pour initialiser Google Pay™.
- obtenir le champ de résultat de l'objet transactionInfo.
- spécifier les paramètres totalPrice et MerchantName (comme décrit dans l'étape 8.3 du tutoriel Google Pay™ et dans la section Authentification Forte du Client sur le site de documentation de Google).
Trouvez plus d'informations sur la conformité à l'authentification forte du client pour Google Pay™ dans la documentation de l'API Google Pay™ et dans notre guide dédié.
// Obtenir les paramètres de Google Pay™
private JSONObject initializeGooglePayValues(PaymentContext paymentContext, PaymentProduct googlePayProduct) {
JSONObject paymentRequest = new JSONObject();
try {
// Initialiser d'autres valeurs de requête de paiement.
JSONObject transactionInfo = new JSONObject();
transactionInfo.put("totalPriceStatus", "FINAL");
String totalPrice = formatAmount(paymentContext.getAmountOfMoney().getAmount().toString());
transactionInfo.put("totalPrice", totalPrice);
transactionInfo.put("currencyCode", paymentContext.getAmountOfMoney().getCurrencyCode().toString());
if (paymentProduct.getAcquirerCountry() != null) {
transactionInfo.put("countryCode", googlePayProduct.getAcquirerCountry());
}
paymentRequest.put("transactionInfo", transactionInfo);
} catch (JSONException e) {
// Un problème est survenu lors de la génération de l'entrée JSON de paiement.
}
return paymentContext;
}
/**
* Formate le montant utilisé dans la plateforme Connect au format attendu par Google.
*/
private String formatAmount(String amount) {
String formattedAmount = "00" + amount;
formattedAmount = formattedAmount.substring(0, formattedAmount.length() - 2)
+ "."
+ formattedAmount.substring(formattedAmount.length() - 2);
return formattedAmount;
}
3. Afficher le bouton Google Pay™
Si Google Pay™ est disponible, affichez le bouton Google Pay dans votre application. Assurez-vous de suivre les directives de Google sur l'affichage du bouton Google Pay™ et la politique de marque de Google.
4. Obtenir le token de paiement
Pour traiter le paiement réel, vous devez demander le token de paiement à Google. Pour ce faire, utilisez l'extrait de code suivant :
/**
* Cette méthode extrait le token de paiement Google Pay™ de l'objet PaymentData
* qui est renvoyé lorsque l'utilisateur a autorisé le paiement dans la feuille de paiement.
* @param paymentData L'objet paymentData de Google Pay™ qui est renvoyé par la feuille de paiement.
* @return Le token de paiement sous forme de chaîne au format accepté par notre
* API Create Payment.
*/
private String getGooglePayTokenFromPaymentData(PaymentData paymentData) {
String json = paymentData.toJson();
if (json != null && !json.isEmpty()) {
try {
JSONObject paymentDataJson = new JSONObject(json);
return paymentDataJson
.getJSONObject("paymentMethodData")
.getJSONObject("tokenizationData")
.getString("token");
} catch (JSONException e) {
Log.e(TAG, "Le token de paiement n'est pas dans un format JSON valide");
}
} else {
Log.e(TAG, "Seul le PaymentData au format JSON est accepté.");
}
return null;
}
5. Envoyer le token de paiement
Extrayez le token et envoyez-le à votre serveur via le SDK Serveur appel API Create Payment. Vous pouvez fournir le token de deux manières :
- Envoyez le token dans la propriété mobilePaymentMethodSpecificInput.encryptedPaymentData. Assurez-vous d'envoyer également 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 les saisies de l'utilisateur, qui est compilée en fonction du champ de saisie réel. Les détails de paiement chiffrés du client :
- sont chiffrés à nouveau
- envoyés à votre serveur
- enfin à notre serveur
Vous devez utiliser le SDK Android côté client pour créer la valeur chiffrée CustomerInput. Le fieldId du champ de données de paiement chiffré 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 devriez pas fournir ce champ aux utilisateurs.
Requête de paiement avec CustomerInput chiffré
private void createPreparedPaymentRequestGooglePay(String token, PaymentProduct googlePay) {
PaymentRequest paymentRequest = new PaymentRequest();
paymentRequest.setPaymentProduct(googlePay); // C'est l'objet PaymentProduct Google Pay™, qui est le résultat de l'appel getPaymentProduct effectué précédemment
if (token != null && !token.isEmpty()) {
paymentRequest.setValue(Constants.GOOGLE_PAY_TOKEN_FIELD_ID, token);
// Préparez la requête de paiement en chiffrant les valeurs de paiement
session.preparePaymentRequest(
paymentRequest,
this, // Instance du contexte d'application Android
this // Mise en œuvre de OnPaymentRequestPreparedListener
);
} else {
// Informez l'utilisateur qu'une erreur s'est produite
}
}
/**
* Mise en œuvre de la méthode de rappel pour le chiffrement des valeurs de paiement
*/
@Override
public void onPaymentRequestPrepared(PreparedPaymentRequest preparedPaymentRequest) {
if (preparedPaymentRequest != null) {
String encryptedFields = preparedPaymentRequest.getEncryptedFields();
// Envoyez les encryptedFields à votre backend
} else {
// Un problème est survenu, informez l'utilisateur
}
}
Cinématique
- 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.
Test
Consultez nos Cas de test 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.