首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Paypal在单页面应用程序中的实现

问Paypal在单页面应用程序中的实现
EN

Stack Overflow用户
提问于 2014-10-24 15:08:23
回答 1查看 2.4K关注 0票数 4

我目前正在开发一个游戏,它将由一个基于API的后端、一个网页前端(在AngularJS中是一个单一页面应用程序)和几个移动设备(使用Cordova)组成。我计划通过主域名和CDN一起为SPA提供服务。SPA (和主页)都是静态的HTML/Javascript/CSS文件,所以只有api是动态的。托管静态站点的“主服务器”的域名将采用example.com的样式,api的域名将是api.example.com。

我想知道如何将Paypal集成到这个场景中。互联网似乎并没有给出太多的建议,比如如何把它整合到this...or中,我的google-fu可能会被淘汰。谢谢你的回复。

​

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-22 02:01:24

以下是我如何处理这一情况,

我有一个按钮,可以说使用paypal和onClick支付,我打开了一个新窗口-> window.open("/paypalCreate", width = "20px", height = "20px");,在我的node.js服务器中捕获了这个get请求"/paypalCreate“,然后调用create方法,如下所示

代码语言:javascript
复制
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});
        }
    });
};

一旦用户关闭了处理paypal的打开窗口,原始SPA窗口将被刷新,从而从DB获得支付详细信息,在这里,您可以以任何您想要的方式处理SPA。我知道这是个肮脏的黑客,但和你一样,我找不到更好的办法。如果这对你有用,或者你找到了更好的方法,请告诉我。

干杯,奇丹

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26550797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档