Your IP : 216.73.216.170
<?php
define("NO_KEEP_STATISTIC", "Y");
define("NO_AGENT_STATISTIC","Y");
define("NOT_CHECK_PERMISSIONS", true);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$params = array (
'TERMINAL' => '20020066',
'TRTYPE' => '1',
'ORDER' => '000002',
'AMOUNT' => '138.54',
'CURRENCY' => 'RUB',
'ACTION' => '2',
'RC' => '57',
'APPROVAL' => '',
'RRN' => '722995001425',
'INT_REF' => '5D0E1598D16463B8',
'TIMESTAMP' => '20170817201928',
'NONCE' => 'cd8807398c50380381a4eb600c1ebec2',
'P_SIGN' => 'FC361C01B41069385C266353221249A71CE24F3EAE2546931FFF951FD5575668',
'CARD' => 'XXXXXXXXXXXX4356',
);
echo "<pre>"; print_r($params); echo "</pre><br>";
$mac = "34CFDABD52E424FF2DB2CCFE8D98C75ADE3517E372B8B809C80C976637DD3113";
$secret = (($c=strlen($params["TERMINAL"]))<=0)?"-":$c.$params["TERMINAL"];
$secret .= (($c=strlen($params["TRTYPE"]))<=0)?"-":$c.$params["TRTYPE"];
$secret .= (($c=strlen($params["ORDER"]))<=0)?"-":$c.$params["ORDER"];
$secret .= (($c=strlen($params["AMOUNT"]))<=0)?"-":$c.$params["AMOUNT"];
$secret .= (($c=strlen($params["CURRENCY"]))<=0)?"-":$c.$params["CURRENCY"];
$secret .= (($c=strlen($params["ACTION"]))<=0)?"-":$c.$params["ACTION"];
$secret .= (($c=strlen($params["RC"]))<=0)?"-":$c.$params["RC"];
$secret .= (($c=strlen($params["APPROVAL"]))<=0)?"-":$c.$params["APPROVAL"];
$secret .= (($c=strlen($params["RRN"]))<=0)?"-":$c.$params["RRN"];
$secret .= (($c=strlen($params["INT_REF"]))<=0)?"-":$c.$params["INT_REF"];
$secret .= (($c=strlen($params["TIMESTAMP"]))<=0)?"-":$c.$params["TIMESTAMP"];
$secret .= (($c=strlen($params["NONCE"]))<=0)?"-":$c.$params["NONCE"];
$secret_test = "|".((($c=strlen($params["TERMINAL"]))<=0)?"-":$c."|".$params["TERMINAL"]);
$secret_test .= "|".((($c=strlen($params["TRTYPE"]))<=0)?"-":$c."|".$params["TRTYPE"]);
$secret_test .= "|".((($c=strlen($params["ORDER"]))<=0)?"-":$c."|".$params["ORDER"]);
$secret_test .= "|".((($c=strlen($params["AMOUNT"]))<=0)?"-":$c."|".$params["AMOUNT"]);
$secret_test .= "|".((($c=strlen($params["CURRENCY"]))<=0)?"-":$c."|".$params["CURRENCY"]);
$secret_test .= "|".((($c=strlen($params["ACTION"]))<=0)?"-":$c."|".$params["ACTION"]);
$secret_test .= "|".((($c=strlen($params["RC"]))<=0)?"-":$c."|".$params["RC"]);
$secret_test .= "|".((($c=strlen($params["APPROVAL"]))<=0)?"-":$c."|".$params["APPROVAL"]);
$secret_test .= "|".((($c=strlen($params["RRN"]))<=0)?"-":$c."|".$params["RRN"]);
$secret_test .= "|".((($c=strlen($params["INT_REF"]))<=0)?"-":$c."|".$params["INT_REF"]);
$secret_test .= "|".((($c=strlen($params["TIMESTAMP"]))<=0)?"-":$c."|".$params["TIMESTAMP"]);
$secret_test .= "|".((($c=strlen($params["NONCE"]))<=0)?"-":$c."|".$params["NONCE"]);
echo "\$secret = ".$secret."<br><br>";
echo "\$secret_test = ".$secret_test."<br><br>";
$P_SIGN = hmac_sha256($mac,$secret);
echo "\$P_SIGN = ".$P_SIGN;
/**
* @param string $str
* @return string
*/
function raw2byte($str)
{
mb_internal_encoding('UTF-8');
$str = mb_convert_encoding($str, 'UCS-2LE', 'UTF-8');
$strlength = strlen($str) / 2;
$ret = array($strlength);
for($i = 0; $i < $strlength; $i++){
$k1 = ord(substr($str, 2*$i, 1));
$k2 = ord(substr($str, 2*$i+1, 1));
$k = $k2 * 256 + $k1;
$ret[$i] = dechex((($k >> 4) & 0x0F)) . dechex(($k & 0x0F));
}
return hex2bin(join('', $ret));
}
/**
* @param string $hex_key
* @param string $secret
* @return string
*/
function hmac_sha256($hex_key, $secret) {
$byte_key = hex2bin($hex_key);
$byte_msg = raw2byte($secret);
return strtoupper(hash_hmac('sha256', $byte_msg, $byte_key));
}
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");