src/EventSubscriber/PaymentSubscriber.php line 42

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use ApiPlatform\Core\EventListener\EventPriorities;
  4. use App\Entity\Orders;
  5. use App\Repository\OrderRepository;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Psr\Log\LoggerInterface;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpKernel\Event\ViewEvent;
  11. use Symfony\Component\HttpKernel\KernelEvents;
  12. use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
  13. use Symfony\Contracts\HttpClient\HttpClientInterface;
  14. class PaymentSubscriber implements EventSubscriberInterface
  15. {
  16.     private $client;
  17.     private $logger;
  18.     private $entityManager;
  19.     public function __construct(HttpClientInterface $client,LoggerInterface $logger,EntityManagerInterface $entityManager)
  20.     {
  21.         $this->client $client;
  22.         $this->logger $logger;
  23.         $this->entityManager $entityManager;
  24.     }
  25.     /**
  26.      *
  27.      * @return array The event names to listen to
  28.      */
  29.     public static function getSubscribedEvents()
  30.     {
  31.         return [
  32.             KernelEvents::VIEW => ['payment'EventPriorities::POST_WRITE],
  33.         ];
  34.     }
  35.     public function payment(ViewEvent $event)
  36.     {
  37.         $oder $event->getControllerResult();
  38.         $method $event->getRequest()->getMethod();
  39.         if (!$oder instanceof Orders || Request::METHOD_POST !== $method) {
  40.             return;
  41.         }
  42.         $date $oder->getOrderDate()->format('YmdHis');
  43.         $this->logger->info("========");
  44.         $this->logger->info($oder->getPaymentMethode()->getName());
  45.         $this->logger->info("========");
  46.         if($oder->getPaymentMethode()->getName() === 'Mobile money'){
  47.         }else{
  48.             //$orderId = (string)$oder->getId();
  49.             return;
  50.             $oder->setTransactionId($this->generateNewTransactionId());
  51.             $this->logger->info("========");
  52.             $this->logger->info($oder->getId());
  53.             $this->logger->info("========");
  54.             $formParameters $this->createForm($oder->getAmount(),$date,$oder->getTransactionId(),$oder->getId());
  55.             try {
  56.                 $response $this->client->request(
  57.                     'POST',
  58.                     'https://e-paiement-securite-bici.com/vads-payment/entry.silentInit.a', [
  59.                         'body' => $formParameters,
  60.                     ]
  61.                 );
  62.             } catch (TransportExceptionInterface $e) {
  63.                 throw new \RuntimeException($e);
  64.             }
  65.             if($response->getStatusCode() === 200){
  66.                 $redirectionUrl  $response->toArray()['redirect_url'];
  67.                 $oder->redirect_url $redirectionUrl;
  68.                 $oder->setSignature($formParameters['signature']);
  69.             }
  70.             $this->entityManager->persist($oder);
  71.             $this->entityManager->flush();
  72.         }
  73.     }
  74.     public function createForm(string $amount,$date,$trans_id$idOrder){
  75.         $formParameters = [];
  76.         $merchantSiteId  '92887726';
  77.         $usedMerchantKey 'uZEeoLtYDxhhqz89'//'oRk0BU4hfw5Lr36x';
  78.         $formParameters['vads_action_mode'] ='INTERACTIVE';
  79.         $formParameters['vads_amount'] =$amount;
  80.         $formParameters['vads_ctx_mode'] ='PRODUCTION';
  81.         $formParameters['vads_currency'] ='952';
  82.         $formParameters['vads_page_action'] ='PAYMENT';
  83.         $formParameters['vads_payment_config'] ='SINGLE';
  84.         //$formParameters['vads_order_id'] ="{$idOrder}";
  85.         $formParameters['vads_site_id'] =$merchantSiteId;
  86.         $formParameters['vads_theme_config'] ='SIMPLIFIED_DISPLAY=true';
  87.         $formParameters['vads_trans_date'] = $date;
  88.         $formParameters['vads_trans_id'] = $trans_id;
  89.         //$formParameters['vads_url_cancel'] = "http://webview_" . $merchantSiteId . ".cancel";
  90.         //$formParameters['vads_url_error'] = "http://webview_" . $merchantSiteId . ".error";
  91.         //$formParameters['vads_url_refused'] = "http://webview_" . $merchantSiteId . ".refused";
  92.         //$formParameters['vads_url_return'] = "http://webview_" . $merchantSiteId . ".return";
  93.         //$formParameters['vads_url_success'] = "http://webview_" . $merchantSiteId . ".success";
  94.         $formParameters['vads_version'] = "V2";
  95.         //Create the string to sign
  96.         $concatenateMapParams "";
  97.         foreach ($formParameters as $value ){
  98.             $concatenateMapParams .=$value."+";
  99.         }
  100.         $concatenateMapParams .=$usedMerchantKey;
  101.         $formParameters['signature'] = sha1($concatenateMapParams);
  102.         return $formParameters;
  103.     }
  104.     public function generateNewTransactionId(){
  105.         $count  =  random_int(500000999998);
  106.         return $count;
  107.     }
  108. }