Enregistrer le moyen de paiement d'un client sans effectuer de paiement
Apprenez à enregistrer un moyen de paiement et à le débiter plus tard.
L’API Checkout Sessionsen configurationmode vous permet d’enregistrer les détails de paiement d’un client sans paiement initial. Cette fonction est utile si vous souhaitez accueillir des clients dès maintenant, configurer leurs paiements et les débiter ultérieurement à l’aide de l’API Payment Intents, lorsqu’ils ne sont pas en ligne.
Utilisez cette intégration pour configurer des paiements récurrents ou créer des paiements ponctuels dont le montant doit être déterminé ultérieurement, généralement après la réception de votre service par le client.
Transactions en présence de la carte
Les transactions effectuées par carte bancaire, telles que la collecte des informations de carte via le terminal Stripe utilisent un processus différent pour l’enregistrement du moyen de paiement.
Conformité
Lorsque vous enregistrez les informations de paiement d’un client, vous êtes responsable du respect de l’ensemble des lois, réglementations et règles du réseau en vigueur. Ces exigences s’appliquent en général si vous souhaitez enregistrer un moyen de paiement pour une utilisation future, par exemple en l’affichant dans Checkout pour un achat ultérieur ou en débitant ce moyen de paiement lorsque le client n’utilise pas activement votre site internet ou votre application. Ajoutez à votre site ou application des conditions précisant comment vous comptez enregistrer les moyens de paiement et permettant aux clients d’y consentir.
Lorsque vous enregistrez un moyen de paiement, vous ne pouvez l’utiliser que pour l’usage spécifique indiqué dans vos conditions. Pour débiter un moyen de paiement lorsqu’un client est hors ligne et l’enregistrer comme option pour de futurs achats, vous devez recueillir explicitement le consentement du client pour cet usage. Par exemple, affichez une case à cocher « Enregistrer mon moyen de paiement pour une utilisation ultérieure » afin d’obtenir ce consentement.
Pour facturer un client lorsqu’il n’est pas en ligne, assurez-vous que vos conditions incluent les éléments suivants :
- Le consentement du client vous autorisant à initier un paiement ou une série de paiements en son nom pour les transactions spécifiées.
- Le calendrier et la fréquence prévus des paiements (par exemple, s’il s’agit de versements échelonnés, de paiements d’abonnements ou de recharges ponctuelles).
- La façon dont vous déterminez le montant à payer.
- Vos conditions d’annulation, si le moyen de paiement est utilisé dans le cadre d’un abonnement.
Veillez à conserver une trace écrite de l’acceptation de ces conditions par votre client.
Note
Si vous devez utiliser la confirmation manuelle côté serveur ou si votre intégration nécessite de présenter les moyens de paiement séparément, consultez notre guide alternatif.
Configurer StripeCôté serveur
Tout d’abord, créez un compte Stripe ou connectez-vous.
Utilisez nos bibliothèques officielles pour accéder à l’API Stripe depuis votre application :
Créer un objet CustomerCôté serveur
Pour configurer un moyen de paiement en vue de paiements ultérieurs, vous devez l’associer à un objet Customer. Créez un objet Customer lorsque votre client crée un compte auprès de votre entreprise. Les objets Customer permettent de réutiliser des moyens de paiement et de suivre plusieurs paiements.
Utiliser le mode de configurationCôté serveur
Créez une session Checkout avec mode=setup.
Associer le moyen de paiement à un clientCôté serveur
Si vous n’avez pas créé la session Checkout avec un client existant, utilisez l’identifiant du PaymentMethod pour associer le moyen de paiement à un client.
Sinon, le moyen de paiement est automatiquement associé au client que vous avez fourni lors de la création de la session Checkout.
Récupérer le moyen de paiementCôté serveur
Une fois que le client a terminé avec succès sa session Checkout, traitez le webhook checkout.session.completed. Récupérez l’objet Session dans le webhook, puis procédez comme suit :
- Obtenez la valeur de la clé setup_intent, qui est l’identifiant SetupIntent créé lors de la session Checkout.
- Utilisez l’identifiant SetupIntent pour récupérer l’objet SetupIntent. L’objet renvoyé contient un identifiant payment_method que vous pouvez associer à un client à l’étape suivante.
En savoir plus sur la configuration des webhooks.
Débiter ultérieurement le moyen de paiement enregistréCôté serveur
Après avoir rattaché le PaymentMethod à un client, vous pouvez effectuer un paiement hors session à l’aide d’un PaymentIntent .
- Attribuez à customer l’identifiant du client et à payment_method l’identifiant du moyen de paiement.
- Définissez off_session sur
truepour indiquer que le client n’est pas dans votre tunnel de paiement lors d’une tentative de paiement et qu’il ne peut pas réaliser une demande d’authentification faite par un partenaire, tel qu’un émetteur de carte bancaire, une banque ou une autre institution de paiement. Si, pendant votre tunnel de paiement, un partenaire demande l’authentification, Stripe demandera des exemptions en utilisant les informations du client provenant d’une transaction on-session. Si les conditions d’exemption ne sont pas respectées, le PaymentIntent peut générer une erreur. - Attribuez la valeur
trueà la propriété confirm du PaymentIntent, ce qui entraîne une confirmation immédiate lors de la création du PaymentIntent.
If a payment attempt fails, the request also fails with a 402 HTTP status code, and the PaymentIntent status is requires_payment_method. Notify your customer to return to your application (for example, by sending an email or in-app notification) and direct your customer to a new Checkout Session to select another payment method.