首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Binance Pay: PHP cURL出现“此请求的签名无效”错误

问Binance Pay: PHP cURL出现“此请求的签名无效”错误
EN

Stack Overflow用户
提问于 2021-09-03 14:32:58
回答 2查看 328关注 0票数 3

我使用PHP是为了连接到Binance Pay cURL。我得到以下错误:

代码语言:javascript
复制
{"status":"FAIL","code":"400002","errorMessage":"Signature for this request is not valid."}

下面是我的代码:

代码语言:javascript
复制
// Generate nonce string
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$nonce = '';
for($i=1; $i <= 32; $i++)
{
    $pos = mt_rand(0, strlen($chars) - 1);
    $char = $chars[$pos];
    $nonce .= $char;
}
$ch = curl_init();
$timestamp = round(microtime(true) * 1000);
// Request body
$request = array(
    "merchantTradeNo" => "12485634875fJhdd56",
    "totalFee" => 15,
    "productDetail" => "productDetail",
    "currency" => "BUSD",
    "returnUrl" => "",
    "tradeType" => "WEB",
    "productType" => "productType",
    "productName" => "ProductName"
);
$json_request = json_encode($request);
$payload = $timestamp."\n".$nonce."\n".$json_request."\n";
$signature = strtoupper(hash_hmac('SHA512',$payload,$binance_pay_secret));
$headers = array();
$headers[] = "Content-Type: application/json";
$headers[] = "BinancePay-Timestamp: $timestamp";
$headers[] = "BinancePay-Nonce: $nonce";
$headers[] = "BinancePay-Certificate-SN: $binance_pay";
$headers[] = "BinancePay-Signature: $signature";

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, "https://bpay.binanceapi.com/binancepay/openapi/order");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);

$result = curl_exec($ch);
if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); }
curl_close ($ch);

关于文档,似乎一切正常,但事实并非如此,所以一定是出了问题。有什么想法吗?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2021-10-08 23:23:55

在python中(很可能在PHP中也是如此),json encode通过添加空格和/或转义引号来稍微修改请求json。Binance Pay API要求json字符串与文档中的完全相同()。也就是说,没有额外的空格。

票数 0
EN

Stack Overflow用户

发布于 2022-02-19 10:49:46

你忘了加这个

代码语言:javascript
复制
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_request);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69046621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档