Перейти к содержанию

Формирование подписи

Хеш-сумма сообщения – последовательность байтов в шестнадцатиричном виде (0-9, A-F или a-f), рассчитанная хеш-функцией, указанной в конфигурации магазина.

Применяемые алгоритмы:

  • SHA512 – по умолчанию;
  • SHA256.

Алгоритм формирования:

  1. Все поля сообщения в алфавитном порядке (сортировка по имени параметра) следования склеиваются в одну строку;
  2. Далее в конец строки добавляется секретное слово точки обслуживания (Secret1 для запроса или Secret2 для ответа). Символ ";" является разделителем между параметрами, в конце и начале строки разделитель не ставится;
  3. По полученной на предыдущем этапе строке выбранной хеш-функцией рассчитывается хеш-сумма;
  4. Результат расчета является значением данного параметра. Сам порядок следования параметров в сообщении не регламентирован. Содержимое поля 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;
}
?>