Ejemplo n.º 1
0
 public function valTPV($Ds_SignatureVersion, $Ds_MerchantParameters, $Ds_Signature, $IDS = 1)
 {
     //Creem objecte
     $RedSys = new RS();
     $Options = new OptionsModel();
     //Descodifiquem i passem a array els paràmetres
     $decode = $RedSys->decodeMerchantParameters($Ds_MerchantParameters);
     $RedSys->stringToArray($decode);
     $parametres = $RedSys->vars_pay;
     $parametres['Error'] = 0;
     //Carreguem la id de l'entrada i comencem el procés
     $tmp = explode('-', $parametres['Ds_MerchantData']);
     if (!isset($tmp[1])) {
         $parametres['Error'] = "MATRICULA";
     } else {
         $idE = intval(explode('-', $parametres['Ds_MerchantData'])[1]);
         $OE = $this->getEntradaById($idE);
         if ($OE['idEntrada'] > 0) {
             $signatura_rebuda = $Ds_Signature;
             $signatura_generada = $RedSys->createMerchantSignatureNotif($Options->getOption('TPV_ENT_PASSWORD'), $Ds_MerchantParameters);
             //Si la signatura és correcta i no ha donat error, marquem la matrícula com a pagada
             if ($signatura_rebuda != $signatura_generada) {
                 $parametres['Error'] = "SIGNATURA";
             } elseif ($parametres['Ds_Response'] != '0000') {
                 $parametres['Error'] = "RESPONSE";
             } else {
                 $preu = strval($parametres['Ds_Amount']) / 100;
                 $OE['estat'] = 'AP';
                 $OE['tpv_operacio'] = $parametres['Ds_AuthorisationCode'];
                 $OE['tpv_order'] = $parametres['Ds_Order'];
                 $this->saveEntrada($OE);
                 $parametres['OE'] = $OE;
             }
         } else {
             $parametres['Error'] = 'MATRICULA';
         }
     }
     return $parametres;
 }