Mettre en place un système de paiement récurrent avec Stripe sur Laravel

Anis MarrouchiAI Bot
Par Anis Marrouchi & AI Bot ·

Chargement du lecteur de synthèse vocale...

Les paiements récurrents sont un élément clé des applications modernes offrant des services par abonnement. Dans ce tutoriel, nous allons apprendre à intégrer Stripe dans une application Laravel pour gérer des paiements récurrents et des abonnements.

Prérequis

Avant de commencer, assurez-vous d'avoir :

  • Une installation de Laravel (version 8 ou supérieure)
  • Un compte Stripe
  • Composer installé sur votre machine
  • Des connaissances de base en PHP et Laravel

Étape 1 : Installation de Stripe pour Laravel

Pour intégrer Stripe à votre application Laravel, nous allons utiliser la bibliothèque officielle Stripe PHP.

Installez la dépendance via Composer :

composer require stripe/stripe-php

Étape 2 : Configuration de Stripe

Après avoir installé la bibliothèque, configurez vos clés API Stripe dans le fichier .env :

STRIPE_KEY=VotreCléPubliqueStripe
STRIPE_SECRET=VotreCléSecrèteStripe

Assurez-vous de remplacer VotreCléPubliqueStripe et VotreCléSecrèteStripe par vos véritables clés API que vous pouvez trouver dans votre Tableau de bord Stripe.

Étape 3 : Création des abonnements

Modèle User

Dans ce tutoriel, nous supposerons que vous avez déjà un modèle User. Assurez-vous que votre modèle User dispose des champs nécessaires pour stocker les informations de Stripe, comme stripe_customer_id.

Routes et Contrôleurs

Créez les routes nécessaires dans votre fichier web.php :

Route::get('/abonnement', [SubscriptionController::class, 'index']);
Route::post('/abonnement', [SubscriptionController::class, 'store']);

Créez ensuite le SubscriptionController :

namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
use Stripe\Stripe;
use Stripe\Customer;
use Stripe\Subscription;
 
class SubscriptionController extends Controller
{
    public function index()
    {
        return view('abonnement');
    }
 
    public function store(Request $request)
    {
        Stripe::setApiKey(env('STRIPE_SECRET'));
 
        // Créer ou récupérer le client Stripe
        $user = $request->user();
        if (!$user->stripe_customer_id) {
            $customer = Customer::create([
                'email' => $user->email,
            ]);
            $user->stripe_customer_id = $customer->id;
            $user->save();
        }
 
        // Créer l'abonnement
        $subscription = Subscription::create([
            'customer' => $user->stripe_customer_id,
            'items' => [['price' => 'price_XXXXXXXXXXXXXX']],
        ]);
 
        // Enregistrer l'ID de l'abonnement
        $user->stripe_subscription_id = $subscription->id;
        $user->save();
 
        return redirect()->back()->with('message', 'Abonnement créé avec succès!');
    }
}

N'oubliez pas de remplacer price_XXXXXXXXXXXXXX par l'ID du prix que vous avez créé dans votre compte Stripe.

Vue d'abonnement

Créez une vue resources/views/abonnement.blade.php :

@extends('layouts.app')
 
@section('content')
    <h1>Souscrire à un abonnement</h1>
    @if(session('message'))
        <p>{{ session('message') }}</p>
    @endif
    <form action="/abonnement" method="POST">
        @csrf
        <button type="submit">S'abonner</button>
    </form>
@endsection

Étape 4 : Gestion des webhooks

Pour gérer les événements tels que les paiements réussis ou les échecs de paiement, configurez des Webhooks dans votre compte Stripe.

Configuration du Webhook

Dans votre compte Stripe, allez dans "Développeurs" > "Webhooks" et ajoutez un nouvel endpoint pointant vers https://votre-domaine.com/webhook-stripe.

Route et Contrôleur du Webhook

Ajoutez la route dans web.php :

Route::post('/webhook-stripe', [WebhookController::class, 'handle']);

Créez le WebhookController :

namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
 
class WebhookController extends Controller
{
    public function handle(Request $request)
    {
        // Gérer les événements du webhook
        $event = $request->all();
 
        // Traitez différents types d'événements
        if ($event['type'] == 'invoice.payment_succeeded') {
            // Le paiement a réussi
        }
 
        return response('Webhook reçu', 200);
    }
}

Conclusion

Félicitations ! Vous avez mis en place un système de paiement récurrent avec Stripe dans votre application Laravel. Pour aller plus loin, consultez la documentation officielle de Stripe sur les abonnements pour découvrir toutes les fonctionnalités disponibles.

N'oubliez pas de toujours tester vos intégrations en utilisant les clés de test de Stripe avant de passer en production.


Vous voulez lire plus de tutoriels? Découvrez notre dernier tutoriel sur Découvrez SAM 2 pour une segmentation vidéo précise et performante en traitement d'image.

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.