Задать вопрос
@twohundrediq

Почему токены не совпадают?

Приветствую, объясните пожалуйста, почему не совпадают токены?
После транзакции тинькофф банк отправляет уведомление с данными транзакции.
Вот что ни из себя представляют
{
	"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) в формате пар "ключ":"значение".
Например:
605cdb55f1c24158325353.png

Затем добавьте в массив пару "password":"значение", где password — пароль терминала из личного кабинета, и отсортируйте массив по ключам в алфавитном порядке:
605cdb7bd1eb4683006963.png

Конкатенируйте значения всех пар:

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);
}


Но токены не совпадают.
В примерах подключения на их сайте все то же самое.
В чем может быть проблема?
  • Вопрос задан
  • 238 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы