如何在AngularJS中处理来自PayPal In-Context的响应而不是NodeJS

在通过PayPal-rest-sdk检查使用PayPal In-Context后,我无法从服务器端NodeJS代码获得响应。

我有一个在HTML中定义的贝宝forms,并有目的地没有定义的行动。 我只定义了id和方法(get)。 在我的Angular代码中,我定义了单击PayPalbutton时的操作:

var payPalForm = document.getElementById('payPalForm'); payPalForm.addEventListener("click", function(e) { payPalForm.setAttribute('action', "https://10.0.0.25:8001/checkout/" + $scope.user._id + "/" + $scope.viewEvent._id.valueOf() + "/" + $scope.viewEvent.eventName + "/" + $scope.viewEvent.price); }); 

通过这样做,我可以通过PayPal In-Context成功结账。

在我的NodeJS代码中,成功签出后,而不是return res.end(); 如果成功或res.sendStatus(400, 'bad paypal payment'); 如果失败了,我想把这个状态转交给Angular,并在那里处理。

重申:我不想在NodeJS中定义后PayPal In-Context路由,我想在Angular中做。

我需要这样做,因为我正在使用Onsen UI ,并使用分隔符在页面之间导航。

有没有人成功做到这一点?

在尝试第一个答案之后更新

我曾尝试过,但尝试实施伊利亚天空的答案后,结果是贝宝在上下文签出无法正确执行。 该脚本正确运行(由terminal输出确定),但In-Context窗口加载“?” 作为参数,然后立即closures自己。 这里是我如何更新我的代码截图。 注释掉的代码是我能够成功结帐时所拥有的,但无法正确redirect: 调节器 服务

我认为这是PayPal的问题,我不知道如何解决。

这就是为什么我想知道是否可以在Angular中侦听redirect,然后在确定某个redirect时加载另一个页面。

我在我的Angular控制器中尝试了这个,但它只在加载初始页面时才执行: 在这里输入图像说明

我可能是错的,但从我的理解你想要做的是:

  1. 发送数据到服务器(到https://10.0.0.25:8001/checkout/...
  2. 在服务器上做一些事情,并给予回应( res.send等)
  3. 在客户端处理响应

对?

要做到这一点,最简单的解决scheme就是发送一个ajax请求到服务器,然后处理响应。

这意味着不用改变action属性就可以直接通过js发出请求。 使用$http服务完成的angular度。

 $http.post('https://10.0...').then(successCallback, errorCallback); 

并在success|errorCallback你可以做任何你想要的,如加载页面在分离器或任何你想要的:)

要改变当你尝试提交表单时会发生什么,你可以检查ng-submit

而获得$http你可以把它添加到你的控制器的参数列表。

 app.controller('ExampleController', function($scope, $http) { $scope.submit = function() { $http.post('your/long/url').then(function(response) { mySplitter.content.load('success-page.html'); }, function(response) { mySplitter.content.load('error-page.html'); }); }; }]); <form ng-submit="submit()" ng-controller="ExampleController"> ... </form> 

我鼓励大家查看这个链接 。

其中一位PayPal开发者发布了一个样本Kraken with PayPal In-Context Checkout的Angular示例。