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; }