我正在尝试发送发布请求以验证交易。我用Postman发送了相同的发帖请求,并收到如下响应:
应用脚本代码。gs:
function postRequest() {
var url = "https://ravesandboxapi.flutterwave.com/flwv3-pug/getpaidx/api/v2/verify";
var options = {
"method": "post",
"headers": {
"Content-Type": "application/json"
},
"payload": {
"SECKEY": "FLWSECK-e6db11d1f8a6208de8cb2f94e293450e-X",
"txref": "MC-1520443531487"
}
};
const response = UrlFetchApp.fetch(url, options);
Logger.log(JSON.stringify(response));
}
应用脚本错误响应:
请求失败 https://ravesandboxapi.flutterwave.com/flwv3-pug/getpaidx/api/v2/verify 返回代码400。
服务器响应被截断:SyntaxError:意外令牌S
在解析 (/app/node_modules/body-parser/lib/types/json.js:83:15)
在/ app / node_mod ...(使用MutantHttpExceptions选项检查 完整响应)(第299行,文件“代码”)
我在做什么错或如何在Google Apps脚本中发送发帖请求?
答案 0 :(得分:1)
这不是Google Apps脚本的问题,但是flutterwave服务器返回了400错误代码。
您可以通过在选项对象中添加“ muteHttpExceptions”:true来检查此情况,然后在控制台中记录响应。
function postRequest1() {
var url = "https://ravesandboxapi.flutterwave.com/flwv3-pug/getpaidx/api/v2/verify";
var options = {
"method": "post",
"headers": {
"Content-Type": "application/json"
},
"payload": {
"SECKEY": "FLWSECK-e6db11d1f8a6208de8cb2f94e293450e-X",
"txref": "MC-1520443531487"
},
"muteHttpExceptions": true
};
const response = UrlFetchApp.fetch(url, options);
Logger.log(response.getResponseCode())
Logger.log(response.getContentText())
}
答案 1 :(得分:1)
UrlFetchApp.fetch()
函数有一个不寻常的怪癖,因为您必须使用contentType
属性来设置有效内容的内容类型。由于某些原因,直接设置标题似乎无效。
此外,您需要JSON.stringify()
的有效载荷。
因此,请按照以下方式重写您的发帖请求:
function verify() {
var url = "https://ravesandboxapi.flutterwave.com/flwv3-pug/getpaidx/api/v2/verify";
var options = {
"method":"POST",
"contentType":"application/json",
"payload":JSON.stringify({
"SECKEY":"[YOUR-SECRET-KEY]",
"txref":"[YOUR-TXREF-CODE]"
})
};
return JSON.parse(UrlFetchApp.fetch(url, options));
}
请注意,我省略了带有占位符文本的键和代码。您确实不应该共享这种敏感信息。如果可能的话,我强烈建议您撤销这些密钥,并让服务供应商发布新密钥。
答案 2 :(得分:0)
感谢Dimu Designs解释了UrlFetchApp.fetch()的怪癖
我要做的就是将Content-Type
更改为contentType
function postRequest() {
var url = "https://ravesandboxapi.flutterwave.com/flwv3-pug/getpaidx/api/v2/verify";
var options = {
"method": "post",
"headers": {
"contentType": "application/json" // <-- HERE
},
"payload": {
"SECKEY": "FLWSECK-e6db11d1f8a6208de8cb2f94e293450e-X",
"txref": "MC-1520443531487"
},
"muteHttpExceptions": true
};
const response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());
Logger.log('Response Code: '+response.getResponseCode())
}
另一方面,"muteHttpExceptions": true
在那里,我将自己处理Http异常。