Accéder directement au contenu
Créez un compte
ou
connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compte
Connectez-vous
Démarrer
Paiements
Revenus
Plateformes et places de marché
Gestion de fonds
Ressources pour les développeurs
Aperçu
À propos des paiements Stripe
Mettre votre intégration à niveau
Analyses des paiements
Paiements en ligne
PrésentationTrouver votre cas d'usageManaged Payments
Utiliser Payment Links
Créer une page de paiement
    Présentation
    Solutions de démarrage rapide
    Personnaliser l'apparence
    Collecter des informations supplémentaires
    Collecter des taxes
    Mise à jour dynamique lors du paiement
    Gérer votre catalogue de produits
    Abonnements
      Créer une intégration pour les abonnements
      Configurer des essais gratuits
      Définir une limite d'un abonnement par client
      Définir la date de début de cycle de facturation
    Gérer les moyens de paiement
    Offrir aux clients la possibilité de payer dans leur devise locale
    Ajoutez des réductions, des ventes incitatives et des articles facultatifs
    Configurer des paiements futurs
    Enregistrer les coordonnées bancaires lors du paiement
    Approuver manuellement les paiements sur votre serveur
    Après le paiement
    Liste des modifications de la version bêta d'Elements avec l'API Checkout Sessions
    Migrer depuis l'ancienne version de Checkout
    Migrer vers Checkout pour utiliser Prices
Développer une intégration avancée
Développer une intégration dans l'application
Moyens de paiement
Ajouter des moyens de paiement
Gérer les moyens de paiement
Paiement accéléré avec Link
Interfaces de paiement
Payment Links
Checkout
Elements pour le web
Elements intégrés à l'application
Scénarios de paiement
Gérer plusieurs devises
Tunnels de paiement personnalisés
Acquisition flexible
Orchestration
Paiements par TPE
Terminal
Au-delà des paiements
Constituez votre entreprise
Cryptomonnaies
Financial Connections
Climate
Comprendre la fraude
Radar pour la protection contre la fraude
Gestion des litiges
Vérifier l'identité
AccueilPaiementsBuild a checkout pageSubscriptions

Créer une intégration pour les abonnements

Créez et gérez des abonnements pour les paiements récurrents.

Page de paiement d'abonnement
Low-code

Personnalisez le logo, les images et les couleurs.

Utilisez les formulaires hébergés préconfigurés pour encaisser les paiements et gérer les abonnements de vos clients.

Dupliquez notre exemple d’intégration disponible sur GitHub.

Pour une version plus immersive de ce guide, reportez-vous à la documentation de démarrage rapide avec l’intégration Billing.

Découvrez l’exemple GitHub ou la demo.

Ce que vous allez créer

Ce guide explique comment mettre en place des abonnements mensuels à tarif fixe à l’aide de Stripe Checkout.

Ce guide vous explique comment :

  • Modéliser votre entreprise en créant un catalogue produits
  • Ajouter une session Checkout à votre site, avec un bouton et des pages de confirmation et d’annulation
  • Surveiller les événements d’abonnement et fournir l’accès à votre service
  • Configurer le portail client
  • Ajouter une session de portail client à votre site, avec un bouton et une redirection
  • Permettre à vos clients de gérer leur abonnement sur le portail
  • Découvrez comment utiliser mode de facturation flexible pour accéder à un comportement de facturation amélioré et à des fonctionnalités supplémentaires.

Si vous ne souhaitez pas coder une intégration, vous pouvez configurer des abonnements de base manuellement dans le Dashboard ou utiliser Payment Links pour configurer des abonnements sans avoir à rédiger une seule ligne de code.

Consultez notre documentation consacrée à la conception d’une intégration pour mieux comprendre les décisions et les ressources inhérentes à une intégration complète.

Une fois l’intégration terminée, vous pouvez l’étendre pour :

  • Afficher les taxes
  • Appliquer des réductions
  • Proposer une période d’essai gratuit aux clients
  • Ajouter d’autres moyens de paiement
  • Intégrer la page de facture hébergée
  • Utiliser le mode de configuration de Checkout
  • Configurer la facturation à l’usage, les grilles tarifaires et la tarification à l’usage
  • Gérer les calculs au prorata
  • Autoriser les clients à s’abonner à plusieurs produits
  • Intégrer les droits d’accès pour gérer l’accès aux fonctionnalités de votre produit

Configurer Stripe

Installez le client Stripe de votre choix :

