src/Controller/Webhook/StripeWebhookController.php line 38

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Webhook;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use App\Service\Subscription\StripeWebhookService;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use Psr\Log\LoggerInterface;
  9. class StripeWebhookController extends AbstractController
  10. {
  11.     private $logger;
  12.     public function __construct(LoggerInterface $logger)
  13.     {
  14.         $this->logger $logger;
  15.     }
  16. /**
  17.  * @Route("/stripe/webhook", name="stripe_webhook")
  18.  */
  19. public function stripeWebhook(Request $requestStripeWebhookService $stripeWebhookService)
  20. {
  21.     $payload $request->getContent();
  22.     $sig_header $request->headers->get('Stripe-Signature');
  23.     $this->logger->info("Stripe webhook received", ['event' => "test stripe webhook"]);
  24.     
  25.     try {
  26.         $event $stripeWebhookService->constructEventFromPayload($payload$sig_header);
  27.     } catch(\Exception $e) {
  28.         return new Response($e->getMessage(), 400);
  29.     }
  30.     $stripeWebhookService->handleEvent($event);
  31.     return new Response('Received'200);
  32. }
  33. }