Accepter un paiement en utilisant des paiements et transferts distincts
Utilisez des paiements et transferts distincts pour accepter des paiements.
Créez des paiements et transferts distincts pour transférer des fonds vers plusieurs comptes connectés, ou lorsqu’un utilisateur spécifique n’est pas connu au moment du paiement. Le paiement sur votre compte de plateforme est dissocié des transferts vers vos comptes connectés. Avec ce type de paiement :
- Vous créez un paiement sur le compte de votre plateforme et transférez également des fonds à vos comptes connectés. Le paiement apparaît comme tel sur votre compte, et il y a également des transferts vers des comptes connectés (dont vous déterminez le montant), qui sont prélevés du solde de votre compte.
- Vous pouvez transférer des fonds vers plusieurs comptes connectés.
- 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.
Ce type de paiement aide les marketplaces à repartir les paiements entre plusieurs parties. Par exemple, une plateforme de livraison de restaurants qui répartit les paiements entre le restaurant et le livreur.
Remarque
{ % if $conditions.can_access_payment_intent_transit_balances_docs %}Ségrégation des fonds{ % sinon / %}La ségrégation des fonds{ % /if %} est une fonctionnalité d’aperçu privé qui conserve les fonds de paiement dans un état de conservation protégé avant que vous ne les transfériez vers des comptes connectés. Cela permet d’éviter que les fonds alloués ne soient utilisés pour des opérations de plateforme sans rapport. Contactez votre gestionnaire de compte Stripe pour demander l’accès.
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 |
|---|---|---|---|
| line_items | La liste des articles achetés par le client. | Requis sous condition | Cet attribut représente les éléments que le client achète. Les éléments sont affichés sur la page de paiement hébergée par Stripe. |
| payment_intent_data[transfer_group] | Chaîne unique qui identifie un paiement comme faisant partie d’un groupe. | Oui | Lorsque Stripe crée automatiquement un paiement pour un PaymentIntent avec une valeur transfer_, la même valeur est affectée au transfer_ du paiement. |
| success_url | Une URL valide | Oui | Stripe redirige le client vers l’URL de réussite après un paiement réussi et remplace la chaîne {CHECKOUT_ par l’ID de session Checkout. Vous pouvez l’utiliser pour récupérer la session Checkout et inspecter son état afin de choisir ce que vous voulez montrer au client. Vous pouvez également ajouter vos propres paramètres de requête, qui persistent tout au long du processus de redirection. Consultez la page Personnaliser le comportement de redirection avec une page hébergée par Stripe pour en savoir plus. |
Gérez les événements post-paiement pour les paiements et transferts distinctsCô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.
Écoutez ces événements au lieu d’attendre un rappel du client. Côté client, le client final peut fermer la fenêtre du navigateur ou quitter l’application avant l’exécution du rappel. Certains moyens de paiement peuvent également nécessiter de 2 à 14 jours pour la confirmation du paiement. Configurer votre intégration pour écouter les événements asynchrones vous permet 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.
Créer un transfertCôté serveur
Sur votre serveur, envoyez des fonds de votre compte vers un compte connecté en créant un transfert et en précisant le transfer_ utilisé.
Les montants des transferts et des paiements ne doivent pas nécessairement correspondre. Vous pouvez fractionner un paiement en plusieurs transferts ou inclure plusieurs paiements dans un même transfert. L’exemple suivant illustre la création d’un transfert supplémentaire associé au même transfer_.
Options de transfert
Vous pouvez attribuer n’importe quelle valeur à la chaîne transfer_, mais elle doit représenter une seule action commerciale. Vous pouvez également effectuer un transfert sans paiement associé ou sans transfer_, par exemple, lorsque vous devez payer un fournisseur, mais qu’il n’y a pas de paiement client associé.
Remarque
Le paramètre transfer_ identifie uniquement les objets associés. Il n’affecte aucune fonctionnalité standard. Pour empêcher l’exécution d’un transfert avant que les fonds du paiement associé ne soient disponibles, utilisez l’attribut source_ du transfert.
Par défaut, une demande de transfert échoue lorsque le montant dépasse le solde de compte disponible de la plateforme. Stripe ne relance pas automatiquement les demandes de transfert en échec.
Vous pouvez éviter les échecs des demandes de transfert pour les transferts associés à des paiements. Lorsque vous précisez le paiement associé comme source_transaction du transfert, la demande de transfert aboutit automatiquement. Cependant, nous n’exécutons pas le transfert tant que les fonds provenant de ce paiement ne sont pas disponibles sur le compte de la plateforme.
Remarque
Si vous utilisez les paiements et transferts distincts, tenez compte de cela lorsque vous planifiez la fréquence de vos virements. Les virements automatiques peuvent interférer avec les transferts qui n’ont pas de source_ définie.
Disponibilité géographique
Stripe prend en charge des paiements et transferts distincts dans les régions suivantes :
Dans la plupart des cas, votre plateforme et tout compte connecté doivent se trouver dans la même région. Toute tentative de transfert de fonds à travers une frontière non autorisée renvoie une erreur. Pour des informations sur la prise en charge des transferts transfrontaliers, consultez la section transferts transfrontaliers. Vous devez utiliser les transferts uniquement en combinaison avec les cas d’usage autorisés pour les débits, rechargements et frais. Utilisez les paiements et transferts distincts pour les comptes connectés qui ont accès au Dashboard Express ou qui n’ont aucun accès au Dashboard.
Étapes suivantes
Ensuite, apprenez à collecter les commissions de la plateforme depuis vos comptes connectés.