API binance pay

_HEDELKA_

Client
Регистрация
20.02.2022
Сообщения
648
Благодарностей
170
Баллы
43
Всем привет! Работаю сейчас над API binance pay что может быть не так в этом запросе:
Посмотреть вложение 105438

Тело запроса:
{"requestId":"{-Variable.bin_random-}","batchName":"Выплаты остатка с баланса","currency":"USDT","totalAmount":{-Variable.amount-},"totalNumber":1,"bizScene":"MERCHANT_PAYMENT","transferDetailList":[{"merchantSendId":"219928819256303616","transferAmount":{-Variable.amount-},"receiveType":"PAY_ID","transferMethod":"MERCHANT_PAYMENT","receiver":"{-Variable.payerId-}","remark":"Выплаты остатка с баланса"}]}
Хеш:
C#:
string payload = project.Variables["xei"].Value+ " \n" +project.Variables["bin_random"].Value+ " \n" +project.Variables["unixtime"].Value+ " \n";
string secretKey = project.Variables["sekret_bin"].Value;

using (var hmac = new HMACSHA512(Encoding.UTF8.GetBytes(secretKey)))
{
    byte[] hashBytes = hmac.ComputeHash(Encoding.UTF8.GetBytes(payload));
    return BitConverter.ToString(hashBytes).Replace("-", "").ToUpper();
}
Как сам запрос построен:
Посмотреть вложение 105439
Посмотреть вложение 105440
Параметры построены по документации

Заголовок запроса#
ПравилоТипТребуетсяОписание
тип контентастрокаYприложение / json
BinancePay-отметка временидолгоYОтметка времени в миллисекундах, которую запрашивает...
BinancePay-одноразовый платежстрокаYСлучайная строка, сгенерированная продавцами. M...
BinancePay-Сертификат-SNстрокаYКлюч API, сгенерированный на портале администратора Binance Merchant
BinancePay-ПодписьстрокаYПодпись API. Пожалуйста, смотрите следующий шаг для...
Как сгенерировать подпись API#
Шаг 1. Создайте контент

String payload=timestamp+" \n"+nonce+" \n"+body+" \n";
Копировать
Шаг 2. Подпишите содержимое

String signature = hex(hmac("sha512", payload, secretKey)).toUpperCase();


ответ всегда приходит {"status":"FAIL","code":"400002","errorMessage":"Signature for this request is not valid."}

Уже сутки не можем разобраться
 

_HEDELKA_

Client
Регистрация
20.02.2022
Сообщения
648
Благодарностей
170
Баллы
43
Создал новую тему так как о binance pay в zenno форуме ничего нет (для удобного поиска нужной темы)
 
  • Спасибо
Реакции: djaga

_HEDELKA_

Client
Регистрация
20.02.2022
Сообщения
648
Благодарностей
170
Баллы
43
105441

Может ли это как-то влиять на запрос???
 

Zedx

Client
Регистрация
12.06.2018
Сообщения
1 185
Благодарностей
824
Баллы
113
1. Получаешь timestamp (лучше с сервера, т.к. если локальное время не синхронизировано, то будет ошибка)

2. Формируешь все параметры запроса включая timestamp:
Пример:
symbol=BTCUSDT&side=SELL&type=LIMIT&timeInForce=GTC&quantity=0.01&price=9000&newClientOrderId=my_order_id_1&timestamp={-Variable.timestamp-}
3. Создаешь подпись из этих параметров:
Получение подписи:
public string GetSignature(string apiSecret, string message)
{
    HMACSHA256 hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret));
    byte[] plainTextHash = hmac.ComputeHash(Encoding.UTF8.GetBytes(message));
    string hash = BitConverter.ToString(plainTextHash).Replace("-", "").ToLower();

    return hash;
}
4. Формируешь post/get запрос, состоящий из параметров из пункта 2, плюс добавляешь параметр с подписью:
Код:
&signature={-Variable.signature-}
5. Отправляешь запрос.
 
  • Спасибо
Реакции: sydoow

_HEDELKA_

Client
Регистрация
20.02.2022
Сообщения
648
Благодарностей
170
Баллы
43
1. Получаешь timestamp (лучше с сервера, т.к. если локальное время не синхронизировано, то будет ошибка)

2. Формируешь все параметры запроса включая timestamp:
Пример:
symbol=BTCUSDT&side=SELL&type=LIMIT&timeInForce=GTC&quantity=0.01&price=9000&newClientOrderId=my_order_id_1&timestamp={-Variable.timestamp-}
3. Создаешь подпись из этих параметров:
Получение подписи:
public string GetSignature(string apiSecret, string message)
{
    HMACSHA256 hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret));
    byte[] plainTextHash = hmac.ComputeHash(Encoding.UTF8.GetBytes(message));
    string hash = BitConverter.ToString(plainTextHash).Replace("-", "").ToLower();

    return hash;
}
4. Формируешь post/get запрос, состоящий из параметров из пункта 2, плюс добавляешь параметр с подписью:
Код:
&signature={-Variable.signature-}
5. Отправляешь запрос.
Мне нужно автоматизировать бинанс пей.

Отправка происходит тальков в JSON, если хочешь пошли к нам на звонок мы уже 2 сутки пытаемся разобраться
 

_HEDELKA_

Client
Регистрация
20.02.2022
Сообщения
648
Благодарностей
170
Баллы
43
1. Получаешь timestamp (лучше с сервера, т.к. если локальное время не синхронизировано, то будет ошибка)

2. Формируешь все параметры запроса включая timestamp:
Пример:
symbol=BTCUSDT&side=SELL&type=LIMIT&timeInForce=GTC&quantity=0.01&price=9000&newClientOrderId=my_order_id_1&timestamp={-Variable.timestamp-}
3. Создаешь подпись из этих параметров:
Получение подписи:
public string GetSignature(string apiSecret, string message)
{
    HMACSHA256 hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret));
    byte[] plainTextHash = hmac.ComputeHash(Encoding.UTF8.GetBytes(message));
    string hash = BitConverter.ToString(plainTextHash).Replace("-", "").ToLower();

    return hash;
}
4. Формируешь post/get запрос, состоящий из параметров из пункта 2, плюс добавляешь параметр с подписью:
Код:
&signature={-Variable.signature-}
5. Отправляешь запрос.
кто хочет поломать голову вам в этот чат.

В кратце в чем заключается проблема:

При этих же данных у нас ответ:
f32ab8673368c27812cc48773f435214d19bf92f76a273ecd57344acf2546d495466d2cb23ae603b428883536690f378d904a57d8fd7c2d6db5b97c9e4b7425a
 

_HEDELKA_

Client
Регистрация
20.02.2022
Сообщения
648
Благодарностей
170
Баллы
43
Все же нашили решение (документация binance pay не правильная)
Вот готовый шаблон под любой запрос:
 

Вложения

Последнее редактирование:

jjohn

Client
Регистрация
08.09.2009
Сообщения
17
Благодарностей
3
Баллы
3

Zedx

Client
Регистрация
12.06.2018
Сообщения
1 185
Благодарностей
824
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)