Использую данную функцию для работы с Интеркассой, но почему-то при реальных платежах срабатывает через раз, а при тестовых вовсе не срабатывает. Как это исправить, возможно есть какая-то другая функция, которая будет работать с 100% вероятностью?=/
function CheckResult($shop_id, $secret_key, $post, $test_key) {
if ($post['ik_co_id'] != $shop_id) return false;
$ik_key = ($post['ik_pw_via'] == 'test_interkassa_test_xts') ? $test_key : $secret_key;
$data = array();
foreach ($post as $key => $value) {
if (!preg_match('/ik_/', $key)) continue;
$data[$key] = $value;
}
$ik_sign = $data['ik_sign'];
unset($data['ik_sign']);
ksort($data, SORT_STRING);
array_push($data, $ik_key);
$signString = implode(':', $data);
$sign = base64_encode(md5($signString, true));
if ($sign === $ik_sign && $data['ik_inv_st'] == 'success') return true;
else return false;
}