2016-08-14 91 views
0

我试图在我的Meteor应用程序中获得支付网关。我使用request.post获取重定向网址,但我无法回拨。无法调用Meteor服务器端函数的回调函数

该函数过早地返回一些数据,但它不会将来自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

的问题是,流星不会等到你的POST请求完成。但是Meteor支持新的await/async语法,并且有一个request-promise包,所以post请求会返回一个promise,而不是传递一个回调。