使用 node.js 进行 Paypal IPN 验证 - 快速应用
Posted
技术标签:
【中文标题】使用 node.js 进行 Paypal IPN 验证 - 快速应用【英文标题】:Paypal IPN verification with node.js - express app 【发布时间】:2012-11-17 07:08:48 【问题描述】:我正在尝试在我的 node.js 应用程序中实施 Paypal IPN 验证。我正在使用 express 框架。
这是我的代码:
app.post('/paypal', function(req,res)
console.log("IN PAYPAL !! req.body : "+req.body);
var ipn = require('paypal-ipn');
ipn.verify(req.body, function callback(err, msg)
if (err)
console.log("Error:"+err);
else
//Do stuff with original params here
console.log("req.body.payment_status :"+req.body.payment_status+" msg: "+msg);
res.end();
if (req.body.payment_status == 'Completed')
//Payment has been confirmed as completed
);
);
我为此使用paypal-ipn。
当我尝试从 Paypal Sandbox 发送 IPN 消息时,我收到了这条消息
IPN 传送失败。无法连接到指定的 URL。请验证 URL,然后重试。
但是当我在 curl 的帮助下尝试从终端发送示例消息时,我在我的服务器应用程序上收到了请求并且它正在显示日志
在贝宝! req.body : [对象对象] req.body.payment_status :待定消息:已验证 POST /paypal 200 572ms
【问题讨论】:
在 Paypal Sandbox 中,我使用 url 作为 myserverurl:PORTNO/paypal 【参考方案1】:我明白了。我没有在我的服务器中监听端口 443 (https)。
var https = require('https'),
fs = require('fs');
var httpsOptions =
key: fs.readFileSync('path/to/private/key'),
cert: fs.readFileSync('path/to/certs')
http.createServer(app).listen(app.get('port'), function()
console.log("server listening on port " + app.get('port'));
);
https.createServer(httpsOptions, app).listen(443,function ()
console.log("server listening on port " + 443);
);
Paypal 将 IPN 消息发送到 https 端口 443(我认为)。反正我明白了……
【讨论】:
如果我的网站已经有 ssl 证书和密钥,我如何将 ipn 证书和密钥添加到我的 httpsOptions 中?以上是关于使用 node.js 进行 Paypal IPN 验证 - 快速应用的主要内容,如果未能解决你的问题,请参考以下文章