paypal integration mit single page app

Ich habe das exakt gleiche problem wie in dem post Implementierung von Paypal in der single page application leider niemand in dieser riesigen Gemeinschaft zu haben scheint eine Antwort 🙁
Mit viel Headbangen war ich in der Lage zu implementieren a dirty hack, da unten, und ich weiß, dass dies nicht die richtige Lösung. Könnte einer von den gurus freundlich nachdenken über diese Frage und Antwort/feedback geben, wenn mein dirty hack ist der richtige Weg, oder es kann besser umgesetzt werden. Unten my dirty hack 🙁
Vielen Dank im Voraus für Eure Antworten/Kommentare.

Habe ich einen button zu sagen, mit paypal bezahlen und onClick ich ein neues Fenster öffnen -> window.open("/paypalCreate", width = "20px", height = "20px");
und ich halte diese get-Anfrage "/paypalCreate" in meine node.js server-und call-Methode erstellen, die aussieht liek unten

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

Sobald der Benutzer schließt das geöffnete Fenster, in dem paypal wurde behandelt die orginal SPA-Fensters wird aktualisiert und so immer die Zahlung details aus der DB und hier können Sie die SPA-in welcher Weise auch immer Sie wollen.
Ich weiß, dass dies ist ein dirty hack, aber wie Sie, ich konnte nicht einen besseren Weg finden. Bitte lassen Sie mich wissen, wenn dies für Sie arbeitet, oder wenn Sie haben einen besseren Weg gefunden, das zu tun tihs.

cheers,
Chidan

InformationsquelleAutor Chidu Murthy | 2014-12-22
Schreibe einen Kommentar