Apprends à utiliser les événements Laravel pour capter les webhooks Paddle, confirmer un paiement et envoyer un email automatique.
Lorsqu'un paiement est validé sur Paddle, un événement webhook est envoyé à votre application.
Dans ce tutoriel, nous allons voir comment utiliser les événements et listeners de Laravel pour :
✅ Écouter les webhooks Paddle
✅ Vérifier si le paiement est validé
✅ Envoyer un email de confirmation à l'utilisateur
Laravel utilise un système d'événements et de listeners pour exécuter des actions automatiques lorsqu'un événement se produit.
Dans notre cas, Paddle envoie un webhook lorsque le paiement est validé, et nous allons utiliser un listener pour capter cet événement.
Exécutez cette commande pour générer un listener :
php artisan make:listener PaddleEventListener
Ensuite, ouvrez le fichier app/Listeners/PaddleEventListener.php
et modifiez-le comme suit :
<?php
namespace App\Listeners;
use App\Mail\CheckoutConfirmed;
use Laravel\Paddle\Cashier;
use Laravel\Paddle\Events\WebhookReceived;
use Illuminate\Support\Facades\Mail;
class PaddleEventListener
{
public function handle(WebhookReceived $event): void
{
$payload = $event->payload;
if ($payload['event_type'] === 'transaction.completed') {
$user = Cashier::findBillable($payload['data']['customer_id']);
if ($user) {
Mail::to($user->email)->send(new CheckoutConfirmed($user));
}
}
}
}
Nous allons maintenant générer un email qui sera envoyé à l'utilisateur après son achat.
php artisan make:mail CheckoutConfirmed
Puis, modifiez le fichier app/Mail/CheckoutConfirmed.php
:
<?php
namespace App\Mail;
use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
class CheckoutConfirmed extends Mailable
{
use Queueable, SerializesModels;
public User $user;
public function __construct($user)
{
$this->user = $user;
}
public function envelope(): Envelope
{
return new Envelope(
subject: 'Votre paiement est confirmé',
);
}
public function content(): Content
{
return new Content(
view: 'mails.checkout-confirmed',
);
}
public function attachments(): array
{
return [];
}
}
Dans resources/views/mails/checkout-confirmed.blade.php
, ajoutez :
<!DOCTYPE html>
<html>
<head>
<title>Paiement Confirmé</title>
</head>
<body>
<h1>Merci, {{ $user->name }} !</h1>
<p>Votre abonnement est maintenant actif. Profitez de vos avantages ! 🎉</p>
</body>
</html>
Et voilà ! 🌟 Vous avez mis en place un système qui :
✅ Capte les webhooks Paddle via un événement
✅ Vérifie si un paiement est validé
✅ Envoie automatiquement un email de confirmation
Grâce aux événements et listeners de Laravel, la gestion des webhooks est simple et efficace. 🚀