StripeWebhookController
extends AbstractController
in package
Réception des webhooks Stripe.
Point d'entrée public appelé par Stripe pour notifier l'application de l'issue des paiements. La signature de chaque requête est vérifiée avec le secret de webhook avant tout traitement ; les statuts des paiements, commandes et cartes physiques sont ensuite synchronisés en base.
Table of Contents
Properties
- $entityManager : EntityManagerInterface
- $stripeSecretKey : string
- $webhookSecretKey : string
Methods
- __construct() : mixed
- handleWebhook() : Response
- Vérifie la signature du webhook et aiguille l'événement Stripe.
- handleCheckoutSessionCompleted() : void
- Confirme une commande dont la session de paiement Stripe est réglée.
- handlePaymentIntentFailed() : void
- Marque comme rejeté un paiement dont l'intention Stripe a échoué.
- handlePaymentIntentSucceeded() : void
- Marque comme abouti un paiement dont l'intention Stripe a réussi.
Properties
$entityManager read-only
private
EntityManagerInterface
$entityManager
$stripeSecretKey read-only
private
string
$stripeSecretKey
$webhookSecretKey read-only
private
string
$webhookSecretKey
Methods
__construct()
public
__construct(EntityManagerInterface $entityManager, string $stripeSecretKey, string $webhookSecretKey) : mixed
Parameters
- $entityManager : EntityManagerInterface
-
Gestionnaire d'entités Doctrine.
- $stripeSecretKey : string
-
Clé secrète de l'API Stripe.
- $webhookSecretKey : string
-
Secret de signature des webhooks.
handleWebhook()
Vérifie la signature du webhook et aiguille l'événement Stripe.
public
handleWebhook(Request $request) : Response
Événements traités : checkout.session.completed, payment_intent.succeeded
et payment_intent.payment_failed. Tout autre type est ignoré silencieusement,
avec une réponse 200 pour éviter les renvois de Stripe.
Route : /stripe/webhook (POST), nom stripe_webhook.
Parameters
- $request : Request
-
Requête brute de Stripe, avec l'en-tête
stripe-signature.
Attributes
- #[Route]
- '/stripe/webhook'
- $name: 'stripe_webhook'
- $methods: ['POST']
Return values
Response —200 si l'événement a été accepté, 400 si la charge utile ou la signature est invalide.
handleCheckoutSessionCompleted()
Confirme une commande dont la session de paiement Stripe est réglée.
private
handleCheckoutSessionCompleted(Session|object $session) : void
La commande est identifiée par la métadonnée order_id de la session. Si le
paiement est bien paid, la commande passe en attente de traitement, le
paiement associé est marqué comme abouti avec son payment_intent, et les
cartes physiques en attente de règlement passent au statut confirmé.
Parameters
- $session : Session|object
-
Session de paiement Stripe.
handlePaymentIntentFailed()
Marque comme rejeté un paiement dont l'intention Stripe a échoué.
private
handlePaymentIntentFailed(PaymentIntent|object $paymentIntent) : void
Le paiement est retrouvé par son stripePaymentIntentId ; son statut et celui
de la commande associée passent à « rejeté ».
Parameters
- $paymentIntent : PaymentIntent|object
-
Intention de paiement Stripe.
handlePaymentIntentSucceeded()
Marque comme abouti un paiement dont l'intention Stripe a réussi.
private
handlePaymentIntentSucceeded(PaymentIntent|object $paymentIntent) : void
Le paiement est retrouvé par son stripePaymentIntentId et n'est mis à jour
que s'il est encore en attente. La commande associée passe à CONFIRMED et ses
cartes physiques en attente de règlement sont confirmées.
Parameters
- $paymentIntent : PaymentIntent|object
-
Intention de paiement Stripe.