Accepter un paiement par GrabPay
Découvrez comment accepter les paiements effectués à l'aide de GrabPay, un moyen de paiement très répandu en Asie du Sud-Est.
Remarque
À l’heure actuelle, les abonnements et l’utilisation de GrabPay pour les paiements ultérieurs ne sont pas pris en charge. Contactez le service Support de Stripe pour toute demande d’assistance portant sur ces fonctionnalités.
GrabPay est un moyen de paiement à usage unique. Dans le cadre d’un paiement avec GrabPay, le client est redirigé depuis votre application vers GrabPay, il autorise le paiement, puis il revient sur votre application. Vous recevez alors une notification immédiate vous indiquant si le paiement a abouti ou échoué.
Remarque
En savoir plus sur l’activation de GrabPay dans le Dashboard.
Configurer StripeCôté serveur
Pour commencer, vous devez créer un compte Stripe. Inscrivez-vous maintenant.
Utilisez nos bibliothèques officielles pour accéder à l’API Stripe depuis votre application :
Créer un PaymentIntentCôté serveur
Un PaymentIntent représente votre intention d’encaisser un paiement auprès d’un client et suit le cycle de vie du processus de paiement.
Créez un PaymentIntent
sur votre serveur et précisez le montant à encaisser dans le champ amount
et sgd
ou myr
en tant que devise. Puisqu’il n’y a pas de montant minimum sur GrabPay, le montant du paiement peut être simplement de 1. Si vous disposez déjà d’une intégration Payment Intents, ajoutez grabpay
à la liste des types de moyens de paiement.
Récupérer la clé secrète du client
Le PaymentIntent contient une clé secrète à utiliser côté client pour finaliser le processus de paiement en toute sécurité. Vous pouvez adopter différentes approches pour transmettre cette clé secrète côté client.
Soumettre le paiement à StripeCôté client
Lorsqu’un client clique pour payer avec GrabPay, utilisez Stripe.js pour soumettre le paiement à Stripe. Stripe.js est la bibliothèque JavaScript de base pour créer les tunnels de paiement : elle gère automatiquement les opérations complexes telles que la redirection décrite ci-dessous, et facilite l’extension de votre intégration à d’autres moyens de paiement. Incluez le script Stripe.js sur votre page de paiement en l’ajoutant à la section head
de votre fichier HTML.
<head> <title>Checkout</title> <script src="https://js.stripe.com/basil/stripe.js"></script> </head>
Créez une instance de Stripe.js avec le code JavaScript suivant sur votre page de paiement.
// Set your publishable key. Remember to change this to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe(
);'pk_test_TYooMQauvdEDq54NiTphI7jx'
Pour créer un paiement côté client, ajoutez un bouton de paiement avec GrabPay et utilisez stripe.
pour gérer la redirection depuis votre page et permettre le paiement.
<button type="button" id="grabpay-button">Pay with GrabPay</button> <div id="error-message"></div>
const button = document.getElementById('grabpay-button'); button.addEventListener('click', async function() { // By this point, the PaymentIntent should have already been created // Pass the clientSecret of the PaymentIntent to confirmGrabPayPayment stripe.confirmGrabPayPayment(clientSecret, { // Return URL where the customer should be redirected after the authorization return_url: 'https://example.com/checkout/complete', }); });
Transmettez la clé secrète du client de l’objet PaymentIntent
que vous avez créé à l’étape 2 par stripe.
.
Ajoutez également une URL return_
à cette fonction pour indiquer à Stripe vers quelle page rediriger l’utilisateur une fois son paiement effectué sur le site Web de Grab.
Lorsque votre client effectue un paiement, Stripe le redirige vers l’URL return_
et inclut les paramètres de requête d’URL suivants. La page de redirection peut utiliser ces paramètres pour récupérer l’état du PaymentIntent et ainsi afficher l’état du paiement pour le client.
Lorsque vous spécifiez une URL return_
, vous pouvez également ajouter vos propres paramètres de requête à utiliser sur la page de redirection.
Paramètre | Description |
---|---|
payment_ | Identifiant unique du PaymentIntent . |
payment_ | La clé secrète du client de l’objet PaymentIntent . Pour les intégrations d’abonnements, le client_secret est également exposé sur l’objet Invoice via confirmation_ |
Lorsque le client est redirigé vers votre site, vous pouvez utiliser le payment_
pour interroger le PaymentIntent et communiquer l’état de la transaction à votre client.
<h2>Payment result</h2> <div class="payment-result"> </div> <script> // Check if we're returning from a redirect. const url = new URL(window.location.href); const paymentIntentClientSecret = url.searchParams.get( "paymentIntentClientSecret" ); if (paymentIntentClientSecret) { stripe.retrievePaymentIntent(paymentIntentClientSecret).then(function(result) { const paymentIntent = result.paymentIntent; document.querySelector(".payment-result").textContent = paymentIntent.status; }); } </script>
Tester votre intégration
Lors du test, la redirection côté client vous dirige vers une page de paiement de test GrabPay hébergée par Stripe, où vous pouvez autoriser ou refuser le paiement test.
Devises prises en charge
Les utilisateurs de Stripe en Malaisie et à Singapour peuvent accepter les paiements GrabPay de leurs clients en Malaisie et à Singapour respectivement. Les devises prises en charge et les limites applicables aux transactions GrabPay sont précisées ci-dessous :
Pays | Pays du client | Devise prise en charge | Limites de transaction |
---|---|---|---|
Singapour (SG) | Singapour (SG) | SGD | GrabPay SG |
Malaisie (MY) | Malaisie (MY) | MYR | GrabPay MY |