Paiements par carte sans authentification bancaire
Créez une intégration mobile plus simple avec des limites régionales.
Cette intégration prendre en charge les entreprises acceptant uniquement les cartes bancaires du Canada ou des États-Unis. Sa mise en place est plus simple, mais elle ne permet pas de se développer à l’international client.
Comment fonctionne cette intégration ?
Dans certaines régions comme l’Europe ou l’Inde, les banques exigent souvent une authentification à deux facteurs pour confirmer un achat. Si vous exercez votre activité principalement aux États-Unis et au Canada, vous pouvez simplifier votre intégration en ignorant l’authentification de la carte, rarement exigée par les banques dans ces régions.
Lorsqu’une banque exige une authentification, au lieu de gérer l’authentification pour effectuer le paiement de manière asynchrone, cette intégration basique génère automatiquement un refus de paiement (similaire à un refus de carte bancaire). L’avantage est que la réussite ou l’échec du paiement sont immédiats et que la confirmation de paiement a lieu sur le serveur. De cette manière, vous pouvez immédiatement gérer les actions post-paiement sans webhook.
En quoi diffère-t-elle de l'intégration mondiale ?
Fonctionnalité | Cette intégration | Intégration mondiale |
---|---|---|
Formulaire de paiement personnalisé | ✔ | ✔ |
Aucune donnée sensible ne transite sur votre serveur | ✔ | ✔ |
Fonctionne pour vos clients étasuniens et canadiens | ✔ | ✔ |
Refuse le paiement si les informations de cartes bancaires sont incorrectes ou les fonds insuffisants | ✔ | ✔ |
Refuse le paiement si la banque demande une authentification | ✔ | |
Fonctionne pour vos clients internationaux | ✔ | |
Gère automatiquement les paiements par carte nécessitant une authentification bancaire | ✔ | |
Webhooks recommandés pour les tâches post-paiement | ✔ | |
Possibilité d’intégrer facilement d’autres moyens de paiement (par exemple les prélèvements bancaires) | ✔ |
Les entreprises en pleine croissance ou qui travaillent à l’international devraient opter pour notre intégration mondiale afin de prendre en charge les demandes d’authentification à deux facteurs des banques et permettre à leurs clients d’utiliser davantage de moyens de paiement.
Installer le SDK iOS de StripeCôté client
Tout d’abord, vous avez besoin d’un compte Stripe. Inscrivez-vous dès maintenant.
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
Pour obtenir de plus amples informations sur la version la plus récente du SDK et ses versions antérieures, consultez la page des versions sur GitHub. Pour recevoir une notification lors de la publication d’une nouvelle version, surveillez les versions à partir du référentiel.
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.
Remarque
Utilisez vos clés de test lors de vos activités de test et de développement et vos clés du mode production pour la publication de votre application.
Collecter les informations de carte bancaireCôté client
Côté client, collectez les données de carte bancaire voulues de manière sécurisée avec le CardInputWidget, un composant d’interface utilisateur prêt à l’emploi fourni par le SDK, qui collecte le numéro de carte, la date d’expiration, le CVC et le code postal.
Le STPPaymentCardTextField se charge de la validation et du formatage en temps réel.
Créez une instance du composant de la carte et un bouton Payer avec le code suivant :
Exécutez votre application et assurez-vous que votre page de paiement affiche le composant card. Lorsque le client appuie sur Payer, appelez createPaymentMethod pour collecter les informations de la carte et créer un PaymentMethod. Envoyez l’ID du PaymentMethod à votre serveur.
Effectuer un paiementCôté serveur
Configurez un endpoint sur votre serveur pour recevoir la requête du client. Utilisez les bibliothèques officielles pour accéder à l’API Stripe depuis votre serveur :
Stripe utilise un objet PaymentIntent pour représenter votre intention de collecter le paiement d’un client. Cet objet suit les tentatives de débit et les changements d’état de paiement tout au long du processus.
Créez un endpoint HTTP pour répondre à la requête de l’étape 2. Dans cet endpoint, décidez de quel montant débiter votre client. Pour créer un paiement, créez un PaymentIntent en utilisant l’ID de PaymentMethod de l’étape 2 avec le code suivant :
Décidez toujours du montant à débiter côté serveur, un environnement sécurisé, plutôt que côté client. Cela permet d’éviter que des clients malveillants puissent définir leurs propres prix.
Avertissement
Si vous réglez le paramètre error_on_requires_action sur true
lors de la confirmation d’un paiement et que ce paiement nécessite une authentification à deux facteurs de la part du client, le paiement échouera automatiquement.
Réponse de l’API Payment Intents
Lorsque vous effectuez un paiement à l’aide de l’API, la réponse indique l’état du PaymentIntent. L’état d’un paiement réussi est : succeeded
.
{ "id": "pi_0FdpcX589O8KAxCGR6tGNyWj", "object": "payment_intent", "amount": 1099, "charges": { "object": "list", "data": [ { "id": "ch_GA9w4aF29fYajT", "object": "charge", "amount": 1099, "refunded": false, "status": "succeeded", } ] }, "client_secret": "pi_0FdpcX589O8KAxCGR6tGNyWj_secret_e00tjcVrSv2tjjufYqPNZBKZc", "currency": "usd", "last_payment_error": null, "status": "succeeded", }
Si le paiement échoue, la réponse inclut le code de l’erreur et un message d’erreur. Voici un exemple de paiement en échec car la carte bancaire utilisée nécessitait une authentification à deux facteurs.
{ "error": { "code": "authentication_required", "decline_code": "authentication_not_handled", "doc_url": "https://docs.stripe.com/error-codes#authentication-required", "message": "This payment required an authentication action to complete, but `error_on_requires_action` was set. When you're ready, you can upgrade your integration to handle actions at https://stripe.com/docs/payments/payment-intents/upgrade-to-handle-actions.", "payment_intent": { "id": "pi_1G8JtxDpqHItWkFAnB32FhtI", "object": "payment_intent", "amount": 1099, "status": "requires_payment_method", "last_payment_error": { "code": "authentication_required", "decline_code": "authentication_not_handled", "doc_url": "https://docs.stripe.com/error-codes#authentication-required", "message": "This payment required an authentication action to complete, but `error_on_requires_action` was set. When you're ready, you can upgrade your integration to handle actions at https://stripe.com/docs/payments/payment-intents/upgrade-to-handle-actions.", "type": "card_error" }, }, "type": "card_error" } }
Tester l'intégration
Stripe fournit plusieurs cartes de test que vous pouvez utiliser dans un environnement de test pour vous assurer que cette intégration est prête. Utilisez-les avec n’importe quels code CVC, code postal et date d’expiration future.
Numéro | Description |
---|---|
Fait aboutir le paiement et le traite immédiatement. | |
Échoue toujours avec le code de refus de paiement insufficient_ . | |
Exige l’authentification, qui dans cette intégration échouera avec un code de refus de paiement authentication_ . |
Consultez la liste complète des cartes de test.
Mettre à niveau votre intégration pour prendre en charge l'authentification de cartes bancaires
Félicitations ! Vous avez réalisé une intégration capable de gérer les paiements par carte bancaire classiques. Veuillez noter que cette intégration génère des refus de paiement pour les cartes qui nécessitent une authentification lors du paiement.
Si de nombreux paiements apparaissent à l’état Failed
dans le Dashboard, il est temps de mettre à niveau votre intégration. L’intégration complète de Stripe traite ces paiements au lieu de les refuser automatiquement.