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

C# Tinkoff Эквайринг проверка токена?

У меня проблема.

Я хочу реализовать следующую задачу:

Отправка запроса на https://securepay.tinkoff.ru/v2/Init что бы получить ссылку на оплату После успешной оплаты что бы тинькофф отправлял запрос на мой сервер(отправляю линк в notificationurl в init) Но я не понимаю как проверять токен?? В запросе который мне на сервер присылает тинькофф токен никак не сходится с тем который я генерирую

**private string GenerateTinkoffToken(Dictionary<string, string> dataForToken)
    {
        // 1. Сортируем ключи массива по алфавиту
        var sortedDataKeys = dataForToken.Keys.OrderBy(k => k).ToList();
        var sortedData = new Dictionary<string, string>();
        foreach (var key in sortedDataKeys)
        {
            sortedData.Add(key, dataForToken[key]);
        }

        // 2. Конкатенируем только значения пар в одну строку (без разделителей)
        var concatenatedString = string.Join("", sortedData.Values);

        // 3. Применяем хэш-функцию SHA-256 (с поддержкой UTF-8 - по умолчанию в C#)
        string calculatedToken;
        using (SHA256 sha256Hash = SHA256.Create())
        {
            byte[] bytes = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(concatenatedString));
            StringBuilder builder = new StringBuilder();
            for (int i = 0; i < bytes.Length; i++)
            {
                builder.Append(bytes[i].ToString("x2"));
            }
            calculatedToken = builder.ToString();
        }
        return calculatedToken;
    }**
  • Вопрос задан
  • 32 просмотра
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
Steel_Balls
@Steel_Balls
а что у тебя не сходиться?
где примеры запроса и ответа?
Мы тут тебе не телепаты в угадайку играть
Ответ написан
Комментировать
@hello_my_name_is_dany
Backend Developer (Node.js, PHP, C#)
Dictionary ничего не гарантирует, если хотите сами сортировать элементы, то используйте OrderedDictionary, но лучше всего в вашем случае будет использовать SortedDictionary
Но так как вам надо именно значение пар сконкатенировать, то лучше будет сделать так
var sortedValues = dataForToken.OrderBy(pair => pair.Key).Select(pair => pair.Value);
var concatenatedString = string.Join("", sortedValues);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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