src/Controller/SriCabBookingController.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Booking;
  4. use App\Form\BookingType;
  5. use DateTime;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. class SriCabBookingController extends AbstractController
  12. {
  13.     #[Route('/booking{id}_step_1'name'app_sri_cab_booking_step_1'requirements: ['id' => '\d+'])]
  14.     public function step1(ManagerRegistry $d,$idRequest $r): Response
  15.     {
  16.         $price 40;
  17.         $ref "sricab";
  18.         if ($id == 1)
  19.         {
  20.             $ref "1DayTrip";
  21.             $price 30;
  22.         }
  23.         elseif ($id == 2)
  24.         {
  25.             $ref "2DayTrip";
  26.             $price 50;
  27.         }
  28.         elseif ($id == 3)
  29.         {
  30.             $ref "3DayTrip";
  31.             $price 100;
  32.         }
  33.         elseif ($id == 4)
  34.         {
  35.             $ref "Custom10";
  36.             $price 10;
  37.         }elseif ($id == 5)
  38.         {
  39.             $ref "Custom20";
  40.             $price 20;
  41.         }elseif ($id == 6)
  42.         {
  43.             $ref "Custom40";
  44.             $price 40;
  45.         }
  46.         else
  47.             $this->redirectToRoute('app_sri_cab_home');
  48.         /*
  49.          * @var $entity Booking
  50.          */
  51.         $entity = new Booking();
  52.         $entity->setNbOfSeats(1);
  53.         $form $this->createForm(BookingType::class, $entity);
  54.         $em $d->getManager();
  55. //
  56. //        return $this->render("sri_cab_booking/step_1.html.twig", ['form' => $form->createView()]);
  57.         $form->handleRequest($r);
  58.         if ($form->isSubmitted() && $form->isValid()) {
  59.             if ($form->isSubmitted() && $form->isValid()) {
  60.                 $data $form->getData();
  61.                 $nbOfSeats = (int)$entity->getNbOfSeats();
  62.                 if ($nbOfSeats <= 0) {
  63.                     return $this->render("sri_cab_booking/step_1.html.twig", ['form' => $form->createView()]);
  64.                 }
  65. //                $entity->setTotal(10);
  66. //                $entity->setShow(1);
  67. //        //        $entity->setStatus(1);
  68. //                $entity->setDestinationId(1);
  69. //                $entity->setDestnationName("1");
  70. //                $entity->setDateBooking(new \DateTime());
  71. //                $entity->setMail("helo@mail.fr");
  72. //                $entity->setPhone("050505");
  73. //                $entity->setNom("he");
  74. //                $entity->setPrix("5050");
  75.                 $entity->setDateBooking(new DateTime("now"));
  76.                 $entity->setPrix($price);
  77.                 $entity->setTotal(number_format($nbOfSeats $entity->getPrix() ,2));
  78. //                $em->persist($entity);
  79. //                $em->flush();
  80.                 $paySheet $this->generatePaiement($ref,$entity->getMail(),number_format($entity->getTotal(),2), $entity->getNbOfSeats(),$entity->getNom(),$entity->getNom());
  81.                 return $this->render("sri_cab_booking/step_2.html.twig"$paySheet);
  82.             }
  83.             // ... perform some action, such as saving the data to the database
  84.             // return $this->redirectToRoute('task_success');
  85.         }
  86.         return $this->render("sri_cab_booking/step_1.html.twig", ['form' => $form->createView(), 'ref' => $ref]);
  87.     }
  88.     #[Route('/booking'name'app_sri_cab_booking')]
  89.     public function index(): Response
  90.     {
  91.         $now = new DateTime();
  92.         $pbx_site 3142974;                                                            //variable de test 9999999
  93.         $pbx_rang 001;                                                            //variable de test 95
  94.         $pbx_identifiant 38019112;                                        //variable de test 123456789
  95.         $pbx_total 140;                                                            //variable de test 200
  96. // Suppression des points ou virgules dans le montant
  97.         $pbx_total str_replace(","""$pbx_total);
  98.         $pbx_total str_replace("."""$pbx_total);
  99.         $pbx_cmd 'cmd_test_1';                                                        //variable de test cmd_test1
  100.         $pbx_porteur 'test@test.fr';                                                    //variable de test test@test.fr
  101. // Param�trage de l'url de retour back office site (notification de paiement IPN) :
  102.         $pbx_repondre_a 'https://www.sricab.fr/log';
  103. // Param�trage des donn�es retourn�es via l'IPN :
  104.         $pbx_retour 'Mt:M;Ref:R;Auto:A;Erreur:E';
  105. // Param�trage des urls de redirection navigateur client apr�s paiement :
  106.         $pbx_effectue 'https://www.sricab.fr/';
  107.         $pbx_annule 'https://www.sricab.fr/';
  108.         $pbx_refuse 'https://www.sricab.fr/';
  109. // On r�cup�re la date au format ISO-8601 :
  110.         $dateTime date("c");
  111.         $dateTime $now->format('c');
  112. // Nombre de produit envoy� dans PBX_SHOPPINGCART :
  113.         $pbx_nb_produit 5;                                    //variable de test 5
  114. // Construction de PBX_SHOPPINGCART :
  115.         $pbx_shoppingcart "<?xml version=\"1.0\" encoding=\"utf-8\"?><shoppingcart><total><totalQuantity>" $pbx_nb_produit "</totalQuantity></total></shoppingcart>";
  116. // Valeurs envoy�es dans PBX_BILLING :
  117.         $pbx_prenom_fact 'prenom de l utilisateur de facturation';                            //variable de test Jean-Marie
  118.         $pbx_nom_fact 'nom de l utilisateur de facturation';                                    //variable de test Thomson
  119.         $pbx_adresse1_fact 'ligne1 de l adresse de facturation';                                //variable de test 1 rue de Paris
  120.         $pbx_adresse2_fact 'ligne2 de l adresse de facturation';                                //variable de test <vide>
  121.         $pbx_zipcode_fact 93140;                            //variable de test 75001
  122.         $pbx_city_fact 'ville de l adresse de facturation';                                    //variable de test Paris
  123.         $pbx_country_fact 250;        //variable de test 250 (pour la France)
  124. // Construction de PBX_BILLING :
  125.         $pbx_billing "<?xml version=\"1.0\" encoding=\"utf-8\"?><Billing><Address><FirstName>" $pbx_prenom_fact "</FirstName>" .
  126.             "<LastName>" $pbx_nom_fact "</LastName><Address1>" $pbx_adresse1_fact "</Address1>" .
  127.             "<Address2>" $pbx_adresse2_fact "</Address2><ZipCode>" $pbx_zipcode_fact "</ZipCode>" .
  128.             "<City>" $pbx_city_fact "</City><CountryCode>" $pbx_country_fact "</CountryCode>" .
  129.             "</Address></Billing>";
  130. // --------------- S�L�CTION DE L'ENVIRRONEMENT ---------------
  131. // Recette (paiements de test)  :
  132.         //$urletrans ="https://recette-tpeweb.e-transactions.fr/php/";
  133. // Production (paiements r�els) :
  134.         // URL principale :
  135.         $urletrans "https://tpeweb.e-transactions.fr/php/";
  136.         // URL secondaire :
  137.         // $urletrans ="https://tpeweb1.e-transactions.fr/php/";
  138. // --------------- R�CUP�RATION DE LA CL� HMAC ---------------
  139. // Connection � la base de donn�es
  140. // mysql_connect...
  141. // On r�cup�re la cl� secr�te HMAC (stock�e dans une base de donn�es par exemple) et que l�on renseigne dans la variable $hmackey;
  142.         $hmackey '4CC5271BA9235E6C8A483E55BEB178965050EE16D323126F43A8BA45EB2A7E6C2D8B4F46B2DFEB96CCFF1389D273FD6DDFA5C0B0E030071EDCDE580CE84B42A9';
  143. //$hmackey = '4FA32C1D6333B627F567095D5F3B2AE1804289AAB5EF09AF6EB8DAEBE9C9CFFF5FE10ADA9DBB4A0DDA0B55E5CD1CCF80C2AD867C2E37D19D0618AD5884339E19';
  144.         // --------------- TRAITEMENT DES VARIABLES ---------------
  145.         // On crée la chaîne à hacher sans URLencodage
  146.         $msg "PBX_SITE=" $pbx_site .
  147.             "&PBX_RANG=" $pbx_rang .
  148.             "&PBX_IDENTIFIANT=" $pbx_identifiant .
  149.             "&PBX_TOTAL=" $pbx_total .
  150.             "&PBX_DEVISE=978" .
  151.             "&PBX_CMD=" $pbx_cmd .
  152.             "&PBX_PORTEUR=" $pbx_porteur .
  153.             "&PBX_REPONDRE_A=" $pbx_repondre_a .
  154.             "&PBX_RETOUR=" $pbx_retour .
  155.             "&PBX_EFFECTUE=" $pbx_effectue .
  156.             "&PBX_ANNULE=" $pbx_annule .
  157.             "&PBX_REFUSE=" $pbx_refuse .
  158.             "&PBX_HASH=SHA512" .
  159.             "&PBX_TIME=" $dateTime .
  160.             "&PBX_SHOPPINGCART=" $pbx_shoppingcart .
  161.             "&PBX_BILLING=" $pbx_billing;
  162.         // echo $msg;
  163.         // Si la clé est en ASCII, On la transforme en binaire
  164.         $binKey pack("H*"$hmackey);
  165.         // On calcule l’empreinte (à renseigner dans le paramètre PBX_HMAC) grâce à la fonction hash_hmac et //
  166.         // la clé binaire
  167.         // On envoi via la variable PBX_HASH l'algorithme de hachage qui a été utilisé (SHA512 dans ce cas)
  168.         // Pour afficher la liste des algorithmes disponibles sur votre environnement, décommentez la ligne //
  169.         // suivante
  170.         // print_r(hash_algos());
  171.         $hmac strtoupper(hash_hmac('sha512'$msg$binKey));
  172.         // La chaîne sera envoyée en majuscule, d'où l'utilisation de strtoupper()
  173.         // On crée le formulaire à envoyer
  174.         // ATTENTION : l'ordre des champs dans le formulaire est extrêmement important, il doit
  175.         // correspondre exactement à l'ordre des champs dans la chaîne hachée.
  176.         return $this->render('sri_cab_booking/index.html.twig', [
  177.             'pbx_site' => $pbx_site,
  178.             'pbx_rang' => $pbx_rang,
  179.             'pbx_identifiant' => $pbx_identifiant,
  180.             'pbx_total' => $pbx_total,
  181.             'pbx_cmd' => $pbx_cmd,
  182.             'pbx_porteur' => $pbx_porteur,
  183.             'pbx_repondre_a' => $pbx_repondre_a,
  184.             'pbx_retour' => $pbx_retour,
  185.             'pbx_effectue' => $pbx_effectue,
  186.             'pbx_annule' => $pbx_annule,
  187.             'pbx_refuse' => $pbx_refuse,
  188.             'dateTime' => $dateTime,
  189.             'pbx_shoppingcart' => $pbx_shoppingcart,
  190.             'pbx_billing' => $pbx_billing,
  191.             'hmac' => $hmac,
  192.             'urletrans' => $urletrans
  193.         ]);
  194.     }
  195.     private function generatePaiement($pbx_cmd,$pbx_porteur,$pbx_total$pbx_nb_produit,$pbx_prenom_fact,$pbx_nom_fact)
  196.     {
  197.         $now = new DateTime();
  198.         $pbx_site 3142974;                                                            //variable de test 9999999
  199.         $pbx_rang 001;                                                            //variable de test 95
  200.         $pbx_identifiant 38019112;                                        //variable de test 123456789
  201.         //$pbx_total = 200;                                                            //variable de test 200
  202. // Suppression des points ou virgules dans le montant
  203.         $pbx_total str_replace(","""$pbx_total);
  204.         $pbx_total str_replace("."""$pbx_total);
  205.         //$pbx_cmd = 'cmd_test_1';                                                        //variable de test cmd_test1
  206.         //$pbx_porteur = 'test@test.fr';                                                    //variable de test test@test.fr
  207. // Param�trage de l'url de retour back office site (notification de paiement IPN) :
  208.         $pbx_repondre_a 'http://www.votre-site.extention/page-de-back-office-site';
  209. // Param�trage des donn�es retourn�es via l'IPN :
  210.         $pbx_retour 'Mt:M;Ref:R;Auto:A;Erreur:E';
  211. // Param�trage des urls de redirection navigateur client apr�s paiement :
  212.         $pbx_effectue 'http://www.votre-site.extention/accepte.php';
  213.         $pbx_annule 'http://www.votre-site.extention/annule.php';
  214.         $pbx_refuse 'http://www.votre-site.extention/refuse.php';
  215. // On r�cup�re la date au format ISO-8601 :
  216.         $dateTime date("c");
  217.         $dateTime $now->format('c');
  218. // Nombre de produit envoy� dans PBX_SHOPPINGCART :
  219.        // $pbx_nb_produit = 5;                                    //variable de test 5
  220. // Construction de PBX_SHOPPINGCART :
  221.         $pbx_shoppingcart "<?xml version=\"1.0\" encoding=\"utf-8\"?><shoppingcart><total><totalQuantity>" $pbx_nb_produit "</totalQuantity></total></shoppingcart>";
  222. // Valeurs envoy�es dans PBX_BILLING :
  223.         //$pbx_prenom_fact = 'prenom de l utilisateur de facturation';                            //variable de test Jean-Marie
  224.         //$pbx_nom_fact = 'nom de l utilisateur de facturation';                                    //variable de test Thomson
  225.         $pbx_adresse1_fact '';                                //variable de test 1 rue de Paris
  226.         $pbx_adresse2_fact '';                                //variable de test <vide>
  227.         $pbx_zipcode_fact '';                            //variable de test 75001
  228.         $pbx_city_fact 'Paris';                                    //variable de test Paris
  229.         $pbx_country_fact 250;        //variable de test 250 (pour la France)
  230. // Construction de PBX_BILLING :
  231.         $pbx_billing "<?xml version=\"1.0\" encoding=\"utf-8\"?><Billing><Address><FirstName>" $pbx_prenom_fact "</FirstName>" .
  232.             "<LastName>" $pbx_nom_fact "</LastName><Address1>" $pbx_adresse1_fact "</Address1>" .
  233.             "<Address2>" $pbx_adresse2_fact "</Address2><ZipCode>" $pbx_zipcode_fact "</ZipCode>" .
  234.             "<City>" $pbx_city_fact "</City><CountryCode>" $pbx_country_fact "</CountryCode>" .
  235.             "</Address></Billing>";
  236. // --------------- S�L�CTION DE L'ENVIRRONEMENT ---------------
  237. // Recette (paiements de test)  :
  238.         //$urletrans ="https://recette-tpeweb.e-transactions.fr/php/";
  239. // Production (paiements r�els) :
  240.         // URL principale :
  241.         $urletrans "https://tpeweb.e-transactions.fr/php/";
  242.         $hmackey '4CC5271BA9235E6C8A483E55BEB178965050EE16D323126F43A8BA45EB2A7E6C2D8B4F46B2DFEB96CCFF1389D273FD6DDFA5C0B0E030071EDCDE580CE84B42A9';
  243.         //dev
  244.         //$hmackey = '4FA32C1D6333B627F567095D5F3B2AE1804289AAB5EF09AF6EB8DAEBE9C9CFFF5FE10ADA9DBB4A0DDA0B55E5CD1CCF80C2AD867C2E37D19D0618AD5884339E19';
  245.         // --------------- TRAITEMENT DES VARIABLES ---------------
  246.         // On crée la chaîne à hacher sans URLencodage
  247.         $msg "PBX_SITE=" $pbx_site .
  248.             "&PBX_RANG=" $pbx_rang .
  249.             "&PBX_IDENTIFIANT=" $pbx_identifiant .
  250.             "&PBX_TOTAL=" $pbx_total .
  251.             "&PBX_DEVISE=978" .
  252.             "&PBX_CMD=" $pbx_cmd .
  253.             "&PBX_PORTEUR=" $pbx_porteur .
  254.             "&PBX_REPONDRE_A=" $pbx_repondre_a .
  255.             "&PBX_RETOUR=" $pbx_retour .
  256.             "&PBX_EFFECTUE=" $pbx_effectue .
  257.             "&PBX_ANNULE=" $pbx_annule .
  258.             "&PBX_REFUSE=" $pbx_refuse .
  259.             "&PBX_HASH=SHA512" .
  260.             "&PBX_TIME=" $dateTime .
  261.             "&PBX_SHOPPINGCART=" $pbx_shoppingcart .
  262.             "&PBX_BILLING=" $pbx_billing;
  263.         // Si la clé est en ASCII, On la transforme en binaire
  264.         $binKey pack("H*"$hmackey);
  265.         $hmac strtoupper(hash_hmac('sha512'$msg$binKey));
  266.         return [
  267.             'pbx_site' => $pbx_site,
  268.             'pbx_rang' => $pbx_rang,
  269.             'pbx_identifiant' => $pbx_identifiant,
  270.             'pbx_total' => $pbx_total,
  271.             'pbx_cmd' => $pbx_cmd,
  272.             'pbx_porteur' => $pbx_porteur,
  273.             'pbx_repondre_a' => $pbx_repondre_a,
  274.             'pbx_retour' => $pbx_retour,
  275.             'pbx_effectue' => $pbx_effectue,
  276.             'pbx_annule' => $pbx_annule,
  277.             'pbx_refuse' => $pbx_refuse,
  278.             'dateTime' => $dateTime,
  279.             'pbx_shoppingcart' => $pbx_shoppingcart,
  280.             'pbx_billing' => $pbx_billing,
  281.             'hmac' => $hmac,
  282.             'urletrans' => $urletrans
  283.         ];
  284.     }
  285. }