问题描述
这个 api https://spectrocoin.com/en/integration/spectrocoin.html 有完美的 Java 和 PHP 示例。
我想发出一个 nodejs“createOrder”发布请求,但我收到一条错误消息,指出
[ { code: 99,message: 'Please check your request' } ]
我创建签名和发送post请求的代码如下
const axios = require("axios");
const fs = require("fs");
const crypto = require("crypto");
function createOrder() {
var privateKey = fs.readFileSync("./keys/private.pem");
const dataToSign =
"merchantId=" +
merchantId +
"&apiId=" +
apiId +
"&orderId=&payCurrency=BTC&payAmount=0.0&receiveCurrency=USD&receiveAmount=9.99&description=Order+%27Order001%27+at+www.merchant.com&culture=en&callbackUrl=https%3A%2F%2Fmerchant.com%2Fcallback.PHP&successUrl=https%3A%2F%2Fmerchant.com%2Fsuccess.PHP&failureUrl=https%3A%2F%2Fmerchant.com%2Ffailure.PHP";
const signature = crypto.sign("sha1",Buffer.from(dataToSign),{
key: privateKey,padding: crypto.constants.OPENSSL_ALGO_SHA1,});
console.log(signature.toString("base64"));
var order = dataToSign + "&sign=" + signature;
axios
.post(
"https://spectrocoin.com/api/merchant/1/createOrder",encodeURI(order),{
"Content-Type": "application/x-www-form-urlencoded",Connection: "Keep-Alive","Accept-Encoding": "gzip,deflate",},)
.then((r) => {
console.log(r.data);
})
.catch((e) => console.log(e));
}
createOrder();
我用这段 JS 代码生成的签名与我使用 PHP 库生成的签名相同。如前所述,PHP 示例完美运行。 我错过了什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)