Configurer des paiements futurs
Comment enregistrer les informations de paiement lors d’une session Checkout et débiter vos clients ultérieurement.
Vous pouvez enregistrer les informations de paiement d’un client en vue d’une utilisation ultérieure sans collecter de paiement initial à l’aide du mode de configuration de la session Checkout. Cette fonction est utile si vous souhaitez configurer des paiements dès l’inscription de vos clients afin de les débiter plus tard, lorsqu’ils sont hors ligne.
Utiliser le mode de configurationCôté serveur
Transmettez mode=setup lors de la création de la session Checkout.
Affichez ensuite votre page de paiement comme d’habitude.
Récupérer le moyen de paiementCôté serveur
Une fois que le client a terminé sa session Checkout, gérez le webhook checkout.session.completed, qui contient l’objet Session. En savoir plus sur la configuration des webhooks.
Une fois que vous avez récupéré l’objet Session :
- Récupérez la valeur de la clé setup_intent, qui correspond à l’ID du SetupIntent créé lors de la session Checkout.
- À l’aide de l’ID
setup_
, récupérez l’objet SetupIntent. L’objet renvoyé contient un ID payment_method que vous pouvez associer à un client à l’étape suivante.intent
Associer le moyen de paiement à un clientCôté serveur
Si vous n’avez pas renseigné de client existant à la création de la session Checkout, utilisez l’ID du PaymentMethod pour associer le PaymentMethod à un client.
Dans le cas contraire, le PaymentMethod sera automatiquement associé au client que vous avez indiqué lors de la création de la session Checkout.
Débiter ultérieurement le moyen de paiement enregistréCôté serveur
Une fois que vous avez associé le PaymentMethod à un client, vous pouvez effectuer un paiement hors session à l’aide d’un PaymentIntent :
- Définissez customer sur l’ID du client et payment_method sur l’ID du PaymentMethod.
- Définissez off_session sur
true
pour indiquer que le client ne se trouve pas dans votre tunnel de paiement lors d’une tentative de paiement, et qu’il ne peut donc pas répondre à une demande d’authentification effectuée par un partenaire, comme un émetteur de cartes, une banque ou un autre établissement de paiement. Si un partenaire demande une authentification dans le tunnel de paiement, Stripe demande une exemption en s’appuyant sur les informations utilisée par le client pendant une session précédente. Si les conditions d’exemption ne sont pas remplies, le PaymentIntent peut renvoyer une erreur. - Définissez la valeur de la propriété confirm du PaymentIntent sur
true
. Le PaymentIntent est alors immédiatement confirmé après sa création.
Lorsqu’une tentative de paiement échoue, la requête échoue également avec un code d’état HTTP 402. L’état du PaymentIntent est requires_payment_method. Invitez votre client à revenir dans l’application (par e-mail ou par une notification dans l’application, par exemple) et redirigez-le vers une nouvelle session Checkout afin qu’il sélectionne un autre moyen de paiement.