我正在尝试在我的Meteor应用程序中启用支付网关。我使用request.post
获取重定向网址,但我无法回拨。
该函数过早地返回一些数据,但它不会将request.post
回调函数内的任何数据返回到我从中调用它的客户端中的回调函数。
**我也尝试了future
,但它给了我future.result
找不到错误
pay: function(id)
{
var pay_cart = scart.findOne({ _id: id } );
var pay_user = Meteor.users.findOne({ _id: pay_cart.user_id } );
var user_name = pay_user.profile.name;
var user_email = pay_user.services[Object.keys(pay_user.services)[0]].email;
var amount = pay_cart.totalPrice.toString();
var purpose = 'Trn #'+id;
purpose = purpose.toString();
var headers = { 'X-Api-Key': 'key-value', 'X-Auth-Token': 'token-value'}
var payload = {
purpose: purpose,
amount: amount,
phone: '',
buyer_name: user_name,
redirect_url: 'http://www.example.com/redirect/'}
request.post('https://www.instamojo.com/api/1.1/payment-requests/', {form: payload, headers: headers}, function(error, response, body) {
if(!error && response.statusCode == 201) {
body = JSON.parse(body);
console.log(body.longurl);
//I'm trying to return this longurl
return body.longurl;
}
});
}
答案 0 :(得分:0)
问题是Meteor不会等到你的帖子请求完成。但Meteor确实支持新的await / async语法,并且有一个request-promise包,因此post请求返回一个promise,而不是传递一个回调。