PayPal Node Express服务器示例
示例
在此示例中,我们将设置Express服务器集成,以显示如何使用PayPal Node SDK使用PayPal处理付款。为了简洁起见,我们将使用静态JSON结构作为付款明细。
建立用于处理PayPal付款的功能时,我们将遵循三个常规步骤:
我们创建一个JSON对象,其中包含要通过PayPal处理的付款。然后,我们将其发送到PayPal,以获取将用户重定向至的链接,以确认付款。
接下来,我们将用户重定向到PayPal以确认付款。确认后,贝宝会将用户重定向回我们的应用程序。
一旦返回到应用程序,我们将代表用户完成付款。
分解为简单的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
});
我们对此应用程序有四个要求:
我们服务器的HTTP包。
PayPal Node SDK软件包。
bodyParser包,用于处理JSON编码的正文。
我们服务器的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