【发布时间】:2021-11-04 03:44:21
【问题描述】:
我正在尝试在 Twilio 函数中发出发布请求,以使用 USAePay 网关 API 处理费用,但我的代码似乎在某处跳闸。任何见解都值得赞赏。我认为可能是 callback() 函数放错了位置。
我还收到一条警告,指出 buffer 已贬值,我该如何解决?
这是我的代码:
exports.handler = function(context, event, callback) {
//setup dependencies
const express = require('express');
const bodyParser = require('body-parser');
const request = require('request');
const sha256 = require('sha256');
const app = express();
app.use(express.static('public'));
app.use(bodyParser.json());
//setup authorization for API request
var seed = "abcdefghijklmnop";
var apikey = "xxxxxxxxxxxxxxxxxxxxxxxx";
var prehash = apikey + seed;
var apihash = 's2/'+ seed + '/' + sha256(prehash);
var authKey = new Buffer(apikey + ":" + apihash).toString('base64');
var authorization = "Basic " + authKey;
//POST endpoint for API request
app.post('/', (req, res) => {
//setup request for API using provided info from user
let options = {
url: 'https://sandbox.usaepay.com/api/v2/transactions',
method: 'POST',
json: true,
headers: {
"Authorization": authorization
},
body: {
"command": "cc:sale",
"amount": "5.00",
"amount_detail": {
"tax": "1.00",
"tip": "0.50"
},
"creditcard": {
"cardholder": "John doe",
"number": "4000100011112224",
"expiration": "0919",
"cvc": "123",
"avs_street": "1234 Main",
"avs_zip": "12345"
}
}
};
//make request and handle response
request(options, (err, apiRes, body) => {
if(err) {
res.status(500).json({message: "internal server error"});
}
else{
res.status(200).json({
result: body.result,
error: body.error || ""
});
}
});
});
};
【问题讨论】:
-
您好!您说您在 Twilio Functions 中执行此操作,但这似乎是一个 Express 应用程序,根本没有显示
callback的使用情况。这是正确的代码示例吗? -
@philnash 感谢您的快速回复。是的,它在 Twilio 函数中我试图从 github 复制这段代码,希望它可以在 Twilio 中工作并添加这些依赖项。我删除了回调,因为它会立即触发而不执行。如果您能指出发布到外部 API 的最佳方式是什么,那就太好了!
标签: node.js twilio twilio-functions usaepay