<?php
namespace App\Controller\Webhook;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use App\Service\Subscription\StripeWebhookService;
use Symfony\Component\Routing\Annotation\Route;
use Psr\Log\LoggerInterface;
class StripeWebhookController extends AbstractController
{
private $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
/**
* @Route("/stripe/webhook", name="stripe_webhook")
*/
public function stripeWebhook(Request $request, StripeWebhookService $stripeWebhookService)
{
$payload = $request->getContent();
$sig_header = $request->headers->get('Stripe-Signature');
$this->logger->info("Stripe webhook received", ['event' => "test stripe webhook"]);
try {
$event = $stripeWebhookService->constructEventFromPayload($payload, $sig_header);
} catch(\Exception $e) {
return new Response($e->getMessage(), 400);
}
$stripeWebhookService->handleEvent($event);
return new Response('Received', 200);
}
}