Modifier les informations de paiement
Découvrez comment mettre à jour le moyen de paiement à utiliser pour les prochaines factures.
Suivez les étapes ci-dessous pour créer une page Checkout qui recueille les informations de paiement de votre client et renvoie un objet Payment Method. Ensuite, utilisez l’API Stripe REST pour mettre à jour le moyen de paiement utilisé en vue de prochaines factures.
Note
Ce guide utilise Checkout pour la mise à jour des moyens de paiement des abonnements, mais vous pouvez aussi implémenter le portail client Billing pour fournir à vos clients un Dashboard hébergé par Stripe, sur lequel ils pourront gérer leur abonnement et leurs informations de facturation.
Configurer StripeCôté serveur
Pour commencer, il vous faut un compte Stripe. Créez un compte.
Utilisez nos bibliothèques officielles pour accéder à l’API Stripe depuis votre application :
Créer une session CheckoutCôté serveur
Pour créer une session en mode configuration, utilisez le paramètre mode
défini sur setup
lors de la création de la session. Vous trouverez la liste complète des paramètres utilisables pour la création d’une session dans la documentation relative à l’API sur les sessions Checkout.
Associez la variable de modèle {CHECKOUT_
à l’URL success_
afin d’obtenir l’ID de session une fois que votre client a terminé sa session Checkout.
Enfin, utilisez le dictionnaire setup_intent_data.metadata pour transmettre le paramètre subscription_
Stripe existant de votre client à la session Checkout. Bien qu’il existe d’autres méthodes pour transmettre ces données à votre serveur, nous utiliserons dans ce guide les métadonnées.
Rediriger vers CheckoutCôté client
Checkout s’appuie sur Stripe.js, la bibliothèque JavaScript de Stripe, pour créer des tunnels de paiement.
Ce code est généralement appelé depuis un gestionnaire d’événements qui se déclenche suite à une action de votre client, par exemple un clic sur le bouton de paiement.
Récupérer la session CheckoutCôté serveur
Une fois que votre client a terminé sa session Checkout, vous devez récupérer l’objet session. Il y a deux façons de procéder :
- De manière asynchrone : en traitant les webhooks
checkout.
, qui contiennent un objet session. En savoir plus sur la configuration des webhooks.session. completed - De manière synchrone : obtenez l’ID de session à partir de l’URL
success_
lorsqu’un utilisateur est redirigé vers votre site. Utilisez l’ID de session pour récupérer l’objet de session.url
Le choix entre ces deux méthodes dépend de votre tolérance aux abandons de paiement. En effet, il peut arriver que vos clients n’arrivent pas à l’URL success_
après la réussite d’un paiement. Ils peuvent par exemple fermer l’onglet de leur navigateur avant d’être correctement redirigés. Si votre intégration traite les webhooks, elle ne sera pas exposée à ce type d’abandon de paiement.
Après avoir récupéré l’objet session, obtenez la valeur de la clé setup_
, qui correspond à l’ID du SetupIntent créé lors de la session Checkout. Un SetupIntent est un objet permettant de configurer les coordonnées de compte bancaire de votre client en vue de paiements futurs.
Exemple de charge utile checkout.
:
{ "id": "evt_1Ep24XHssDVaQm2PpwS19Yt0", "object": "event", "api_version": "2019-03-14", "created": 1561420781, "data": { "object": { "id": "cs_test_MlZAaTXUMHjWZ7DcXjusJnDU4MxPalbtL5eYrmS2GKxqscDtpJq8QM0k", "object": "checkout.session", "billing_address_collection": null, "client_reference_id": null, "customer": "cus_FOsk5sbh3ZQpAU", "customer_email": null, "display_items": [], "mode": "setup", "setup_intent": "seti_1EzVO3HssDVaQm2PJjXHmLlM", "submit_type": null, "subscription": null, "success_url": "https://example.com/success" } }, "livemode": false, "pending_webhooks": 1, "request": { "id": null, "idempotency_key": null }, "type": "checkout.session.completed" }
Prenez note de l’ID du setup_
pour la prochaine étape.
Récupérer le SetupIntentCôté serveur
À l’aide de l’ID de setup_
, récupérez l’objet SetupIntent à l’aide de l’endpoint /v1/setup_intents/:id.
Exemple de réponse :
{ "id": "seti_1EzVO3HssDVaQm2PJjXHmLlM", "object": "setup_intent", "application": null, "cancellation_reason": null, "client_secret": null, "created": 1561420781, "customer": "cus_FOsk5sbh3ZQpAU", "description": null, "last_setup_error": null, "livemode": false, "metadata": { "subscription_id": "sub_8epEF0PuRhmltU" }, "next_action": null, "on_behalf_of": null, "payment_method": "pm_1F0c9v2eZvKYlo2CJDeTrB4n", "payment_method_types": [ "card" ], "status": "succeeded", "usage": "off_session" }
Notez les ID customer
, subscription_
et payment_
en vue des prochaines étapes.
Note
Si vous récupérez ces informations de manière synchrone auprès de l’API Stripe (et non en traitant des webhooks), vous pouvez combiner cette étape-ci à l’étape précédente en développant l’objet SetupIntent dans votre requête au endpoint /v1/checkout/session. De cette manière, vous n’avez pas besoin d’effectuer deux requêtes réseau différentes pour accéder à l’ID du PaymentMethod qui vient d’être créé.
Configurer un moyen de paiement par défautCôté serveur
Il existe deux manières de paramétrer l’utilisation d’un moyen de paiement pour les prochaines factures :
- Le configurer en tant que paramètre
invoice_
de l’objet Customersettings. default_ payment_ method - Le configurer en tant que paramètre
default_
de l’objet Subscriptionpayment_ method
Si vous définissez le paramètre invoice_
sur l’objet Customer, toutes les factures à venir de ce client seront réglées avec le moyen de paiement spécifié.
Définir le paramètre default_
de l’objet Subscription revient à dire que toutes les factures à venir pour cet abonnement seront réglées avec le moyen de paiement spécifié, et ce, quel que soit le paramètre invoice_
défini au niveau de l’objet Customer associé.
Définir le paramètre invoice_settings.default_payment_method de l’objet Customer
À l’aide des ID de client et de PaymentMethod récupérés, définissez le paramètre invoice_
de l’objet Customer à partir de l’endpoint /v1/customers/:id.
Toutes les factures à venir pour ce client débiteront désormais le nouvel objet PaymentMethod créé à l’aide de la session Checkout du mode configuration.
Définir le paramètre default_payment_method de l’objet Subscription
À l’aide des ID d’abonnement et de PaymentMethod récupérés, définissez le paramètre default_
de l’abonnement à partir de l’endpoint /v1/subscriptions/:id.
Toutes les factures à venir pour cet abonnement débiteront désormais le nouvel objet PaymentMethod créé à l’aide de la session Checkout du mode configuration, et ce, quel que soit le paramètre invoice_
de l’objet Customer associé.
Voir aussi
Félicitations ! Vous pouvez désormais définir un moyen de paiement par défaut pour les prochaines factures. Lors du test de votre intégration à l’aide de votre clé API de test, vous pouvez utiliser un numéro de carte de test pour vérifier que tout fonctionne correctement.