Encaissement des paiements par carte
Préparez votre application et votre back-end pour l'encaissement des paiements par carte à l'aide de Stripe Terminal.
La définition d’un tunnel de paiement dans votre application est nécessaire pour encaisser des paiements avec Stripe Terminal. Utilisez le SDK Stripe Terminal pour créer et mettre à jour un PaymentIntent, un objet représentant une session de paiement individuelle.
Conçue pour résister aux défaillances, l’intégration Terminal divise le processus de paiement en plusieurs étapes, dont chacune peut être répétée en toute sécurité :
- Créer un PaymentIntent
- Traitement du paiement. L’autorisation sur la carte du client a lieu lorsque le SDK traite le paiement.
- (Facultatif) Capturer le paiement
Créer un PaymentIntentCôté clientCôté serveur
La première étape dans l’encaissement d’un paiement consiste à démarrer le tunnel de paiement. Lorsque le client commence à payer, votre application doit créer un objet PaymentIntent. Celui-ci représente une nouvelle session de paiement sur Stripe.
Vous pouvez créer un PaymentIntent côté client ou côté serveur.
Utilisez des montants test pour essayer d’obtenir des résultats différents. Un montant se terminant par 00 correspond à un paiement approuvé.
Erreur fréquente
Ne recréez pas un PaymentIntent en cas de refus de carte. Réutilisez plutôt le même PaymentIntent pour éviter les doubles paiements.
Côté client
Créez un PaymentIntent pour votre client :
Avertissement
Si votre application est connectée au Verifone P400, vous ne pouvez pas créer de PaymentIntent à partir du SDK Android. Vous devez créer le PaymentIntent côté serveur, puis récupérer le PaymentIntent dans votre application à l’aide de la méthode Terminal. du SDK.
Côté serveur
Vous pouvez créer le PaymentIntent sur votre serveur si les informations requises pour lancer un paiement ne sont pas facilement accessibles dans votre application.
L’exemple suivant montre comment créer un PaymentIntent sur votre serveur :
Pour les paiements Terminal, le paramètre payment_ doit inclure l’option card_.
Vous pouvez contrôler le tunnel de paiement de la manière suivante :
- Pour contrôler totalement le tunnel de paiement pour les paiements
card_, définissez le paramètrepresent capture_surmethod manual. Cela vous permet d’ajouter une étape de rapprochement avant la réalisation du paiement. - Pour capturer et autoriser simultanément des paiements, définissez le paramètre
capture_surmethod automatic.
Pour accepter des paiements en Australie, vous devez définir lle paramètre capture_ sur automatic ou sur manual_. Pour en savoir plus, consultez notre documentation sur l’Australie. Pour accepter les paiements Interac au Canada, vous devez également inclure interac_ dans payment_. Pour en savoir plus, consultez notre documentation sur le Canada.
Le PaymentIntent contient une clé secrète du client, une clé unique propre à chaque PaymentIntent. Pour utiliser la clé secrète du client, vous devez l’obtenir du PaymentIntent sur votre serveur et la transmettre côté client.
Pour récupérer un PaymentIntent, utilisez la clé secrète du client pour appeler retrievePaymentIntent.
Après avoir récupéré la PaymentIntent, utilisez-la pour appeler processPaymentIntent.
Traiter le paiementCôté client
Vous pouvez traiter immédiatement un paiement avec la carte présentée par un client, ou bien vérifier les informations de carte avant de procéder au traitement du paiement. Dans la plupart des cas, nous recommandons un traitement immédiat, car l’intégration est plus simple et nécessite moins d’appels à l’API. Cependant, si vous souhaitez insérer votre propre logique métier avant d’autoriser la carte, utilisez le flux en deux étapes :collecter et confirmer.
Capturer le paiementCôté serveur
Si vous avez défini capture_ sur manual lors de la création du PaymentIntent à l’étape 1, le SDK renvoie à votre application un PaymentIntent autorisé, mais non capturé. En savoir plus sur la différence entre autorisation et capture.
Assurez-vous que votre application demande à votre back-end de capturer le paiement lorsqu’elle reçoit du SDK un PaymentIntent confirmé. Créez dans votre back-end un endpoint qui accepte un ID de PaymentIntent et envoie à l’API Stripe une demande de capture correspondante :
Si l’appel de capture réussit, l’état du PaymentIntent passe à succeeded.
Remarque
Pour débiter les comptes connectés des frais de plateforme appropriés, inspectez chaque PaymentIntent et modifiez les frais de plateforme, si nécessaire, avant de capturer le paiement manuellement.
Rapprocher les paiements
Pour vérifier l’activité de paiement de votre entreprise, vous pouvez rapprocher les PaymentIntents avec votre système de commande interne sur votre serveur à la fin de chaque journée.
Un PaymentIntent conservant l’état requires_ peut signifier deux choses :
Autorisation inutile sur le relevé de carte bancaire de votre client
- Cause : l’utilisateur abandonne le tunnel de paiement de votre application au milieu d’une transaction
- Solution : si le
PaymentIntentnon capturé n’est associé à aucune commande terminée sur votre serveur, vous pouvez l’annuler. Vous ne pouvez pas utiliser unPaymentIntentannulé pour effectuer des paiements.
Encaissement de fonds incomplet auprès d’un client
- Cause : échec de la requête de votre application signalant à votre back-end de capturer le paiement
- Solution : si le
PaymentIntentnon capturé est associé à une commande terminée sur votre serveur, et aucun autre paiement n’a été encaissé pour la commande (par exemple, un paiement en espèces), vous pouvez le capturer.
Encaisser les pourboires États-Unis uniquement
Aux États-Unis, les utilisateurs admissibles peuvent encaisser des pourboires lors de la capture des paiements.