Command Line
Ruby
Python
PHP
Java
Node
Go
.NET
No results
# Available as a gem sudo gem install stripe
Gemfile
Ruby
Python
PHP
Java
Node
Go
.NET
No results
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Installez la CLI Stripe (facultatif). Elle vous permet de tester vos webhooks et de créer vos produits et vos tarifs.

Command Line
homebrew
Installer à partir d'une source
No results
# Install Homebrew to run this command: https://brew.sh/ brew install stripe/stripe-cli/stripe # Connect the CLI to your dashboard stripe login

Pour davantage d’options d’installation, consultez la page consacrée à l’interface de ligne de commande Stripe.

Créer le modèle tarifaire
Dashboard ou CLI Stripe

Créez vos produits et leurs tarifs dans le Dashboard ou via l’interface de ligne de commande Stripe.

Cet exemple utilise un service à tarif fixe avec deux options de niveau de service différentes : Basic et Premium. Pour chaque option de niveau de service, vous devez créer un produit et un tarif récurrent. (Si vous souhaitez ajouter un paiement ponctuel, par exemple des frais d’installation, créez un troisième produit avec un tarif unique. Par souci de simplicité, cet exemple n’inclut pas de paiement ponctuels.)

Dans cet exemple, chaque produit est facturé mensuellement. Le tarif du produit de base est de 5 USD. Celui du produit premium est de 15 USD.

Accédez à la page Ajouter un produit et créez deux produits. Ajoutez un tarif pour chaque produit, avec une période de facturation mensuelle récurrente :

  • Produit Premium : service Premium avec fonctionnalités supplémentaires

    • Prix : Appuyez sur Payer 15 USD.
  • Produit de base : service de base avec fonctionnalités minimales

    • Prix : Forfaitaire | 5 USD

Après avoir créé vos tarifs, enregistrez les ID de tarif de manière à pouvoir les utiliser dans d’autres étapes. Les ID de tarif se présentent sous la forme suivante : price_G0FvDp6vZvdwRZ.

Lorsque vous le souhaitez, cliquez sur le bouton Copier en mode production en haut à droite de la page pour dupliquer votre produit de l’environnement de test en mode production.

Si vous proposez différentes périodes d’abonnement, utilisez Checkout pour faire de l’upselling et inciter vos clients à s’abonner sur une plus longue période afin de vendre plus.

Pour les autres modèles tarifaires, consultez ces exemples de facturation.

Créer une session Checkout
Client et serveur

Ajoutez sur votre site Web un bouton de paiement qui appelle un endpoint côté serveur afin de créer une session Checkout.

index.html
Afficher l'exemple dans son intégralité
<html> <head> <title>Checkout</title> </head> <body> <form action="/create-checkout-session" method="POST"> <!-- Note: If using PHP set the action to /create-checkout-session.php --> <input type="hidden" name="priceId" value="price_G0FvDp6vZvdwRZ" /> <button type="submit">Checkout</button> </form> </body> </html>

Sur le back-end de votre application, définissez un endpoint qui crée la session que votre front-end appellera. Vous avez besoin des valeurs suivantes :

  • L’ID du tarif de l’abonnement que souscrit votre client (votre front-end transmet cette valeur)
  • Votre success_url, une page de votre site Web sur laquelle Checkout renvoie votre client une fois son paiement réalisé.

Vous pouvez éventuellement spécifier une URL cancel_url, c’est-à-dire une page de votre site Web vers laquelle Checkout renvoie votre client s’il annule le processus de paiement. Cet appel vous permet également de configurer la date de début du cycle de facturation de votre abonnement.

Si vous avez créé un tarif ponctuel à l’étape 2, transmettez également cet ID de tarif. Après avoir créé une session Checkout, redirigez votre client vers l’URL renvoyée dans la réponse.

You can enable more accurate and predictable subscription behavior when you create a Checkout Session by setting billing_mode[type] to flexible. You must use Stripe API version 2025-06-30.basil or later.

Remarque

Vous pouvez utiliser lookup_keys pour récupérer les tarifs plutôt que les ID de tarif. Utilisez l’application test pour en savoir plus.

server.rb
Ruby
Python
PHP
Java
Node
Go
.NET
No results
Afficher l'exemple dans son intégralité
# 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 =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
# The price ID passed from the front end. # price_id = params['priceId'] price_id = '{{PRICE_ID}}' session = Stripe::Checkout::Session.create({ success_url: 'https://example.com/success.html?session_id={CHECKOUT_SESSION_ID}', cancel_url: 'https://example.com/canceled.html', mode: 'subscription', line_items: [{ # For usage-based billing, don't pass quantity quantity: 1, price: price_id, }], subscription_data: { billing_mode: { type: 'flexible' } } }) # Redirect to the URL returned on the session # redirect session.url, 303

