Торговец C# Binance получает неправильную подпись C2B {"status":"FAIL","code":"400002","errorMessage":"Подпись для этогоC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Торговец C# Binance получает неправильную подпись C2B {"status":"FAIL","code":"400002","errorMessage":"Подпись для этого

Сообщение Гость »


При публикации на https://bpay.binanceapi.com/binancepay/openapi/v3/order
я получаю ответ:
{"status":"FAIL","code":"400002 ","errorMessage":"Подпись для этого запроса недействительна".
Проверьте, соответствуют ли параметр и метод подписи требованиям алгоритма подписи.
Это методы, которые я использую использовать для построения запросов к API BinancePay на C#
Он должен соответствовать спецификации API в https://developers.binance.com/docs/bin ... -create-v3
Я думаю У меня хорошая подпись в соответствии с требованиями https://developers.binance.com/docs/bin ... api-common

Код: Выделить всё

 private (string, string, string) GetData()
{
var nonce = GetBinanceNonce();

var request = new StartDepositData
{
env = new StartDepositData.Env
{
TerminalType = TerminalType
},
orderTags = new StartDepositData.OrderTags
{
IfProfitSharing = true
},
MerchantTradeNo = nonce,
OrderAmount = (double)_data.PaymentAmount,
Currency = _data.PaymentCurrencyId,
Description = "BinancePay",
GoodsDetails = new List
{
new ()
{
GoodsType = GoodsType,
GoodsCategory = GoodsCategory,
ReferenceGoodsId = _data.Reference,
GoodsName = "BinancePay",
GoodsDetail = "BinancePay"
}
}
};

// TODO: API Specification ambiguous, payload could be:
// 1. var payload = body;
// 2. var payload = timestamp + "\n" + nonce + "\n" + body + "\n";
// 1 may just be the payload, 2 may be needed when creating signature maybe
var timestamp = DateTime.UtcNow.ToUnixTimeMilliseconds().ToString();

var body = JsonConvert.SerializeObject(request);
var payload = body;
var signaturePayload = timestamp + "\n" + nonce + "\n" + body + "\n";

string signature = CreateSignature(signaturePayload, _secret);
string hexSignature = Hex(Encoding.UTF8.GetBytes(signature));

return (payload, hexSignature, nonce);
}

private string CreateSignature(string payload, string secretKey)
{
// Initialize a new HMACSHA512 instance with the provided secret key
var hmac = new HMACSHA512(Encoding.UTF8.GetBytes(secretKey));

// Compute the hash of the payload
var hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(payload));

// Convert the hash to a hexadecimal string, remove any dashes typically included by BitConverter, and convert to uppercase
return BitConverter.ToString(hash).Replace("-", string.Empty).ToUpper();
}

public static string Hex(byte[] bytes)
{
StringBuilder result = new StringBuilder(bytes.Length * 2);
string hexAlphabet = "0123456789ABCDEF";

foreach (byte b in bytes)
{
result.Append(hexAlphabet[b >> 4]);
result.Append(hexAlphabet[b & 0xF]);
}

return result.ToString();
}

// A random string with 32 bytes, e.g. random ascii decimal within a-z and A-Z and loop 32 times to form a random string
private static string GetBinanceNonce(int length = 32)
{
const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
return new string(Enumerable.Repeat(chars, length)
.Select(s => s[new Random().Next(s.Length)]).ToArray());
}


Источник: https://stackoverflow.com/questions/781 ... usfail-cod
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • { "status": "FAIL", "code": "400002", "errorMessage": "Подпись для этого запроса недействительна." }
    Anonymous » » в форуме Android
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Alert(data.status) завершается с ошибкой, когда status=false, но не когда status=true
    Anonymous » » в форуме Jquery
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Почему xmlhttprequest return Status 0 на iPhone, но Status 200 в веб -браузере
    Anonymous » » в форуме Html
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Python / Binance API — Как получить позицию по фьючерсам Binance Leaderboard из API?
    Anonymous » » в форуме Python
    0 Ответы
    66 Просмотры
    Последнее сообщение Anonymous
  • Невозможно получить данные из Binance API с помощью binance-python.
    Anonymous » » в форуме Python
    0 Ответы
    83 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»