/** * @covers \Epay\Sign::checkSign64() */ public function testCheckSign64() { $data = '<bank name="Kazkommertsbank JSC"> <customer name="John Cardholder" mail="*****@*****.**" phone="223322"> <merchant cert_id="7269C18D00010000005E" name="Shop Name"> <order order_id="000282" amount="3100" currency="398"> <department merchant_id="90028101" amount="1300" rl=ASDFG" /> </order> </merchant> <merchant_sign type="RSA/"> </customer> <customer_sign type="SSL"> 4817C411000100000084 </customer_sign> <results timestamp="2006-11-22 12:20:30 "> <payment merchant_id="90050801" amount="320.50" reference="109600746891" approval_code="730190" response_code="00" Secure="No" card_bin="KAZ" c_hash="6A2D7673A8EEF25A2C33D67CB5AAD091"/> </results> </bank>'; $sign = 'JI3RZMEvexNlDmKsOQhe0pzHuKijnbhvnLu99qh7h+Ju8HvSfGNbEJxXUL58M94tXvu7w0BXSY7M' . 'HePGqz32JuMLAncuzyMwq845linW/sH/WvbZ+6SSYfxDMnvgX0S/pKxbhSXs7lGVBngXOwq7Bhsk' . '8GcDUkWAM5UAsKpEKoI='; $result = $this->sign->setInvert(true)->checkSign64($data, $sign); $this->assertEquals(1, $result); }
/** * Проверят ответ от банка. * * @param $response * @return array|string */ public function processResponse($response) { $parser = new Xml(); $result = $parser->parse($response); if (in_array("ERROR", $result)) { return $result; } if (in_array("DOCUMENT", $result)) { $sign = new Sign($this->config); $sign->setInvert(true); $data = $this->splitSign($response, 'BANK'); $check = $sign->checkSign64($response, 'BANK'); switch ($check) { case 1: $data['CHECKRESULT'] = '[SIGN_GOOD]'; break; case 0: $data['CHECKRESULT'] = '[SIGN_BAD]'; break; default: $data['CHECKRESULT'] = '[SIGN_CHECK_ERROR]: '; // Как сюда засунуть результат? . $kkb->estatus; break; } return array_merge($result, $data); } return "[XML_DOCUMENT_UNKNOWN_TYPE]"; }