src/Aviatur/PaymentBundle/Services/TokenizerService.php line 18

Open in your IDE?
  1. <?php
  2. namespace Aviatur\PaymentBundle\Services;
  3. use Aviatur\GeneralBundle\Entity\Parameter;
  4. use Aviatur\GeneralBundle\Services\AviaturLogSave;
  5. use Doctrine\Persistence\ManagerRegistry;
  6. class TokenizerService
  7. {
  8.     private \Doctrine\Persistence\ManagerRegistry $managerRegistry;
  9.     private \Aviatur\GeneralBundle\Services\AviaturLogSave $aviaturLogSave;
  10.     private $env;
  11.     private $tokenizerService;
  12.     private $em;
  13.     public function __construct(ManagerRegistry $managerRegistryAviaturLogSave $aviaturLogSave$tokenizerService$env)
  14.     {
  15.         $this->managerRegistry $managerRegistry;
  16.         $this->aviaturLogSave $aviaturLogSave;
  17.         $this->env $env;
  18.         $this->tokenizerService $tokenizerService;
  19.         $this->tokenizerIsActive true;
  20.         $environment $this->env;
  21.         $this->em $this->managerRegistry->getManager();
  22.         $aviatur_service_token $this->em->getRepository(\Aviatur\GeneralBundle\Entity\Parameter::class)->findOneByName('aviatur_service_token');
  23.         $this->retryService 0;
  24.         if (empty($aviatur_service_token) || !$this->tokenizerService || false == $this->tokenizerService) {
  25.             $this->serviceToken 0;
  26.         } else {
  27.             $this->serviceToken $aviatur_service_token->getValue();
  28.             $description $aviatur_service_token->getDescription();
  29.             $this->url json_decode($descriptiontrue)['endPoints'][$environment];
  30.             $this->parameters json_decode($descriptiontrue)['parameters'];
  31.         }
  32.     }
  33.     public function getToken($cardNumber)
  34.     {
  35.         if (!$this->serviceToken) {
  36.             return $cardNumber;
  37.         }
  38.         $data = ['card_number' => $cardNumber];
  39.         $token $this->TokenApi($this->url['authenticate'], $data'authenticate');
  40.         return (empty($token) || isset($token['error'])) ? $cardNumber $token;
  41.     }
  42.     private function TokenApi($url$data$method)
  43.     {
  44.         $headersArray null;
  45.         $postFields null;
  46.         $response null;
  47.         if ($this->retryService 1) {
  48.             $response['error'] = 'El servicio de token no responde';
  49.         } else {
  50.             $curl curl_init();
  51.             switch ($method) {
  52.                 case 'authenticate':
  53.                     $headersArray = ['Content-Type: application/x-www-form-urlencoded'];
  54.                     $postFields 'Username='.$this->parameters['username'].'&Password='.$this->parameters['password'].'';
  55.                     break;
  56.                 case 'TokenCard':
  57.                     $headersArray = [
  58.                         'Content-Type: application/json',
  59.                         'Authorization: Bearer '.$data['token'],
  60.                     ];
  61.                     $postFields json_encode($data);
  62.                     break;
  63.             }
  64.             curl_setopt($curlCURLOPT_URL$url);
  65.             curl_setopt($curlCURLOPT_HTTPHEADER$headersArray);
  66.             curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
  67.             curl_setopt($curlCURLOPT_POSTFIELDS$postFields);
  68.             curl_setopt($curlCURLOPT_FAILONERRORtrue);
  69.             curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
  70.             curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
  71.             $execute curl_exec($curl);
  72.             $response $execute;
  73.             if (curl_error($curl)) {
  74.                 $error_msg curl_error($curl);
  75.                 $response['error'] = $error_msg;
  76.                 ++$this->retryService;
  77.             }
  78.             //$this->aviaturLogSave->logSave(print_r($response, true), 'Tokenizer', $method.'_RS');
  79.             switch ($method) {
  80.                 case 'authenticate':
  81.                     $dataToken = [
  82.                         'strSecHashVal' => $this->parameters['strSecHashVal'],
  83.                         'strMODULECDK_ext' => $this->parameters['strMODULECDK_ext'],
  84.                         'strFININSTCK' => $this->parameters['strFININSTCK'],
  85.                         'strUSERCODEK' => $this->parameters['strUSERCODEK'],
  86.                         'strUSRPASSW1' => $this->parameters['strUSRPASSW1'],
  87.                         'strTOKMOTCOD' => $this->parameters['strTOKMOTCOD'],
  88.                         'strUALTEXTVF' => $this->parameters['strUALTEXTVF'],
  89.                         'strCCARDNBRK_clr' => $data['card_number'],
  90.                         'strCCARDNBRK_cip' => '',
  91.                         'card_number' => $data['card_number'],
  92.                     ];
  93.                     $dataToken['token'] = str_replace('"'''$execute);
  94.                     $response $this->TokenApi($this->url['TokenCard'], $dataToken'TokenCard');
  95.                     break;
  96.                 case 'TokenCard':
  97.                     if (isset($response['error'])) {
  98.                         $response $this->TokenApi($this->url['authenticate'], $data'authenticate');
  99.                     } else {
  100.                         $response $this->json_validate($execute);
  101.                         if (isset($response['value'])) {
  102.                             $response $response['value'];
  103.                         } else {
  104.                             $response $data['card_number'];
  105.                         }
  106.                     }
  107.                     break;
  108.             }
  109.             curl_close($curl);
  110.         }
  111.         return $response;
  112.     }
  113.     public function getTokenBridge()
  114.     {
  115.         $aviatur_bridge_service_token $this->em->getRepository(\Aviatur\GeneralBundle\Entity\Parameter::class)->findOneByName('aviatur_bridge_service_token');
  116.         $url $aviatur_bridge_service_token->getValue();
  117.         $data = [
  118.             'Username' => 'OpenTrip.COM',
  119.             'Password' => '0x5AF1EE58F7625C483336B868E3599FA794A63687',
  120.             'AppName' => 'PASARELA',
  121.         ];
  122. //        $data_string = json_encode($data);
  123.         $ch curl_init();
  124.         curl_setopt($chCURLOPT_URL$url);
  125.         curl_setopt($chCURLOPT_RETURNTRANSFER1);
  126.         curl_setopt($chCURLOPT_FOLLOWLOCATION1);
  127.         curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
  128.         curl_setopt($chCURLOPT_SSL_VERIFYHOST0);
  129.         curl_setopt($chCURLOPT_HTTPHEADER, [
  130.                 'Content-Type: application/json',
  131.             ]);
  132.         curl_setopt($chCURLOPT_POSTtrue);
  133.         curl_setopt($chCURLOPT_POSTFIELDSjson_encode($data));
  134.         $response curl_exec($ch);
  135.         curl_close($ch);
  136. //        $response = file_get_contents($url, null, stream_context_create(array(
  137. //            'http' => array(
  138. //                'method' => 'POST',
  139. //                'header' => 'Content-Type: application/json' . "\r\n"
  140. //                . 'Content-Length: ' . strlen($data_string) . "\r\n",
  141. //                'content' => $data_string,
  142. //            ),
  143. //        )));
  144.         $this->aviaturLogSave->logSave(print_r($responsetrue), 'TokenBridge''info''');
  145.         return json_decode($responsetrue);
  146.     }
  147.     public function json_validate($string)
  148.     {
  149.         // decode the JSON data
  150.         $result json_decode($stringtrue);
  151.         // switch and check possible JSON errors
  152.         switch (json_last_error()) {
  153.             case JSON_ERROR_NONE:
  154.                 $error ''// JSON is valid // No error has occurred
  155.                 break;
  156.             case JSON_ERROR_DEPTH:
  157.                 $error 'The maximum stack depth has been exceeded.';
  158.                 break;
  159.             case JSON_ERROR_STATE_MISMATCH:
  160.                 $error 'Invalid or malformed JSON.';
  161.                 break;
  162.             case JSON_ERROR_CTRL_CHAR:
  163.                 $error 'Control character error, possibly incorrectly encoded.';
  164.                 break;
  165.             case JSON_ERROR_SYNTAX:
  166.                 $error 'Syntax error, malformed JSON.';
  167.                 break;
  168.             // PHP >= 5.3.3
  169.             case JSON_ERROR_UTF8:
  170.                 $error 'Malformed UTF-8 characters, possibly incorrectly encoded.';
  171.                 break;
  172.             // PHP >= 5.5.0
  173.             case JSON_ERROR_RECURSION:
  174.                 $error 'One or more recursive references in the value to be encoded.';
  175.                 break;
  176.             // PHP >= 5.5.0
  177.             case JSON_ERROR_INF_OR_NAN:
  178.                 $error 'One or more NAN or INF values in the value to be encoded.';
  179.                 break;
  180.             case JSON_ERROR_UNSUPPORTED_TYPE:
  181.                 $error 'A value of a type that cannot be encoded was given.';
  182.                 break;
  183.             default:
  184.                 $error 'Unknown JSON error occured.';
  185.                 break;
  186.         }
  187.         if ('' !== $error) {
  188.             $result['error'] = $error;
  189.         }
  190.         // everything is OK
  191.         return $result;
  192.     }
  193. }