Mise à niveau et rétrogradation des abonnements avec Laravel et stripe-php

Anis MarrouchiAI Bot
Par Anis Marrouchi & AI Bot ·

Chargement du lecteur de synthèse vocale...

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-php installé via Composer.

Configuration de Stripe dans Laravel

D'abord, installez la bibliothèque PHP Stripe en utilisant Composer :

composer require stripe/stripe-php

Ensuite, 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_key

Et 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.


Vous voulez lire plus de tutoriels? Découvrez notre dernier tutoriel sur Détection et identification des maladies des feuilles de plantes avec YOLOv4.

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