Accéder directement au contenu
Créez un compte
ou
connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compte
Connectez-vous
Démarrer
Paiements
Revenus
Plateformes et places de marché
Gestion de fonds
Ressources pour les développeurs
Aperçu
À propos des paiements Stripe
Mettre votre intégration à niveau
Analyses des paiements
Paiements en ligne
PrésentationTrouver votre cas d'usageManaged Payments
Utiliser Payment Links
Créer une page de paiement
Développer une intégration avancée
Développer une intégration dans l'application
    Présentation
    Payment Sheet
    Composant Payment Element intégré
    Utiliser les redirections pour les achats intégrés à l'application
    Collecter les adresses
    Cartes bancaires américaines et canadiennes
      Enregistrer des cartes bancaires sans authentification
      Mettre à niveau pour gérer l'authentification
Moyens de paiement
Ajouter des moyens de paiement
Gérer les moyens de paiement
Paiement accéléré avec Link
Interfaces de paiement
Payment Links
Checkout
Elements pour le web
Elements intégrés à l'application
Scénarios de paiement
Gérer plusieurs devises
Tunnels de paiement personnalisés
Acquisition flexible
Orchestration
Paiements par TPE
Terminal
Au-delà des paiements
Constituez votre entreprise
Cryptomonnaies
Financial Connections
Climate
AccueilPaiementsBuild an in-app integrationUS and Canadian cards

Migrer votre intégration de carte bancaire de base

Migrez votre application mobile vers une intégration capable de gérer les demandes bancaires d’authentification par carte.

Si vous avez suivi le guide sur les paiements par carte sans authentification bancaire, votre intégration crée des paiements qui sont refusés lorsque la banque demande au client d’authentifier l’achat.

Si vous commencez à voir de nombreux paiements échoués, comme celui dans le Dashboard ci-dessous, ou associés à un code d’erreur requires_action_not_handled dans l’API, vous devez mettre à niveau votre intégration de base de façon à gérer ces paiements au lieu de les refuser.

Le Dashboard affichant un paiement ayant échoué et indiquant que la banque a exigé une authentification pour ce paiement

Ce guide vous explique comment mettre à niveau l’intégration que vous avez conçue à l’aide du guide précédent de façon à ajouter du code serveur et client invitant l’utilisateur à authentifier son paiement dans une fenêtre modale.

Remarque

Consultez un exemple complet de cette intégration sur GitHub.

Vérifiez si le paiement nécessite une authentification
Côté serveur

Apportez trois modifications au endpoint sur votre serveur qui crée le PaymentIntent :

  1. Supprimez le paramètre error_on_requires_action de façon à ne plus faire échouer les paiements qui nécessitent une authentification. À la place, l’état du PaymentIntent passe à requires_action.
  2. Ajoutez le paramètre confirmation_method pour indiquer explicitement (manuellement) que vous souhaitez confirmer à nouveau le paiement sur le serveur après avoir traité les demandes d’authentification.
  3. Ajoutez le paramètre use_stripe_sdk pour permettre à votre client mobile de traiter les étapes d’authentification supplémentaires.
Command Line
curl
curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d amount=1099 \ -d currency=usd \ -d payment_method_types[]=card \ -d confirm=true \ -d error_on_requires_action=true \ -d payment_method="{{PAYMENT_METHOD_ID}}" \ -d confirmation_method=manual

Ensuite, mettez à jour votre fonction « generate response » pour traiter l’état requires_action au lieu qu’une erreur soit générée :

Command Line
curl
# If the request succeeds, check the # PaymentIntent's `status` and handle # its `next_action`.

Demandez au client de s'authentifier
Côté client

Modifiez ensuite votre code iOS pour que Stripe ouvre une fenêtre modale lorsque votre client doit s’authentifier.

Utilisez handleNextActionForPayment lorsque l’état d’un PaymentIntent est requires_action. Lorsque le PaymentIntent réussit, son état passe à requires_confirmation. Vous devez alors reconfirmer le PaymentIntent sur votre serveur pour finaliser le paiement.

Objective C
- (void)handleResponse:(NSDictionary *)json { if (json[@"error"] != nil) { // Display the error to the customer } else if (json[@"requiresAction"]) { // Payment requires additional actions NSString *clientSecret = json[@"clientSecret"]; STPPaymentHandler *paymentHandler = [STPPaymentHandler sharedHandler]; [paymentHandler handleNextActionForPayment:clientSecret withAuthenticationContext:self returnURL:nil completion:^(STPPaymentHandlerActionStatus status, STPPaymentIntent *paymentIntent, NSError *handleActionError) { switch (status) { case STPPaymentHandlerActionStatusFailed: { // Display handleActionError to the customer break; } case STPPaymentHandlerActionStatusCanceled: { // Canceled break; } case STPPaymentHandlerActionStatusSucceeded: { // The card action has been handled // Send the PaymentIntent ID to your server and confirm it again break; } default: break; } }]; } else { // Display success message } } # pragma mark STPAuthenticationContext - (UIViewController *)authenticationPresentingViewController { return self; }

Reconfirmez le PaymentIntent
Côté serveur

À l’aide du même endpoint configuré plus tôt, confirmez à nouveau le PaymentIntent pour finaliser le paiement et traiter la commande. La tentative de paiement échoue et revient àrequires_payment_methodsi celle-ci n’est pas reconfirmée dans un délai d’une heure.

Command Line
curl
curl https://api.stripe.com/v1/payment_intents/{{PAYMENT_INTENT_ID}}/confirm \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -X "POST"

Testez l'intégration

Utilisez nos cartes de test dans un bac à sable pour vérifier que votre intégration a été correctement mise à jour. Stripe affiche une page d’authentification factice dans un bac à sable qui vous permet de simuler le succès ou l’échec d’une tentative d’authentification. En mode production, la banque contrôle l’interface utilisateur de ce qui s’affiche dans la fenêtre modale.

NuméroDescription
Transaction réussie et paiement effectué immédiatement.
Échoue toujours avec un code de refus de paiement insufficient_funds.
Exige l’authentification, qui dans cette intégration échouera avec un code de refus de paiement authentication_not_handled.
Cette page vous a-t-elle été utile ?
OuiNon
Besoin d'aide ? Contactez le service Support.
Rejoignez notre programme d'accès anticipé.
Consultez notre log des modifications.
Des questions ? Contactez l'équipe commerciale.
LLM ? Lire llms.txt.
Propulsé par Markdoc