Accepter un paiement en utilisant le paiement indirect
Utilisez les paiements indirects pour accepter des paiements.
Créez des paiements indirects lorsque les clients effectuent des transactions sur votre plateforme pour des produits ou des services proposés par vos comptes connectés et transférez immédiatement des fonds vers vos comptes connectés. Avec ce type de paiement :
- Vous créez un paiement sur le compte de votre plateforme.
- Vous déterminez si ces fonds sont à transférer partiellement ou en totalité dans votre compte connecté.
- Vous êtes le marchand officiel, et le solde de votre compte est débité pour couvrir les frais Stripe, les remboursements et les rétrofacturations.
À certaines exceptions près, si votre plateforme et un compte connecté ne se trouvent pas dans la même région, vous devez spécifier que le compte connecté est l’entité de règlement à l’aide du paramètre on_behalf_of sur le Payment Intent.
Ce guide vous montre comment créer une Session Checkout hébergée par Stripe. Vous pouvez également utiliser des Stripe Elements ou l’API.
Créer une session CheckoutCôté serveur
Une session Checkout contrôle ce que le client voit dans le formulaire de paiement, tel que les postes, le montant de la commande, la devise et les moyens de paiement acceptés. Ajoutez à votre site Web un bouton de paiement qui appelle un endpoint côté serveur pour créer une session Checkout.
Sur votre serveur, créez une session Checkout et redirigez votre client vers l’URL renvoyée dans la réponse.
| Paramètres | Valeur | Obligatoire | Description |
|---|---|---|---|
| payment_intent_data[transfer_data] | destination | Oui | Débiter indirect. Un paiement indirect désigne un paiement traiter sur la plateforme et pour lequel les fonds sont ensuite immédiatement et automatiquement transférer vers le solde en attente du compte connecté. |
| line_items | Une liste de jusqu’à 100 articles | Oui | Les élément achetés par votre client. Ces élément sont affichés dans le formulaire de paiement intégré. |
| success_url | Une URL valide | Oui | URL vers laquelle le client est redirigé une fois qu’il a effectué un paiement. Utilisez la valeur de {CHECKOUT_ pour récupérer la session Paiement et inspectez son état afin de décider ce qu’il doit afficher à votre client. Vous pouvez également ajouter des paramètres de requête personnalisés, qui persistent tout au long du processus de redirection. |
| payment_intent_data[application_fee_amount] | Une somme d’argent | Requis pour Connect | Le montant que votre plateforme offres de prélever sur la transaction. Le montant total des débiter est immédiatement transférer de la plateforme vers le compte connecté spécifié par transfer_ après la capture des débiter. Le montant application_ est ensuite retransféré vers la plateforme, et les frais Stripe sont déduits du montant de la plateforme. |
Gérer les événements post-paiement pour les paiements indirectsCôté serveur
Stripe envoie un événement checkout.session.completed à l’issue du paiement. Utilisez un webhook pour recevoir ces événements et exécuter des actions en conséquence, comme l’envoi d’un e-mail de confirmation de commande à votre client, l’enregistrement de la vente dans une base de données ou le lancement d’un flux de livraison.
Nous vous conseillons d’écouter ces événements plutôt que d’attendre un rappel du client. Côté client, il arrive en effet que l’utilisateur ferme la fenêtre de son navigateur ou quitte l’application avant l’exécution du rappel. Avec certains moyens de paiement, la confirmation du paiement peut par ailleurs prendre entre 2 et 14 jours. Configurer votre intégration de manière à ce qu’elle écoute les événements asynchrones vous permettra d’accepter plusieurs moyens de paiement avec une seule intégration.
Gérez les événements suivants lors de l’encaissement de paiements avec Checkout :
| Evènements | Description | Étapes suivantes |
|---|---|---|
| checkout.session.completed | Le client a autorisé le paiement en envoyant le formulaire Checkout. | Attendez que le paiement aboutisse ou échoue. |
| checkout.session.async_payment_succeeded | Le paiement du client a abouti. | Traitez la commande de biens ou de services de votre client. |
| checkout.session.async_payment_failed | Le paiement a été refusé ou a échoué pour une autre raison. | Contactez le client par e-mail et demandez-lui de passer une nouvelle commande. |
Ces événements incluent tous l’objet Checkout Session. Une fois le paiement effectué, le PaymentIntent passe de état sous-jacent processing à succeeded ou à un état d’échec.
Étapes suivantes
Ensuite, apprenez à collecter les commissions de la plateforme depuis vos comptes connectés.