<?php
namespace App\Controller\Pub;
use App\Entity\Composition\Composition;
use App\Entity\Profile\PaymentMethod\PaymentGateway;
use App\Entity\Profile\PaymentMethod\PaymentGatewayEvent;
use App\Enums\Constants;
use App\Repository\Composition\CompositionRepository;
use App\Repository\Profile\PaymentMethod\PaymentGatewayEventRepository;
use App\Repository\Profile\PaymentMethod\PaymentGatewayRepository;
use App\Responders\CollectionResponder;
use App\Responders\NoContentResponder;
use App\Service\CompositionService;
use App\Service\PackageService;
use Psr\Log\LoggerInterface;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Swagger\Annotations as SWG;
use Symfony\Component\HttpFoundation\HeaderUtils;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
class PaymentWebHook
{
/** @var PackageService */
private $packageService;
/**
* @param PackageService $packageService
*/
public function __construct(PackageService $packageService)
{
$this->packageService = $packageService;
}
/**
* @Route(path="/payment/{payment_id}/webhook", methods={"POST"})
*
* @SWG\Post(
* tags={"Public"}
* )
*
* @ParamConverter("paymentGateway", options={"id"="payment_id"})
*
* @SWG\Response(
* response=200,
* description="Get the paypal webHook"
* )
*
*
* @param Request $request
* @param PaymentGateway $paymentGateway
* @param NoContentResponder $noContentResponder
* @return JsonResponse
*/
public function __invoke(
Request $request,
PaymentGateway $paymentGateway,
NoContentResponder $noContentResponder,
LoggerInterface $logger
)
{
$payload = $request->getContent();
$sigHeader = isset($_SERVER['HTTP_STRIPE_SIGNATURE']) ? $_SERVER['HTTP_STRIPE_SIGNATURE'] : "";
$logger->info($sigHeader."\n");
$f = fopen("uploads/webhook.txt", 'a+');
fwrite($f, $sigHeader."\n");
fclose($f);
$this->packageService->processingWebHook($payload, $paymentGateway, $sigHeader);
return $noContentResponder();
}
}