Я работаю над интеграцией сервера оплаты через веб-сайт WordPress. Все это работает нормально, за исключением последнего шага, когда веб-сайт должен проверить входящую фразу раскола. Даже после того, как платеж прошел, эта фраза не будет подтверждена, и я получу «ошибку WordPress», сообщающую, что транзакция не удалась.
Это код, который я использую на этапе проверки, можете ли вы найти что-нибудь неладное?
Спасибо.
/**
*
*/
function check_barclay_response()
{
ob_clean();
header('HTTP/1.1 200 OK');
$datacheck = array();
$datacheck1 = array();
foreach ($_REQUEST as $key => $value) {
if ($value == "") {
continue;
}
$datacheck[$key] = $value;
$datacheck1[strtoupper($key)] = strtoupper($value);
}
$verify = $this->checkShaOut($datacheck);
if ($verify) {
$this->transaction_successfull($datacheck1);
} else {
wp_die('Transaction is unsuccessfull!');
}
}
/**
* @param $datacheck
* @return bool
*/
protected function checkShaOut($datacheck)
{
$shaout = $this->sha_out;
$origsig = $datacheck['SHASIGN'];
unset($datacheck['SHASIGN']);
unset($datacheck['wc-api']);
uksort($datacheck, 'strcasecmp');
$shasign = "";
$shasig = null;
foreach ($datacheck as $key => $value) {
$shasig .= trim(strtoupper($key)) . '=' . utf8_encode(trim($value)) . $shaout;
}
$shasig = strtoupper(hash('sha1', $shasig));
if ($shasig == $origsig) {
return true;
} else {
return false;
}
}