2

我正在用 C++ 构建一个多交换机器人,但遇到了一个小问题。至少可以说,KuCoin 交换已被证明令人沮丧,其中一个标头是签名标头,您可以在其中使用 HMAC sha256 对字符串进行编码,然后使用 base64 对其进行编码。但是我不关心编码,我可以做所有这些。让我难过的是 KuCoins API 所期望的字符串,我已经搜索了他们的文档 100 次,但我仍然无法正确,这里是说明

对于 KC-API-KEY 的标头:

使用 API-Secret 使用 sha256 HMAC 加密 prehash 字符串 {timestamp+method+endpoint+body}。请求体为 JSON 字符串,需要与 API 传递的参数一致。之后,再次使用 base64-encode 对步骤 1 中的结果进行加密。

我试图以各种可能的方式制作这个字符串,并且文档没有提供关于一个好的字符串应该是什么样子的示例,这里是我在编码之前制作的字符串不起作用。

示例 1:1616096476134POST/api/v1/orders?clientOid=55be5&side=BUY&symbol=BTC-USDT&type=MARKET&funds=0.005000

示例 2:1616099932367POST/api/v1/orders{"clientOid":"55be5","side":"BUY","symbol":"BTC-USDT","type":"MARKET","funds":" 0"}

如您所见,在第二个示例中,我尝试使正文成为具有所有正确参数的 JSON 字符串,但仍然返回错误的签名错误。从字面上看,我只需要知道字符串应该是什么样子,这样我就可以正确地制作它。谢谢。

4

2 回答 2

2

我假设您的代码适用于没有参数的私人请求(例如获取余额)。

对于 POST 请求,我也有些挣扎,但经过几次尝试后,我还是成功了。您需要将参数转储为不带空格的 JSON 字符串,就像在示例 2 中一样。

从那以后,您设法解决了吗?如果您有兴趣,我的应用程序上有一个代码可以使用。

另外,不要忘记在curl请求的标头中添加:

Content-Type: application/json
于 2021-09-22T20:47:03.210 回答
0

通过 Kucoin 支持和 pythone 示例解决。“body”也必须包含在 POST 请求中。曾是:

reply = netman->post(req, "");

变得:

tradereply = trademan->post(req, data);
于 2021-10-21T12:15:08.430 回答