Я использую nodejs без какой-либо библиотеки / npm, чтобы зарядить полосу с помощью тестового ключа API.
Однако я всегда получаю ответ с кодом состояния 400 и не могу понять почему, может кто-нибудь дать мне подсказку?
Вот мои данные запроса:
{ protocol: 'https:',
hostname: 'api.stripe.com',
method: 'POST',
path: 'v1/charges',
timeout: 5000,
headers:
{ 'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': 72 },
auth: 'sk_test_JOXtNqPjvpFgLXMiwuWWKZxu:' }
А вот моя полезная нагрузка (с использованием querystring.stringify):
amount=5000¤cy=usd&description=Tiago_1541865841578&source=tok_amex
Заранее спасибо за любую помощь!
Вот код, метод, которым я делаю запрос сам:
helpers.sendRequest = function(protocol, port, hostname, method, path, timeoutSeconds, contentType, postData){
// Stringify the payload
var stringPayload = querystring.stringify(postData);
// Construct the request
var requestDetails = {
'protocol' : protocol+':',
'hostname' : hostname,
'method' : method,
'path' : path,
'port' : port,
'auth': ('Bearer ' + Buffer.from(config.stripe.secretApiKeyTest).toString('base64') + ":"),
'timeout' : timeoutSeconds * 1000,
'headers' :{
'Authorization': ('Bearer ' + Buffer.from(config.stripe.secretApiKeyTest).toString('base64') + ":"),
'teste':'ola',
"teste2":"ola2",
'Content-Type':contentType,
'Content-Length': Buffer.byteLength(stringPayload)
}
};
console.log("Request Details:")
console.log(requestDetails);
console.log("Payload:")
console.log(stringPayload);
// Instantiate the request object (using either the http or https module)
var _moduleToUse = protocol == 'http' ? http : https;
var req = _moduleToUse.request(requestDetails, function(res){
console.log(res.statusCode);
});
// Bind to the error event so it doesn't get thrown
req.on('error',function(e){
callback(err, e);
});
// Bind to the timeout event
req.on('timeout',function(){
callback(true, {'Error': 'The request took much time and got timeout.'})
});
// Add the payload
req.write(stringPayload);
// End the request
req.end();
};
И вот где я вызываю метод aux для отправки запроса:
var stripeRequestObject = {
amount: (totalPrice*100),
currency: 'usd',
description: userData.name+'_'+Date.now(),
source: stripeToken,
};
genericHelper.sendRequest('https',
443,
'api.stripe.com',
'POST',
'v1/charges',
5,
'application/x-www-form-urlencoded',
stripeRequestObject);