Разбираюсь с банком - там процесс следующий - получаем секретный ключ и контрольную строку собираем. далее на основе этих данных генерируем HMAC по алгоритму SHA-256 и тем самым подписываем форму оплаты.
Секретный ключ они выдают в Base64, для генерирования HMAC его нужно перевести в HEX. HMAC должен в base64 отправляться(можно в hex, но base64 предпочтительнее).
В общем на php я написал так
$binary = base64_decode($secret);
$hex = strtoupper(bin2hex($binary));
$hmac = base64_encode(hash_hmac('sha256', $stroka, $hex, true));
Но сгенерированный таким образом HMAC не подходит. Банк выдает утилиту где можно генерирование с помощью javascript провести и там HMAC генерируется нормальным...ну т.е. принимаемый банком.
Где что может быть не так? В JS не силен настолько чтобы найти отличия
Вот развернул
Вариант на PHP
Код файла следующий
$hmac = hash_hmac('sha256', '1680024001;80024001;30;5.00', 'AF63D092A79416EC6CA99891EB8CF4E6AFEF5DCE9D6308CBA6A186D03A4B70F3', false);
echo strtoupper($hmac);
А тут
вариант от банка(убрал) - в самом низу нажмите HMAC HEX
у меня полученные строки ну никак не совпадают...
техподдержка банка пока ничем помочь не смогла.