Colas Mérand
30/07/2025
Stripe
PHP
Paiements récurrents
5 minutes
Dans un monde où les modèles économiques par abonnement connaissent une croissance exponentielle, la mise en place d'un système de paiement récurrent fiable et sécurisé est devenue essentielle pour de nombreuses entreprises. Que vous gériez une plateforme SaaS, un service de contenu premium ou une boutique en ligne proposant des livraisons régulières, l'intégration d'une solution de paiement comme Stripe peut transformer radicalement votre activité. Dans cet article, nous allons explorer les meilleures pratiques pour intégrer Stripe à votre site PHP, en mettant l'accent sur la gestion des paiements récurrents et des offres multiples.
Avant de plonger dans les aspects techniques, il est important de comprendre pourquoi Stripe s'est imposé comme l'une des solutions de paiement les plus populaires pour les entreprises de toutes tailles :
Pour intégrer Stripe à votre site PHP, vous aurez besoin de :
La première étape consiste à installer la bibliothèque officielle Stripe pour PHP :
composer require stripe/stripe-php
Dans votre fichier de configuration PHP, initialisez Stripe avec votre clé API :
require_once 'vendor/autoload.php';
\Stripe\Stripe::setApiKey('sk_test_votreclésecrete');
N'oubliez pas de remplacer la clé de test par votre clé de production lorsque vous serez prêt à lancer votre service.
Pour gérer plusieurs offres d'abonnement, vous devez d'abord créer vos produits et plans dans Stripe :
// Création d'un produit
$product = \Stripe\Product::create([
'name' => 'Nom de votre service',
'description' => 'Description de votre service',
]);
// Création de différents plans tarifaires pour ce produit
$planBasique = \Stripe\Plan::create([
'product' => $product->id,
'nickname' => 'Plan Basique',
'amount' => 1500, // en centimes, soit 15€
'currency' => 'eur',
'interval' => 'month', // récurrence mensuelle
]);
$planStandard = \Stripe\Plan::create([
'product' => $product->id,
'nickname' => 'Plan Standard',
'amount' => 2500, // 25€
'currency' => 'eur',
'interval' => 'month',
]);
$planPremium = \Stripe\Plan::create([
'product' => $product->id,
'nickname' => 'Plan Premium',
'amount' => 4500, // 45€
'currency' => 'eur',
'interval' => 'month',
]);
Pour collecter les informations de paiement de manière sécurisée, utilisez Stripe Elements ou Checkout :
<form id="payment-form">
<div id="card-element">
<!-- Les éléments Stripe seront insérés ici -->
</div>
<div id="card-errors" role="alert"></div>
<select id="plan-select">
<option value="plan_basique">Plan Basique - 15€/mois</option>
<option value="plan_standard">Plan Standard - 25€/mois</option>
<option value="plan_premium">Plan Premium - 45€/mois</option>
</select>
<button type="submit">S'abonner</button>
</form>
<script src="https://js.stripe.com/v3/"></script>
<script>
var stripe = Stripe('pk_test_votreclépublique');
var elements = stripe.elements();
var card = elements.create('card');
card.mount('#card-element');
// Gestion des erreurs et soumission du formulaire
// ...
</script>
Lorsque le client soumet le formulaire, vous devez créer un client Stripe et un abonnement :
// Récupération du token de carte et du plan sélectionné
$token = $_POST['stripeToken'];
$planId = $_POST['planId'];
try {
// Création du client
$customer = \Stripe\Customer::create([
'email' => $email,
'source' => $token,
]);
// Création de l'abonnement
$subscription = \Stripe\Subscription::create([
'customer' => $customer->id,
'items' => [
['plan' => $planId],
],
]);
// Enregistrement des informations dans votre base de données
// ...
// Redirection vers une page de confirmation
header('Location: /confirmation');
} catch (\Stripe\Exception\CardException $e) {
// Gestion des erreurs de carte
$error = $e->getMessage();
}
Pour maintenir votre système synchronisé avec Stripe, configurez des webhooks pour traiter les événements importants :
// webhook.php
$payload = @file_get_contents('php://input');
$event = null;
try {
$event = \Stripe\Event::constructFrom(
json_decode($payload, true)
);
} catch(\UnexpectedValueException $e) {
// Payload invalide
http_response_code(400);
exit();
}
// Gestion des événements
switch ($event->type) {
case 'invoice.payment_succeeded':
$invoice = $event->data->object;
// Mettre à jour le statut de l'abonnement dans votre base de données
break;
case 'customer.subscription.deleted':
$subscription = $event->data->object;
// Désactiver l'abonnement dans votre système
break;
// Autres événements...
}
http_response_code(200);
Permettez à vos clients de passer facilement d'un plan à un autre :
// Mise à niveau ou rétrogradation d'un abonnement
$subscription = \Stripe\Subscription::retrieve($subscriptionId);
\Stripe\Subscription::update($subscriptionId, [
'cancel_at_period_end' => false,
'proration_behavior' => 'create_prorations',
'items' => [
[
'id' => $subscription->items->data[0]->id,
'plan' => $newPlanId,
],
],
]);
Chez Platane, nous avons accompagné plusieurs entreprises dans l'intégration de Stripe pour des systèmes de paiement récurrent. Voici quelques exemples concrets qui illustrent notre expertise dans ce domaine :
Pour Astory, nous avons développé une plateforme de location d'œuvres d'art qui génère aujourd'hui plus de 800 000€ de revenus annuels. L'intégration de Stripe a été cruciale pour gérer les abonnements mensuels des clients qui souhaitent louer des œuvres sur différentes durées. La stack technique (NextJS, TypeScript, PostgreSQL) couplée à Stripe a permis de créer une expérience utilisateur fluide et sécurisée.
Pour Easop, nous avons conçu une solution permettant de gérer des paiements récurrents pour différents niveaux de service. L'intégration de Stripe a permis d'automatiser entièrement le processus de facturation et de renouvellement, contribuant au succès de la plateforme qui a été rachetée plusieurs millions d'euros.
Pour cette marketplace, nous avons implémenté un système complexe de paiements avec Stripe, permettant non seulement des abonnements pour les prestataires premium, mais aussi la gestion des commissions sur les transactions entre utilisateurs. La robustesse de l'intégration a été un facteur clé dans la croissance rapide de la plateforme.
Les échecs de paiement sont inévitables dans un modèle d'abonnement. Stripe propose des fonctionnalités de recouvrement automatique :
// Configuration de la logique de recouvrement
\Stripe\Subscription::create([
'customer' => $customerId,
'items' => [['plan' => $planId]],
'collection_method' => 'charge_automatically',
'payment_settings' => [
'payment_method_types' => ['card'],
'save_default_payment_method' => 'on_subscription',
],
]);
Si vous migrez depuis une autre solution de paiement, vous devrez gérer la transition en douceur :
Pour les entreprises opérant à l'international, Stripe Tax peut automatiser la gestion de la TVA et autres taxes :
\Stripe\Subscription::create([
'customer' => $customerId,
'items' => [['plan' => $planId]],
'automatic_tax' => [
'enabled' => true,
],
]);
L'intégration de Stripe pour les paiements récurrents sur un site PHP est un projet qui demande une attention particulière aux détails, mais qui peut transformer radicalement votre modèle économique. En suivant les bonnes pratiques et en tirant parti des fonctionnalités avancées de Stripe, vous pouvez offrir à vos clients une expérience de paiement fluide et sécurisée tout en automatisant une grande partie de votre gestion financière.
Chez Platane, nous combinons expertise technique et vision stratégique pour implémenter des solutions de paiement qui s'alignent parfaitement avec les objectifs business de nos clients. Notre approche ne se limite pas à l'intégration technique : nous pensons l'expérience utilisateur dans sa globalité pour maximiser les conversions et la satisfaction client.
Vous avez un projet d'intégration Stripe ou souhaitez optimiser votre système de paiement existant ? N'hésitez pas à prendre rendez-vous via notre formulaire de contact. Nos experts se feront un plaisir d'échanger avec vous sur votre projet et de vous proposer des solutions sur mesure qui allient technologie de pointe et créativité, le tout au service de vos objectifs commerciaux.
La transformation numérique de votre système de paiement est un investissement stratégique pour l'avenir de votre entreprise - faites confiance à des experts qui comprennent aussi bien les enjeux techniques que business.
Vous préférez discuter de vive voix ? Nous aussi et c'est évidemment sans engagement !
Une question, un besoin de renseignements ? N'hésitez pas à nous contacter.