Формирование подписи
Хеш-сумма сообщения – последовательность байтов в шестнадцатиричном виде (0-9, A-F или a-f), рассчитанная хеш-функцией, указанной в конфигурации магазина.
Применяемые алгоритмы:
- SHA512 – по умолчанию;
- SHA256.
Алгоритм формирования:
- Все поля сообщения в алфавитном порядке (сортировка по имени параметра) следования склеиваются в одну строку;
- Далее в конец строки добавляется секретное слово точки обслуживания (Secret1 для запроса или Secret2 для ответа). Символ ";" является разделителем между параметрами, в конце и начале строки разделитель не ставится;
- По полученной на предыдущем этапе строке выбранной хеш-функцией рассчитывается хеш-сумма;
- Результат расчета является значением данного параметра. Сам порядок следования параметров в сообщении не регламентирован. Содержимое поля ap_signature не помещается в строку, по которой производится расчет хеш-суммы.
Пример формирования подписи:
<?php
function formSignature(/* array */ $data)
{
$string = null;
ksort($data, SORT_NATURAL);
foreach ($data as $param => $value)
$string .= $value . ';';
$string .= ARTPAY_SECRET1;
$key = hash(ARTPAY_HASH_METHOD, $string);
return $key;
}
?>
Пример проверки подписи в ответе сервера:
<?php
function checkSignature(/* array */ $data)
{
if (!isset($data['ap_signature']))
return false;
$addSignature = $data['ap_signature'];
unset($data['ap_signature']);
ksort($data, SORT_NATURAL);
$string = implode(';', $data) . ';' . ARTPAY_SECRET2;
return hash(ARTPAY_HASH_METHOD, $string) == $addSignature;
}
?>