Lorsque je crée une session de paiement, j'inclus le user_id dans les métadonnées. Cela me permet de récupérer l'user_id lorsque l' checkout.session.completed
événement est déclenché, dont j'aurai besoin pour enregistrer l'identifiant client Stripe dans la base de données pour cet utilisateur.
Est-ce la bonne approche?
Le problème que j'ai maintenant, c'est que compte tenu de cette logique, chaque fois que le premier paiement est créé, je devrai provisionner l'abonnement dans l' checkout.session.completed
événement, les paiements futurs seront traités par invoice.paid
événement. En effet invoice.paid
, Will ne peut reconnaître l'utilisateur que par son identifiant client, qui est rempli par checkout.session.completed
.
Question:
- Mon approche pour stocker l'identifiant client est-elle correcte ?
- Comment puis-je provisionner l'abonnement à partir de l'
checkout.session.completed
événement pour le premier paiement, puis les futurs paiements sont provisionnés parinvoice.paid
?
Solution du problème
Pour provisionner et surveiller un abonnement, Stripe recommande d'écouter trois événements: checkout.session.completed
, invoice.paid
et invoice.payment_failed
.
Si vous avez besoin d'un user_id
pour provisionner l'abonnement, alors oui, l'ajouter aux métadonnées de la session de paiement est logique.
Lorsque vous obtenez l' invoice.paid
événement, vous pouvez récupérer l'abonnement associé à la subscription
propriété de la facture. Et puis, si nécessaire, vous pouvez trouver la session de paiement pour cet abonnement avec le point de terminaison des sessions de paiement de liste et en transmettant l'ID d'abonnement.
Aucun commentaire:
Enregistrer un commentaire