Search code examples
angularjsnode.jspaypalonsen-uipaypal-rest-sdk

How to handle the response from PayPal In-Context in AngularJS instead of NodeJS


I'm having trouble getting a response from server side NodeJS code after checking out using PayPal In-Context via the paypal-rest-sdk.

I have a PayPal form defined in html, and purposefully did not define the action. I only defined the id and method (get). In my Angular code, I define the action when the PayPal button is clicked:

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);

});

By doing this, I am able to successfully checkout via PayPal In-Context.

In my NodeJS code, after successful checkout, instead of return res.end(); if successful or res.sendStatus(400, 'bad paypal payment'); if failure, I would like to pass the status back to the Angular, and handle it there.

To reiterate: I do not want to define the post PayPal In-Context route in NodeJS, I would like to do it in Angular.

I need to do this being I am using Onsen UI, and am using a splitter to navigate between pages.

Has anyone successfully done this?

UPDATE AFTER ATTEMPTING THE FIRST ANSWER

I have tried this before, but after attempting to implement Ilia Sky's Answer, the result is the PayPal In-Context checkout does not execute correctly. The script runs correctly (as determined by output in the terminal), but the In-Context window loads with "?" as a parameter and then immediately closes itself. Here are screenshots on how I updated my code. The commented out code is what I had when I was able to successfully checkout, but unable to redirect properly: Controller Service

I think this is an issue with PayPal, and I'm not sure how to solve it.

This is why I'm wondering if I can listen for a redirect in Angular, and then load a different page when a certain redirect is identified.

I tried this in my Angular controllers, but it only ever executed when the initial page loaded: enter image description here


Solution

  • I encourage everyone to check out this link.

    One of the PayPal developers has posted a sample Kraken with Angular example of the PayPal In-Context Checkout.