PayPal Node Express服务器示例

示例

在此示例中,我们将设置Express服务器集成,以显示如何使用PayPal Node SDK使用PayPal处理付款。为了简洁起见,我们将使用静态JSON结构作为付款明细。

建立用于处理PayPal付款的功能时,我们将遵循三个常规步骤:

  1. 我们创建一个JSON对象,其中包含要通过PayPal处理的付款。然后,我们将其发送到PayPal,以获取将用户重定向至的链接,以确认付款。

  2. 接下来,我们将用户重定向到PayPal以确认付款。确认后,贝宝会将用户重定向回我们的应用程序。

  3. 一旦返回到应用程序,我们将代表用户完成付款。

分解为简单的Node应用程序,我们首先从NPM获取PayPal Node SDK:

npm install paypal-rest-sdk

接下来,我们设置应用程序配置和软件包。

var http = require('http'),

    paypal = require('paypal-rest-sdk'),

    bodyParser = require('body-parser'),

    app = require('express')();

var client_id = 'YOUR APPLICATION CLIENT ID';

var secret = 'YOUR APPLICATION SECRET';

//允许解析JSON主体

app.use(bodyParser.json());

//为沙箱环境配置

paypal.configure({

    'mode': 'sandbox', //沙盒或直播

    'client_id': client_id,

    'client_secret': secret

});

我们对此应用程序有四个要求:

  1. 我们服务器的HTTP包。

  2. PayPal Node SDK软件包。

  3. bodyParser包,用于处理JSON编码的正文。

  4. 我们服务器的Express框架。

接下来的几行为创建应用程序时获得的客户端ID和密码设置变量。然后,我们进行设置bodyParser以允许使用JSON编码的主体,然后使用应用程序详细信息配置我们的应用程序,并指定我们正在使用的环境(用于生产的环境或用于测试的沙箱)。

现在,让我们创建使用PayPal创建付款请求的途径。

app.get('/create', function(req, res){

    //建立PayPal付款要求

    var payReq = JSON.stringify({

        'intent':'sale',

        'redirect_urls':{

            'return_url':'http://localhost:3000/process',

            'cancel_url':'http://localhost:3000/cancel'

        },

        'payer':{

            'payment_method':'paypal'

        },

        'transactions':[{

            'amount':{

                'total':'7.47',

                'currency':'USD'

            },

            'description':'This is the payment transaction description.'

        }]

    });

    paypal.payment.create(payReq, function(error, payment){

        if(error){

            console.error(error);

        } else {

            //捕获HATEOAS链接

            var links = {};

            payment.links.forEach(function(linkObj){

                links[linkObj.rel] = {

                    'href': linkObj.href,

                    'method': linkObj.method

                };

            })

        

            //如果存在重定向网址,则重定向用户

            if (links.hasOwnProperty('approval_url')){

                res.redirect(links['approval_url'].href);

            } else {

                console.error('no redirect URI present');

            }

        }

    });

});

我们要做的第一件事是设置付款请求JSON对象,该对象包含我们提供给PayPal创建付款所需的信息。我们将设置intent为sale,指定重定向URL(PayPal在确认/取消付款后将用户转发到的重定向网址),添加payment_methodofpaypal表示我们将进行PayPal付款,然后指定交易信息供付款人确认。

然后payment.create(...),我们调用,传入我们的payReq对象。这会将创建付款请求发送到PayPal。一旦返回并成功,我们可以遍历返回对象中提供的HATEOAS链接,以提取我们需要将用户重定向到的URL,该URL在标记为approval_url。

如果直接使用HATEOAS链接的格式,可能会导致脆弱的参考代码,因此,我们将遍历所有提供的链接,并将它们放在更好的参考对象中,以防将来发生更改。如果approval_url随后在该对象中找到,我们将重定向用户。

此时,用户将被重定向到PayPal以确认付款。完成后,它们将被重定向回return_url我们在createPayment(...)函数中指定的位置。

为了完成付款,我们现在必须提供处理退货的途径。

app.get('/process', function(req, res){

    var paymentId = req.query.paymentId;

    var payerId = { 'payer_id': req.query.PayerID };

    paypal.payment.execute(paymentId, payerId, function(error, payment){

        if(error){

            console.error(error);

        } else {

            if (payment.state == 'approved'){ 

                res.send('payment completed successfully');

            } else {

                res.send('payment not successful');

            }

        }

    });

});

当用户返回到您的应用程序,将存在将沿着为好,可以派出三名查询字符串参数paymentId,PayerID和token。我们只需要处理前两个。

我们提取参数,然后将PayerID放在一个简单的对象中,以进行付款执行步骤。接下来,调用payment.execute(...),传入这两个参数,以完成付款。

提出请求后,我们将检查是否payment.state将设置为,以查看付款是否成功完成approved。如果是这样,我们可以存储返回的付款对象中需要的东西。

我们的最后一步是初始化服务器,并监听到达我们指定路由的流量。

//创建服务器

http.createServer(app).listen(3000, function () {

   console.log('Server started: Listening on port 3000');

});

服务器初始化后,将http://localhost:3000/create初始化支付过程。

以上是 PayPal Node Express服务器示例 的全部内容, 来源链接: utcz.com/z/326215.html

回到顶部