Приветствую, объясните пожалуйста, почему не совпадают токены?
После транзакции тинькофф банк отправляет уведомление с данными транзакции.
Вот что ни из себя представляют
{
"TerminalKey":"123321DEMO",
"OrderId":"123321",
"Success":true,
"Status":"CONFIRMED",
"PaymentId":123321,
"ErrorCode":"0",
"Amount":10000,
"CardId":123321,
"Pan":"430000******0777",
"ExpDate":"1122",
"Token":"e05ab0e29a64267b082165b13cff9ece05db75d9f46c232312312"
}
Я так понимаю, нужно сравнить токен, что они прислали с токеном, который я должен сгенерировать.
Генерируется он таким образом:
Соберите массив всех полученных в уведомлении параметров (кроме объектов Receipt, Data и параметра Token) в формате пар "ключ":"значение".
Например:
Затем добавьте в массив пару "password":"значение", где password — пароль терминала из личного кабинета, и отсортируйте массив по ключам в алфавитном порядке:
Конкатенируйте значения всех пар:
985532226401122201709430000******0777Dfsfh56dgKl8742591101709AUTHORIZEDtrue1321054611234DEMO
Вычисляем SHA-256
b906d28e76c6428e37b25fcf86c0adc52c63d503013fdd632e300593d165766b
Делаю я это таким образом:
function generate_tinkoff_token( $data ) {
unset($data['Token']);
$data['Password'] = 'my_password';
ksort($data);
$str_values = implode($data);
return hash('sha256', $str_values);
}
Но токены не совпадают.
В примерах подключения на их сайте все то же самое.
В чем может быть проблема?