Créer une page de paiement
Personnalisez le logo, les images et les couleurs.
Prise en charge intégrée d’Apple Pay et de Google Pay.
Visualisez la démonstration pour voir un exemple d’interface hébergée.
Accepter un paiement
Note
Consultez votre profil de plateforme pour déterminer si vous devez opter pour des paiements directs ou des paiements indirects.
Paiements indirects
Dans cet exemple, la plateforme est une place de marché dédiée à la location immobilière, qui doit créer des paiements pour les propriétaires qui louent leurs biens. Vous pouvez également utiliser les paiements indirects dans d’autres applications.
Créer une session Checkout Client and Server
Une session Checkout détermine ce que votre client voit sur le formulaire de paiement intégrable, tel que les postes de la facture, le montant et la devise de la commande, ainsi que les moyens de paiement acceptés.
Ajoutez à votre site web un bouton de paiement qui appelle un endpoint côté serveur afin de créer une session Checkout.
<html> <head> <title>Checkout</title> </head> <body> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>
Sur votre serveur, effectuez l’appel suivant à l’API de Stripe. Après avoir créé une session Checkout, redirigez votre client vers l’URL renvoyée dans la réponse.
curl https://api.stripe.com/v1/checkout/sessions \ -u "
:" \ -d "line_items[0][price]"=sk_test_4eC39HqLyjWDarjtT1zdp7dc\ -d "line_items[0][quantity]"=1 \ -d "payment_intent_data[application_fee_amount]"=123 \ -d "payment_intent_data[transfer_data][destination]"={{PRICE_ID}}\ -d mode=payment \ --data-urlencode success_url="https://example.com/success" \ --data-urlencode cancel_url="https://example.com/failure"{{CONNECTED_ACCOUNT_ID}}
payment_intent_data[transfer_data][destination]
: cet argument indique qu’il s’agit d’un paiement indirect. Un paiement indirect désigne un paiement qui est traité sur la plateforme et pour lequel les fonds sont ensuite immédiatement et automatiquement transférés vers le solde courant du compte connecté. Dans notre exemple de location immobilière, nous voulons créer les conditions permettant au client de payer via la plateforme, et au propriétaire d’être payé par la plateforme.line_items
: cet argument spécifie les articles achetés par votre client. Ces articles sont affichés dans l’interface utilisateur hébergée par Stripe.success_url
: cet argument assure la redirection de l’utilisateur une fois le paiement effectué.cancel_url
: cet argument assure la redirection de l’utilisateur dès lors qu’il annule l’opération.payment_intent_data[application_fee_amount]
: cet argument précise le montant que votre plateforme prévoit de prélever sur la transaction. Une fois le paiement capturé, le montant total du paiement est immédiatement transféré depuis la plateforme vers le compte connecté spécifié par le paramètretransfer_data[destination]
. Le montantapplication_fee_amount
est ensuite retransféré vers la plateforme, et les frais Stripe sont déduits de ce montant.
Pour les paiements indirects, Checkout utilise les paramètres de marque du compte de votre plateforme. Pour en savoir plus, consultez la section Personnaliser l’image de marque.
Note
Cette session crée un paiement indirect. Si vous souhaitez choisir à quel moment les transferts ont lieu ou transférer des fonds vers plusieurs bénéficiaires, utilisez plutôt des paiements et transferts distincts.
Traitement des commandes Server-side
Une fois le paiement effectué, vous devrez procéder à la réalisation de toute commande nécessaire de votre côté. Par exemple, une société de location immobilière mettra en relation le propriétaire du logement avec le locataire une fois le paiement finalisé.
Mise en garde
Ne vous fiez pas uniquement à la redirection vers le paramètre success_url
pour traiter les commandes, car :
- Des utilisateurs malveillants pourraient accéder directement au
success_url
sans payer et obtenir l’accès à vos biens ou à vos services. - Il peut arriver que les clients n’aboutissent pas à l’URL
success_url
après l’exécution d’un paiement. Ils peuvent par exemple fermer l’onglet de leur navigateur avant que la redirection n’ait eu lieu.
Configurez un endpoint de webhook (pour les événements provenant de votre compte) dans votre Dashboard.
Ensuite, créez un endpoint HTTP sur votre serveur pour surveiller les paiements, afin de permettre à vos vendeurs ou prestataires de services de traiter les commandes. Veillez à remplacer la clé secrète du endpoint (whsec_...
) de cet exemple par votre propre clé.
# Using Sinatra. require 'sinatra' require 'stripe' set :port, 4242 # Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
# If you are testing your webhook locally with the Stripe CLI you # can find the endpoint's secret by running `stripe listen` # Otherwise, find your endpoint's secret in your webhook settings in # the Developer Dashboard endpoint_secret = 'whsec_...' post '/webhook' do payload = request.body.read sig_header = request.env['HTTP_STRIPE_SIGNATURE'] event = nil # Verify webhook signature and extract the event. # See https://stripe.com/docs/webhooks#verify-events for more information. begin event = Stripe::Webhook.construct_event( payload, sig_header, endpoint_secret ) rescue JSON::ParserError => e # Invalid payload. status 400 return rescue Stripe::SignatureVerificationError => e # Invalid Signature. status 400 return end if event['type'] == 'checkout.session.completed' session = event['data']['object'] handle_completed_checkout_session(session) end status 200 end def handle_completed_checkout_session(session) # Fulfill the purchase puts session.to_s end'sk_test_4eC39HqLyjWDarjtT1zdp7dc'
Pour en savoir plus, consultez notre guide de traitement des commandes avec Checkout.
Test des webhooks en local
Utilisez l’interface de ligne de commande de Stripe pour tester les webhooks localement.
Tout d’abord, installez la CLI Stripe sur votre ordinateur si vous ne l’avez pas encore fait.
Ensuite, pour vous connecter, exécutez la commande
stripe login
dans la ligne de commande, puis suivez les instructions.Enfin, pour autoriser votre hôte local à recevoir un événement simulé sur votre compte connecté, exécutez la commande
stripe listen --forward-to localhost:{PORT}/webhook
dans une fenêtre de terminal, puis exécutez la commandestripe trigger --stripe-account={{CONNECTED_STRIPE_ACCOUNT_ID}} checkout.session.completed
(ou déclenchez tout autre événement pris en charge) dans une autre fenêtre.
Litiges
Votre plateforme étant l’entité de règlement pour les paiements, elle est à ce titre responsable des litiges. Assurez-vous de prendre connaissance des bonnes pratiques en matière de résolution de litiges.
Créer un abonnement
Vous pouvez créer un paiement récurrent sur un compte connecté à l’aide d’abonnements. Les abonnements sont créés avec des paiements directs. Vous pouvez également indiquer une valeur application_fee_percent pour verser à votre plateforme un pourcentage du montant de chaque facture.
La page Checkout utilise les paramètres de marque du compte connecté, notamment le nom de l’entreprise, l’icône, le logo et la couleur qui y sont associés. Pour plus d’informations, consultez la section Personnaliser le branding.
Note
Vous pouvez inclure une combinaison de postes ponctuels et de plans tarifaires récurrents dans une session Checkout. Le paramètre application_fee_percent
, si indiqué, s’appliquera aussi bien aux postes ponctuels que récurrents.
Créer une session Checkout Client and Server
Une session Checkout détermine ce que votre client voit sur la page de paiement hébergée par Stripe, tel que les postes de la facture, le montant et la devise de la commande, ainsi que les moyens de paiement acceptés.
Ajoutez à votre site Web un bouton de paiement qui appelle un endpoint côté serveur afin de créer une session Checkout.
<html> <head> <title>Checkout</title> </head> <body> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>
Sur votre serveur, effectuez l’appel suivant à l’API Stripe. Après avoir créé une session Checkout, redirigez votre client vers l’URL renvoyée dans la réponse.
curl https://api.stripe.com/v1/checkout/sessions \ -u
: \ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \ -d "subscription_data[application_fee_percent]"=10 \ -d "mode"="subscription" \ -d "success_url"="https://example.com/success" \ -d "cancel_url"="https://example.com/cancel" \ -H "Stripe-Account: {{CONNECTED_STRIPE_ACCOUNT_ID}}"sk_test_4eC39HqLyjWDarjtT1zdp7dc
Personnaliser le branding
Votre plateforme et vos comptes connectés ayant accès au Dashboard Stripe peuvent utiliser les paramètres de marque pour personnaliser la page de paiement. Lors de paiements indirects, Checkout utilise les paramètres de marque du compte de la plateforme. Pour les paiements directs, ainsi que les paiements indirects avec le paramètre on_behalf_of
, Checkout utilise les paramètres de marque du compte connecté. Les plateformes peuvent configurer les paramètres de marque des comptes connectés ayant accès au Dashboard Express ou n’ayant pas accès à un Dashboard hébergé par Stripe à l’aide de l’API Accounts.
L’API de mise à jour du compte accepte les paramètres suivants pour l’adaptation à votre marque :
icon
: s’affiche en regard du nom de l’entreprise dans l’en-tête de la page Checkout.logo
: si spécifié, s’affiche à la place de l’icône et du nom de l’entreprise dans l’en-tête de la page Checkout.primary_color
: utilisé comme couleur d’arrière-plan sur la page Checkout.secondary_color
: utilisé comme couleur des boutons sur la page Checkout.
curl https://api.stripe.com/v1/accounts/{{CONNECTED_STRIPE_ACCOUNT_ID}} \ -u "
:" \ -d "settings[branding][icon]"=file_123 \ -d "settings[branding][logo]"=file_456 \ --data-urlencode "settings[branding][primary_color]"="#663399" \ --data-urlencode "settings[branding][secondary_color]"="#4BB543"sk_test_4eC39HqLyjWDarjtT1zdp7dc
Activer des moyens de paiement
Accédez aux paramètres des moyens de paiement de votre Dashboard et activez ceux que vous souhaitez prendre en charge. Les paiements par carte bancaire, Google Pay et Apple Pay sont activés par défaut, mais vous pouvez activer et désactiver les moyens de paiement de votre choix au vu de vos besoins.
Avant que le formulaire de paiement ne s’affiche, Stripe évalue la devise, les restrictions en matière de moyens de paiement ainsi que d’autres paramètres pour dresser la liste des moyens de paiement pris en charge. Ceux qui augmentent le taux de conversion et qui sont les plus pertinents pour la devise et le lieu de résidence du client sont automatiquement priorisés. Ceux de moindre priorité ne sont accessibles que via un menu déroulant.