l'intégration de paypal avec le single page app

J'ai exactement le même problème que décrit dans le post La mise en œuvre de Paypal dans une seule page de l'application malheureusement personne dans ce vaste communauté semble avoir une réponse 🙁
Avec beaucoup de se cogner la tête, j'ai été en mesure de mettre en œuvre un sale hack ci-dessous et je sais que ce n'est pas la bonne solution. On pouvait tout de les gourous de bien vouloir réfléchir à cette question et de la réponse/donner de la rétroaction si mon sale hack est le droit chemin ou il peut être mieux mis en œuvre. Ci-dessous mon sale hack 🙁
Merci beaucoup d'avance pour vos réponses/commentaires.

J'ai un touche-à-dire payer avec paypal et onClick j'ouvre une nouvelle fenêtre -> window.open("/paypalCreate", width = "20px", height = "20px");
et je capture cette requête get "/paypalCreate" dans mon node.js serveur et l'appel de méthode de création qui ressemble comme ci-dessous

exports.create = function (req, res) {
    //Payment object
    var payment = {
       //fill details from DB
    };   

    //Passing the payment over to PayPal
    paypal.payment.create(payment, function (error, payment) {
        if (error) {
            console.log(error);
        } else {
            if (payment.payer.payment_method === 'paypal') {
                req.session.paymentId = payment.id;
                var redirectUrl;
                for (var i = 0; i < payment.links.length; i++) {
                    var link = payment.links[i];
                    if (link.method === 'REDIRECT') {
                        redirectUrl = link.href;
                    }
                }
                res.redirect(redirectUrl);
            }
        }
    });
};

This redirects user to paypal and once user confirms or cancels payment, the redirect urls are called. And in the success redirect url I capture the payment details into the databse and render a html in this opened window with the confirmation.

exports.execute = function (req, res) {
    var paymentId = req.session.paymentId;
    var payerId = req.param('PayerID');

    //1. if this is executed, then that means the payment was successful, now store the paymentId, payerId and token into the database
    //2. At the close of the popup window open a confirmation for the reserved listing
    var details = {"payer_id": payerId};
    paypal.payment.execute(paymentId, details, function (error, payment) {
        if (error) {
            console.log(error);
        } else {
            //res.send("Hell yeah!");
            res.render('paypalSuccess', {payerId: payerId, paymentId: paymentId});
        }
    });
};

Une fois que l'utilisateur ferme la fenêtre ouverte, dans laquelle paypal a été manipulé à l'origine du SPA fenêtre sera actualisé et ainsi obtenir les détails de paiement de la DB et ici, vous pouvez gérer le SPA de quelque façon que vous voulez.
Je sais que c'est un sale hack, mais comme vous, je ne pourrais pas trouver une meilleure façon. S'il vous plaît laissez-moi savoir si cela fonctionne pour vous ou si vous avez trouvé une meilleure façon de faire tihs.

cheers,
Chidan

OriginalL'auteur Chidu Murthy | 2014-12-22