Dans cet exemple, success_url est personnalisé en y ajoutant l’ID de session. Pour plus d’informations sur cette approche, consultez notre documentation sur la manière de personnaliser votre page de confirmation de paiement.

Dans votre Dashboard, activez les moyens de paiement que vous souhaitez accepter de vos clients. Checkout prend en charge plusieurs moyens de paiement.

Fournir l'accès au service et suivre les abonnements
Serveur

Une fois l’inscription à l’abonnement réussie, le client revient sur votre site web à l’adresse success_url, qui initie un webhook checkout.session.completed. À réception de cet événement checkout.session.completed, vous pouvez lui donner accès à son abonnement. Continuez à lui assurer cet accès chaque mois (si facturation mensuelle) tant que vous recevez des événements invoice.paid. Si vous recevez un événement invoice.payment_failed, signalez-le à votre client et dirigez-le vers le portail client pour qu’il mette à jour son moyen de paiement.

Pour déterminer la prochaine étape de la logique de votre système, vérifiez le type d’événement et analysez la charge utile de chaque objet Event, comme invoice.paid. Stockez les subscription.id et customer.id des objets Event dans votre base de données pour vérification.

À des fins de test, vous pouvez surveiller les événements dans l’onglet Événements de Workbench. Pour la production, configurez un endpoint de webhook et abonnez-vous aux types d’événements appropriés. Si vous ne connaissez pas votre clé STRIPE_WEBHOOK_SECRET, accédez à la vue des détails de destination de l’onglet Webhooks dans Workbench pour l’afficher.

server.rb
Ruby
Python
PHP
Java
Node
Go
.NET
No results
Afficher l'exemple dans son intégralité
# 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 =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
post '/webhook' do webhook_secret =
'{{STRIPE_WEBHOOK_SECRET}}'
payload
= request.body.read if !webhook_secret.empty? # Retrieve the event by verifying the signature using the raw body and secret if webhook signing is configured. sig_header = request.env['HTTP_STRIPE_SIGNATURE'] event = nil begin event = Stripe::Webhook.construct_event( payload, sig_header, webhook_secret ) rescue JSON::ParserError => e # Invalid payload status 400 return rescue Stripe::SignatureVerificationError => e # Invalid signature puts '⚠️ Webhook signature verification failed.' status 400 return end else data = JSON.parse(payload, symbolize_names: true) event = Stripe::Event.construct_from(data) end # Get the type of webhook event sent event_type = event['type'] data = event['data'] data_object = data['object'] case event_type when 'checkout.session.completed' # Payment is successful and the subscription is created. # You should provision the subscription and save the customer ID to your database. when 'invoice.paid' # Continue to provision the subscription as payments continue to be made. # Store the status in your database and check when a user accesses your service. # This approach helps you avoid hitting rate limits. when 'invoice.payment_failed' # The payment failed or the customer does not have a valid payment method. # The subscription becomes past_due. Notify your customer and send them to the # customer portal to update their payment information. else puts "Unhandled event type: \#{event.type}" end status 200 end

Voici les types d’événement à suivre, a minima :

Nom de l’événementDescription
checkout.session.completedEnvoyé lorsqu’un client finalise la session Checkout, vous informant d’un nouvel achat.
invoice.paidEnvoyé à chaque période de facturation lorsque le paiement aboutit.
invoice.payment_failedEnvoyé à chaque période de facturation en cas de problème avec le moyen de paiement de votre client.

Pour suivre davantage d’événements, consultez notre page sur les webhooks des abonnements.

Configurer le portail client
Dashboard

Le portail client permet à vos clients de gérer directement leurs abonnements et factures existants.

Utilisez le Dashboard pour configurer le portail. Au minimum, veillez à le configurer de façon à ce que les clients puissent mettre à jour leurs moyens de paiement. Consultez la page sur l’intégration du portail client pour en savoir plus sur les autres paramètres que vous pouvez configurer.

Créer une session de portail
Serveur

Définissez un endpoint qui crée la session du portail client pour que votre frontend puisse l’appeler. Ici, CUSTOMER_ID fait référence à l’identifiant du client créé par une session de paiement que vous avez enregistrée lors du traitement de l’événement checkout.session.completed. Vous pouvez également définir un lien de redirection par défaut pour le portail dans le Dashboard.

