privatni = fread($fp, filesize($privatni)); fclose($fp); $this->heslo = $heslo; $fp = fopen($verejny, 'r'); $this->verejny = fread($fp, filesize($verejny)); fclose($fp); } // //////////////////////////////////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////////////////////////////////// public function sign($text) { $pkeyid = openssl_get_privatekey($this->privatni, $this->heslo); openssl_sign($text, $signature, $pkeyid); $signature = base64_encode($signature); openssl_free_key($pkeyid); return $signature; } // //////////////////////////////////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////////////////////////////////// public function verify($text, $signature) { $pubkeyid = openssl_get_publickey($this->verejny); $signature = base64_decode($signature); $vysledek = openssl_verify($text, $signature, $pubkeyid); openssl_free_key($pubkeyid); return ($vysledek == 1) ? true : false; } // //////////////////////////////////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////////////////////////////////// public function getOperation($ID) { $str = [ 'CREATE_ORDER' => 'Vytvoření objednávky', ]; return $str[$ID]; } // //////////////////////////////////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////////////////////////////////// public function getPRCode($number) { $errStr = [ 0 => 'OK. Transakce proběhla v pořádku', 1 => 'Pole príliš dlouhé', 2 => 'Pole príliš krátké', 3 => 'Chybný obsah pole', 4 => 'Pole je prázdné', 5 => 'Chybí povinné pole', 11 => 'Neznámý obchodník', 14 => 'Duplikátní číslo objednávky', 15 => 'Objekt nenalezen', 17 => 'Částka k úhradě překročila autorizovanou částku', 18 => 'Součet kreditovaných částek překročil uhrazenou částku', 20 => 'Objekt není ve stavu odpovídajícím této operaci', 26 => 'Technický problém při spojení s autorizačním centrem', 27 => 'Chybný typ objednávky', 28 => 'Zamítnuto v 3D', 30 => 'Zamítnuto v autorizačním centru', 31 => 'Chybný podpis', 1000 => 'Technický problém', ]; return $errStr[$number]; } // //////////////////////////////////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////////////////////////////////// public function getSRCode($number) { $errStr = [ 0 => 'Bez významu', 1 => 'ORDERNUMBER', 2 => 'MERCHANTNUMBER', 6 => 'AMOUNT', 7 => 'CURRENCY', 8 => 'DEPOSITFLAG', 10 => 'MERORDERNUM', 11 => 'CREDITNUMBER', 12 => 'OPERATION', 18 => 'BATCH', 22 => 'ORDER', 24 => 'URL', 25 => 'MD', 26 => 'DESC', 34 => 'DIGEST', 1001 => 'Zamítnuto v autorizačním centru, karta blokována.', 1002 => 'Zamítnuto v autorizačním centru, autorizace zamítnuta', 1003 => 'Zamítnuto v autorizačním centru, problem karty', 1004 => 'Zamítnuto v autorizačním centru, technický problém', 1005 => 'Zamítnuto v autorizačním centru, problém účtu.', 3000 => 'Neoveřeno v 3D. Vydavatel karty není zapojen do 3D nebo karta nebyla aktivována. Kontaktujte vydavatele karty.', 3001 => 'Držitel karty ověřen', 3002 => 'Neoveřeno v 3D. Vydavatel karty nebo karta není zapojena do 3D. Kontaktujte vydavatele karty.', 3004 => 'Neoveřeno v 3D. Vydavatel karty není zapojen do 3D nebo karta nebyla aktivována. Kontaktujte vydavatele karty.', 3005 => 'Zamítnuto v 3D. Technický problém pri ověření držitele karty. Kontaktujte vydavatele karty.', 3006 => 'Zamítnuto v 3D. Technický problém pri ověření držitele karty.', 3007 => 'Zamítnuto v 3D. Technický problém v systému zúčtující banky. Kontaktujte obchodníka.', 3008 => 'Zamítnuto v 3D. Použit nepodporovaný karetní produkt. Kontaktujte vydavatele karty.', ]; return $errStr[$number]; } // //////////////////////////////////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////////////////////////////////// public function getAction($action) { $ret = ''; switch ($action) { // autorizovana case 'APPROVED': $ret = 'autorizována'; break; // uhrazena case 'DEPOSITED': $ret = 'uhrazena'; break; // zpracovana case 'PROCESSED': $ret = 'zpracována'; break; // kreditovana case 'CREDITED': $ret = 'kreditována'; break; // zamitnuta case 'DECLINED': $ret = 'zamitnuta'; break; // rezervovana case 'REVERSED': $ret = 'rezervována'; break; // uzavrena case 'CLOSED': $ret = 'uzavřena'; break; // nedokoncena case 'REQUESTED': $ret = 'nedokončena'; break; } return $ret; } // //////////////////////////////////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////////////////////////////////// public function getFollowingAction($status) { $ret = []; switch ($status) { // autorizovana case 'APPROVED': $ret = ['REVERSED', 'DEPOSITED']; break; // uhrazena case 'DEPOSITED': $ret = ['APPROVED', 'CLOSED']; break; // zpracovana case 'PROCESSED': $ret = ['CREDITED', 'CLOSED']; break; // kreditovana case 'CREDITED': $ret = ['CREDITED', 'DEPOSITED', 'CLOSED']; break; // zamitnuta case 'DECLINED': $ret = ['DELETED']; break; // rezervovana case 'REVERSED': $ret = ['DELETED']; break; // uzavrena case 'CLOSED': $ret = ['DELETED']; break; } return $ret; } // //////////////////////////////////////////////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////////////////////////////////////////// }