如何在http get或post上调用函数?

时间:2016-03-13 17:41:45

标签: angularjs node.js http express asynchronous

我确定这是一个愚蠢的问题,但我对后端很新,所以请原谅我。

我正在使用express / node构建一个angularjs应用程序,并且我正在尝试集成PayPal(作为Node.js SDK),我想要的是从角度控制器调用SDK上的pay方法而我正在做如下:

点击按钮:

// controller
$scope.pay = function(amount) {
  PaymentFactory.doPayment(amount);
}

付款工厂:

// PaymentFactory
return {
    doPayment: function(amount) {
        $http.get("../../../server/payments/paypal.js")
            .then(function(response) {
                console.log( response );
            })
    }
}

然后服务器端文件如下:

require('paypal-adaptive');
var app = require('../../server.js');
var PayPal = require('paypal-adaptive');

var paypalSdk = new PayPal({
    userId:    'userid',
    password:  'password',
    signature: 'signature',
    sandbox:   true //defaults to false 
});

var payload = {
    requestEnvelope: {
        errorLanguage:  'en_US'
    },
    actionType:     'PAY_PRIMARY',
    currencyCode:   'GBP',
    feesPayer:      'EACHRECEIVER',
    memo:           'Chained payment example',
    cancelUrl:      'returnUrl,
    returnUrl:      'cancelUrl',
    receiverList: {
        receiver: [
            {
                email:  'email1',
                amount: '3.40',
                primary:'true'
            },
            {
                email:  'email2',
                amount: '1.20',
                primary:'false'
            }
        ]
    }
};

paypalSdk.pay(payload, function (err, response) {
    if (err) {
        console.log(err);
    } else {
        // Response will have the original Paypal API response 

        // But also a paymentApprovalUrl, so you can redirect the sender to checkout easily 
        console.log('Redirect to %s', response.paymentApprovalUrl);

        return response;
    }
});

当然get请求只返回一个服务器端文件内容的字符串,我理解为什么上面的内容不起作用但不确定如何使它工作。我的目标是从角度工厂调用PayPal SDK并获取响应,以便我可以将用户重定向到URL。一个直接的解决方案会有所帮助,但更重要的是,我需要指向我不理解的原则,就如何在用户操作上调用函数从服务器端获取此数据。我尝试过搜索,但实际上并不是我在搜索中使用的语言。

1 个答案:

答案 0 :(得分:0)

您需要做的就是使用curl(node-curl npm模块)。使用curl将帮助您将数据发布到您的PayPal网址并获得回复。现在你需要从paypal处理这个响应,并相应地生成你自己的响应,以便通过角度http方法接收。