Enregistrer le moyen de paiement d'un client sans effectuer de paiement
Découvrez comment enregistrer un mode de paiement et le débiter ultérieurement.
L’API Checkout Sessions en mode
configuration vous permet d’enregistrer les informations de paiement d’un client sans paiement initial. Cette fonction est utile si vous souhaitez configurer des paiements dès l’inscription de vos clients afin de les débiter à l’aide de l’API Payment Intents plus tard, lorsqu’ils sont hors ligne.
Utilisez cette intégration pour configurer des paiements récurrents ou pour créer des paiements ponctuels dont le montant doit être déterminé ultérieurement, généralement après réception du service par votre client.
Transactions par carte
Les transactions par carte, telles que la collecte des informations de carte via Stripe Terminal, utilisent un processus différent pour enregistrer le mode de paiement.
Conformité
Vous êtes responsable de votre conformité à toutes les lois, réglementations et règles du réseau applicables lorsque vous enregistrez les informations de paiement d’un client. Ces exigences s’appliquent généralement si vous souhaitez enregistrer le mode de paiement de votre client pour une utilisation future, comme en affichant le mode de paiement d’un client dans le flux de paiement pour un achat futur ou en le facturant lorsqu’il n’utilise pas activement votre site Web ou votre application. Ajoutez des conditions à votre site Web ou à votre application qui indiquent comment vous prévoyez enregistrer les informations du mode de paiement et permettez aux clients de donner leur consentement.
Lorsque vous enregistrez un mode de paiement, vous ne pouvez l’utiliser que pour l’usage précis que vous avez prévu dans vos conditions. Pour facturer un mode de paiement lorsqu’un client est hors ligne et l’enregistrer comme option pour des achats futurs, assurez-vous de recueillir explicitement le consentement du client pour cet usage précis. Par exemple, ajoutez une case à cocher indiquant « Enregistrer mon mode de paiement pour une utilisation ultérieure » pour recueillir le consentement du client.
Pour facturer un client lorsqu’il est hors ligne, assurez-vous que vos conditions comprennent les éléments suivants :
- Le consentement du client vous autorisant à prélever un paiement ou une série de paiements en son nom pour des transactions spécifiques.
- Le calendrier et la fréquence des paiements prévus (par exemple, si les frais concernent des versements échelonnés, des paiements d’abonnement ou des recharges non planifiées).
- La façon dont vous déterminez le montant du paiement.
- Vos conditions d’annulation, si le mode de paiement est un service d’abonnement.
Assurez-vous de conserver une trace de l’accord écrit de votre client à ces conditions.
Remarques
Si vous devez utiliser la confirmation manuelle côté serveur ou si votre intégration nécessite la présentation de modes de paiement distincts, consultez notre guide des solutions de remplacement.
Configurer StripeCôté serveur
Tout d’abord, créez un compte Stripe ou connectez-vous à votre compte.
Utilisez nos bibliothèques officielles pour accéder à l’API de Stripe depuis votre application :
Créer un clientCôté serveur
Pour configurer un moyen de paiement pour les paiements futurs, vous devez l’associer à un Customer. Créez un objet Customer
lorsque votre client crée un compte chez vous. 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 de paiement avec mode=setup.
Associer le mode de paiement au client.Côté serveur
Si vous n’avez pas créé la session de paiement avec un client existant, utilisez l’ID du PaymentMethod pour associer le mode de paiement à un client.
Sinon, le mode de paiement est automatiquement associé au client que vous avez fourni lors de la création de la session de paiement.
Récupérer le mode de paiementCôté serveur
Une fois que le client a terminé sa session de paiement, 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 correspond à l’ID SetupIntent créé pendant la session de paiement.
- Utilisez l’ID SetupIntent ID pour récupérer l’objet SetupIntent. L’objet renvoyé contient un ID payment_method que vous pouvez associer à un client à l’étape suivante.
En savoir plus sur la mise en place de webhooks.
Débiter le moyen de paiement ultérieurementCôté serveur
Après avoir associé le PaymentMethod à un client, vous pouvez effectuer un paiement off-session l’aide d’un PaymentIntent :
- Définissez customer sur l’ID du client et payment_method sur l’ID du mode de paiement.
- Assignez la valeur true à
off_
afin d’indiquer que le client n’est pas dans votre flux de paiement lors d’une tentative de paiement et ne peut pas répondre à une demande d’authentification faite par un partenaire, comme un émetteur de cartes, une institution financière ou un autre établissement financier. Si, au cours de votre flux de paiement, un partenaire demande une authentification, Stripe demandera des exemptions à l’aide des informations client provenant d’une transaction effectuée pendant une session précédente. Si les conditions d’exemption ne sont pas respectées, le PaymentIntent peut générer une erreur.session - Assignez la valeur true à la propriété
confirm
du PaymentIntent, ce qui aura pour effet de générer une confirmation immédiate lorsque vous créez le PaymentIntent.
Si une tentative de paiement échoue, la requête échoue également avec un code d’état HTTP 402. L’état de l’objet PaymentIntent est alors requires_payment_method. Invitez votre client à revenir dans votre application (par courriel ou via une notification dans l’application, par exemple) et redirigez votre client vers une nouvelle session de paiement afin qu’il sélectionne un autre mode de paiement.