Utiliser Terminal avec Connect
Stripe Terminal est entièrement compatible avec Connect, ce qui permet à votre plateforme ou place de marché d’accepter les paiements par TPE.
La façon dont Terminal crée des objets API varie selon que vous utilisez des paiements directs ou des paiements indirects. Si vous utilisez des paiements directs, tous les objets de l’API Terminal appartiennent aux comptes connectés. Si vous utilisez des paiements indirects, tous les objets de l’API Terminal sont créés sur votre compte de plateforme. Dans les deux cas, utilisez l’API Locations pour grouper les lecteurs à votre convenance.
Note
Vos comptes Connect Terminal doivent disposer de la fonctionnalité card_payments
pour effectuer des transactions.
Paiements directs
Avec les paiements directs, les objets API appartiennent au compte connecté, et non pas à la plateforme. Le compte connecté assume les frais Stripe, les remboursements et les contestations de paiement.
Dans le Dashboard, vous pouvez visualiser vos données Terminal en vous connectant à votre compte connecté.
Créer des emplacements et des lecteurs Server-side
Avec les paiements directs, vous devez créer les objets Payment appartenant au compte connecté. Vous devez créer d’autres objets API Terminal, tels que Location et Reader, qui appartiennent au même compte connecté.
Pour créer un objet Location appartenant à un compte connecté, utilisez l’en-tête Stripe-Account
.
Avant de pouvoir connecter votre application à un lecteur intelligent, vous devez enregistrer ce lecteur sur un compte Stripe. Pour enregistrer un lecteur sur un compte connecté, utilisez l’en-tête Stripe-Account
.
Créer des tokens de connexion Server-side
Note
Lorsque vous utilisez l’authentification OAuth de Connect, le compte connecté doit être autorisé séparément pour le mode production et le mode test, au moyen de l’ID client de l’application correspondant à chaque mode.
Lorsque vous créez un ConnectionToken pour le SDK Terminal, définissez l’en-tête Stripe-Account
sur le compte connecté acceptant les paiements. Vous pouvez également fournir un paramètre location
afin de contrôler l’accès aux lecteurs. Si vous définissez un emplacement, le ConnectionToken n’est utilisable qu’avec les lecteurs assignés à cet emplacement. Sans emplacement défini, vous pouvez utiliser le ConnectionToken avec tous les lecteurs.
Créer des PaymentIntents Client-side Server-side
Avec les SDK iOS, Android et React Native, vous pouvez créer un PaymentIntent côté client ou côté serveur. Avec le SDK JavaScript, seule la création côté serveur est prise en charge.
Côté client
Lorsque vous créez un PaymentIntent côté client pour les paiements directs, il n’est pas nécessaire de préciser des paramètres supplémentaires : il vous suffit de définir l’en-tête Stripe-Account
sur le compte connecté qui accepte les paiements lorsque vous créez un ConnectionToken. Les SDK iOS, Android et React Native créent le PaymentIntent sur le même compte connecté auquel appartient le ConnectionToken. Pour en savoir plus, consultez la section dédiée à la création de PaymentIntents côté client.
Côté serveur
Le SDK JavaScript exige que le PaymentIntent soit créé sur votre serveur. Pour iOS ou Android, créez le PaymentIntent sur votre serveur si les informations requises pour démarrer un paiement ne sont pas facilement accessibles dans votre application. Pour en savoir plus, consultez la section Créer des Payment Intents côté serveur.
Pour créer un PaymentIntent côté serveur pour les paiements directs, définissez l’en-tête Stripe-Account
sur le compte connecté.
Paiements indirects
Pour les paiements indirects, les objets API, tels que PaymentIntents et Locations, appartiennent au compte de votre plateforme. Chaque paiement crée automatiquement un transfert vers un compte connecté.
Dans le Dashboard, vous pouvez visualiser vos données Terminal directement en vous connectant à votre compte de plateforme.
Créer des emplacements et des lecteurs Server-side
Le meilleur moyen de regrouper les objets Reader par compte connecté consiste à les assigner à des objets Locations. Sur votre compte de plateforme, créez un objet Location pour un compte connecté en utilisant un nom d’affichage permettant d’identifier le compte.
Avant de pouvoir connecter votre application à un lecteur intelligent, vous devez enregistrer ce lecteur sur votre compte de plateforme.
Créer des tokens de connexion Server-side
Lorsque vous créez un ConnectionToken pour le SDK Terminal, utilisez la clé secrète du compte de votre plateforme. Ne définissez pas l’en-tête Stripe-Account
. Fournissez un paramètre location
afin de contrôler l’accès aux lecteurs. Si vous définissez un emplacement, le ConnectionToken n’est utilisable qu’avec les lecteurs assignés à cet emplacement. Sans emplacement défini, vous pouvez utiliser le ConnectionToken avec tous les lecteurs.
Créer des PaymentIntents Client-side Server-side
Pour créer un PaymentIntent avec des paiements indirects, fournissez les paramètres on_behalf_of, transfer_data[destination] et application_fee_amount.
Le paramètre on_behalf_of
correspond à l’ID du compte connecté qui deviendra l’entité de règlement pour le paiement. Pour les transactions Terminal, ce paramètre doit être défini dans les cas où le pays de la plateforme n’est pas le même que celui du compte Connect. Lorsque le paramètre on_behalf_of
est défini, Stripe effectue automatiquement les actions suivantes :
- Règle les paiements dans le pays du compte spécifié, ce qui limite les refus de paiement et évite les conversions de devises.
- Utilise la structure des frais appliquée pour le pays du compte connecté.
- Indique l’adresse et le numéro de téléphone du compte connecté sur le relevé de carte bancaire du client, au lieu de l’adresse et du numéro de téléphone de la plateforme (uniquement si le compte et la plateforme se trouvent dans des pays différents).
Pour le paramètre transfer_data[destination]
, précisez l’ID du compte connecté destinataire du transfert.
Enfin, vous pouvez prélever une commission pour votre plateforme en renseignant le paramètre application_fee_amount.
Côté client
Avec les SDK iOS, Android et React Native, vous pouvez créer un PaymentIntent côté client et fournir les paramètres onBehalfOf
, transferDataDestination
et applicationFeeAmount
.
Côté serveur
Le SDK JavaScript exige que le PaymentIntent soit créé sur votre serveur. Pour iOS ou Android, créez le PaymentIntent sur votre serveur si les informations requises pour démarrer un paiement ne sont pas facilement accessibles dans votre application. Pour en savoir plus, consultez la section Créer des Payment Intents côté serveur.