Accepter un paiement avec Revolut Pay
Ajoutez la prise en charge de Revolut Pay à votre intégration.
Nous vous recommandons d’utiliser le composant Mobile Payment Element, un formulaire de paiement intégrable, pour ajouter Revolut Pay (et d’autres moyens de paiement) à votre intégration le plus facilement possible.
Ce guide explique comment accepter Revolut Pay depuis votre application mobile native à l’aide de votre propre formulaire de paiement personnalisé.
Le paiement est authentifié lors de la redirection.
Configurer StripeCôté serveurCôté client
Tout d’abord, il vous faut un compte Stripe. Inscrivez-vous.
Côté serveur
Pour cette intégration, votre serveur doit être doté d’endpoints qui communiquent avec l’API Stripe. Utilisez les bibliothèques officielles pour accéder à l’API Stripe depuis votre serveur :
Côté client
Le SDK iOS de Stripe est disponible en open source et fait l’objet d’une documentation complète. Il est également compatible avec les applications prenant en charge iOS 13 et les versions ultérieures.
Remarque
For details on the latest SDK release and past versions, see the Releases page on GitHub. To receive notifications when a new release is published, watch releases for the repository.
Configurez le SDK avec votre clé publiable Stripe au démarrage de votre application. Cela lui permet d’envoyer des requêtes à l’API Stripe.
Créer un PaymentIntentCôté serveurCôté client
Côté serveur
Un PaymentIntent est un objet qui représente votre intention d’encaisser le paiement d’un client et qui suit le cycle de vie du processus de paiement étape par étape.
Pour créer et confirmer un PaymentIntent
sur votre serveur :
- Indiquez le montant à encaisser et la devise.
- Ajoutez
revolut_
à la liste des types de moyens de paiement pour votrepay PaymentIntent
. Assurez-vous que Revolut Pay est activé dans le Dashboard.
Le PaymentIntent renvoyé contient la clé secrète du client, que vous utiliserez pour confirmer le PaymentIntent. Renvoyez cette clé secrète côté client pour permettre son utilisation à l’étape suivante.
Côté client
Côté client, demandez un PaymentIntent auprès de votre serveur et sauvegardez la clé secrète du client qu’il contient.
Soumettre le paiement à StripeCôté client
Lorsqu’un client touche pour payer avec Revolut Pay, confirmez le PaymentIntent
pour finaliser le paiement. Configurez un objet STPPaymentIntentParams
avec la clé secrète du client du PaymentIntent
.
La clé secrète est différente de vos clés API qui servent à authentifier les requêtes de l’API Stripe. Elle doit être utilisée avec prudence, car elle peut servir à réaliser le paiement. Ne l’enregistrez pas, ne l’intégrez pas dans des URL et ne la dévoilez à personne.
Configurer une URL de redirection
Le SDK iOS présente une vue Web dans votre application afin d’effectuer le paiement Revolut Pay. Si vous souhaitez qu’une fois l’authentification effectuée, la vue Web disparaisse automatiquement, sans que votre client ait à la fermer, vous pouvez paramétrer une URL personnalisée ou un lien universel, puis configurer votre délégation d’application de façon à transférer l’URL au SDK.
Transmettez l’URL en tant que return_
lorsque vous confirmez le PaymentIntent. Une fois l’authentification effectuée sur la vue Web, Stripe redirige l’utilisateur vers la return_
.
Confirmer le paiement Revolut Pay
Finalisez le paiement en appelant STPPaymentHandler confirmPayment
. Une vue Web s’affiche pour permettre au client d’effectuer le paiement avec Revolut Pay. Le bloc de finalisation est ensuite appelé avec le résultat du paiement.
Tester votre intégration
Testez votre intégration Revolut Pay en affichant la page de redirection à l’aide de vos clés API de test. Vous pouvez tester la réussite de paiement en l’authentifiant sur la page de redirection. Le PaymentIntent bascule alors de l’état requires_
à succeeded
.
Pour tester un échec d’authentification de l’utilisateur, utilisez vos clés API de test et accédez à la page de redirection. Sur cette page, cliquez sur Échec du paiement test. Le PaymentIntent bascule alors de l’état requires_
à requires_
.
Pour les PaymentIntents capturés manuellement en mode test, le PaymentIntent non capturé expire automatiquement 7 jours après la réussite de l’autorisation.
Échecs de paiement
Revolut Pay uses multiple data points to determine when to decline a transaction (for example, their AI model detected high fraud risk for the transaction, or the customer has revoked your permission to charge them in Revolut Pay).
Dans ce cas, le PaymentMethod est détaché et le statut de l’objet PaymentIntent passe automatiquement à requires_
Hormis le refus d’un paiement, dans le cas d’un PaymentIntent Revolut Pay à l’état requires_
, les clients doivent effectuent le paiement sous 10 minutes une fois qu’ils ont été redirigés vers Revolut Pay. En l’absence d’action sous 10 minutes, le PaymentMethod est détaché et l’état de l’objet PaymentIntent passe automatiquement à requires_
.
Dans ce cas, le composant Element Payment affiche des messages d’erreur et demande à votre client de réessayer avec un autre moyen de paiement.
Codes d’erreur
Le tableau suivant décrit en détail les codes d’erreur courants et les actions recommandées :
Code d’erreur | Action recommandée |
---|---|
missing_ | Consultez le message d’erreur pour en savoir plus sur le paramètre requis. |
payment_ | Ce code peut apparaître dans le champ last_payment_error.code d’un PaymentIntent. Consultez le message d’erreur pour connaître la raison détaillée de l’échec et obtenir une suggestion de traitement de l’erreur. |
payment_ | Spécifiez une URL de retour return_ lors de la confirmation d’un PaymentIntent avec Revolut Pay. |