Transmettez une valeur return_url facultative pour la page de votre site vers laquelle rediriger votre client après qu’il a terminé la gestion de son abonnement :

server.rb
Ruby
Python
PHP
Java
Node
Go
.NET
No results
Afficher l'exemple dans son intégralité
# 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 =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
# This is the URL that users are redirected to after they're done # managing their billing. return_url =
'{{DOMAIN_URL}}'
customer_id
=
'{{CUSTOMER_ID}}'
session
= Stripe::BillingPortal::Session.create({ customer: customer_id, return_url: return_url, }) # Redirect to the URL for the session # redirect session.url, 303

Rediriger les clients vers le portail client
Client

Sur votre front-end, ajoutez à la page success_url un bouton redirigeant vers le portail client :

success.html
Afficher l'exemple dans son intégralité
<html> <head> <title>Manage Billing</title> </head> <body> <form action="/customer-portal" method="POST"> <!-- Note: If using PHP set the action to /customer-portal.php --> <button type="submit">Manage Billing</button> </form> </body> </html>

Après avoir quitté le portail client, le client revient sur votre site Web à la page return_url. Continuez à surveiller les événements pour suivre l’état de son abonnement.

Si vous configurez le portail client de manière à autoriser des actions telles que l’annulation d’un abonnement, consultez la page sur l’intégration du portail client pour découvrir des événements supplémentaires à surveiller.

Tester votre intégration

Tester les moyens de paiement

Utilisez le tableau suivant pour tester différents scénarios et moyens de paiement.

Moyen de paiementScénarioMéthode de test
Prélèvement automatique BECSLe montant dû est réglé par prélèvement automatique BECS.Remplissez le formulaire à l’aide du numéro de compte 900123456 et du BSB 000000. La confirmation de la demande de PaymentIntent passe d’abord à l’état de traitement, puis à l’état réussi trois minutes plus tard.
Prélèvement automatique BECSLe paiement de votre client échoue avec un code d’erreur account_closed.Remplissez le formulaire à l’aide du numéro de compte 111111113 et du BSB 000000.
Carte bancaireLe paiement par carte bancaire aboutit et ne nécessite pas d’authentification.Remplissez le formulaire de paiement par carte bancaire en saisissant le numéro de carte 4242 4242 4242 4242 ainsi que la date d’expiration, le CVC et le code postal de votre choix.
Carte bancaireLe paiement par carte bancaire requiert une authentification.Remplissez le formulaire de paiement par carte bancaire en saisissant le numéro de carte 4000 0025 0000 3155 ainsi que la date d’expiration, le CVC et le code postal de votre choix.
Carte bancaireLa carte est refusée avec un code de refus de type insufficient_funds.Remplissez le formulaire de paiement par carte bancaire en saisissant le numéro 4000 0000 0000 9995 ainsi que la date d’expiration, le CVC et le code postal de votre choix…
Prélèvement automatique SEPALe montant dû est réglé par prélèvement automatique SEPA.Remplissez le formulaire à l’aide du numéro de compte AT321904300235473204. Le PaymentIntent confirmé passe d’abord à l’état processing, puis à l’état succeeded trois minutes plus tard.
Prélèvement automatique SEPAL’état du PaymentIntent de votre client passe de processing à requires_payment_method.Remplissez le formulaire à l’aide du numéro de compte AT861904300235473202.

Surveillance des événements

Configurez des webhooks pour écouter les événements de modification d’abonnement, tels que les mises à niveau et les annulations. En savoir plus sur les webhooks d’abonnement. Vous pouvez afficher les événements dans le Dashboard ou via l’interface de ligne Stripe de commande.

Pour plus d’informations sur les tests votre intégration Billing, lisez le guide.

Voir aussi

  • Proposer une période d’essai gratuit aux clients
  • Appliquer des réductions
  • Gérer les calculs au prorata
  • Intégrer les droits d’accès pour gérer l’accès aux fonctionnalités de votre produit
Cette page vous a-t-elle été utile ?
OuiNon
  • Besoin d'aide ? Contactez le service Support.
  • Rejoignez notre programme d'accès anticipé.
  • Consultez notre log des modifications.
  • Des questions ? Contactez l'équipe commerciale.
  • LLM ? Lire llms.txt.
  • Propulsé par Markdoc