Mise à niveau et rétrogradation des abonnements avec Laravel et stripe-php
La mise à niveau et la rétrogradation des abonnements est une fonctionnalité courante dans les applications qui offrent des services basés sur l'abonnement. Dans ce tutoriel, nous apprendrons comment implémenter cette fonctionnalité dans une application Laravel en utilisant le SDK PHP Stripe.
Ce tutoriel suppose que vous avez une compréhension basique de Laravel et que vous avez un compte Stripe configuré. Si vous êtes nouveau sur Stripe, considérez examiner la documentation officielle Stripe avant de continuer.
Prérequis
- Laravel installé sur votre système.
- Un compte Stripe avec des clés API de test.
- Le package
stripe-phpinstallé via Composer.
Configuration de Stripe dans Laravel
D'abord, installez la bibliothèque PHP Stripe en utilisant Composer :
composer require stripe/stripe-phpEnsuite, configurez vos clés API Stripe. Vous pouvez les définir dans votre fichier .env :
STRIPE_KEY=your_stripe_publishable_key
STRIPE_SECRET=your_stripe_secret_keyEt puis ajoutez-les à votre fichier config/services.php :
'stripe' => [
'key' => env('STRIPE_KEY'),
'secret' => env('STRIPE_SECRET'),
],Récupération de l'abonnement et des éléments
Pour mettre à niveau ou rétrograder un abonnement, vous devez d'abord récupérer l'abonnement et ses éléments :
\Stripe\Stripe::setApiKey(config('services.stripe.secret'));
$subscriptionId = 'sub_XXXXXXXXXXXX';
$subscription = \Stripe\Subscription::retrieve($subscriptionId);
$subscriptionItemId = $subscription->items->data[0]->id;Mise à niveau ou rétrogradation de l'abonnement
Vous pouvez mettre à jour l'abonnement en changeant le prix associé à l'élément d'abonnement. Assurez-vous de spécifier l'id de l'élément d'abonnement et le nouveau price_id :
$newPriceId = 'price_YYYYYYYYYYYYYY';
$updatedSubscription = \Stripe\Subscription::update($subscriptionId, [
'items' => [
[
'id' => $subscriptionItemId,
'price' => $newPriceId,
],
],
]);Cela remplace le prix actuel par le nouveau. Si vous ne spécifiez pas l'id de l'élément d'abonnement, Stripe ajoutera le nouveau prix comme élément supplémentaire, résultant en deux prix actifs.
Gestion des quantités
Si votre abonnement utilise des quantités, vous devez préserver la quantité existante lors de la mise à jour :
$quantity = $subscription->items->data[0]->quantity;
$updatedSubscription = \Stripe\Subscription::update($subscriptionId, [
'items' => [
[
'id' => $subscriptionItemId,
'price' => $newPriceId,
'quantity' => $quantity,
],
],
]);Proration et facturation
Par défaut, Stripe applique des prorations lorsque vous changez l'abonnement d'un client. Si vous voulez désactiver les prorations, vous pouvez définir le paramètre proration_behavior sur none :
$updatedSubscription = \Stripe\Subscription::update($subscriptionId, [
'items' => [
[
'id' => $subscriptionItemId,
'price' => $newPriceId,
],
],
'proration_behavior' => 'none',
]);Alternativement, pour prévisualiser la facture à venir, vous pouvez utiliser :
$upcomingInvoice = \Stripe\Invoice::upcoming([
'customer' => $subscription->customer,
'subscription' => $subscriptionId,
'subscription_items' => [
[
'id' => $subscriptionItemId,
'price' => $newPriceId,
],
],
]);Conclusion
Dans ce tutoriel, nous avons appris comment mettre à niveau et rétrograder les abonnements dans une application Laravel en utilisant le SDK PHP Stripe. N'oubliez pas de toujours tester vos modifications dans un environnement de test avant de déployer en production.
Pour plus d'informations, consultez la Documentation des abonnements Stripe.
Discutez de votre projet avec nous
Nous sommes ici pour vous aider avec vos besoins en développement Web. Planifiez un appel pour discuter de votre projet et comment nous pouvons vous aider.
Trouvons les meilleures solutions pour vos besoins.
Articles connexes
Mettre en place un système de paiement récurrent avec Stripe sur Laravel
Apprenez à implémenter des paiements récurrents avec Stripe dans une application Laravel.

2 Les Bases de Laravel 11 : Routage
Un guide informatif sur les bases du routage dans Laravel 11, adapte aux developpeurs de tous niveaux.

Demarrer avec Laravel 11 : Installation, Configuration et Structure des Repertoires
Demarrer avec Laravel 11 : Installation, Configuration et Structure des Repertoires