PayPal 使用快速应用程序进行 IPN 验证



我正在尝试在我的节点.js应用程序中实现PayPal IPN 验证。我正在使用快速框架。

这是我的代码:

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。

当我尝试从沙盒发送 IPN 消息PayPal我收到此消息

IPN 传送失败。无法连接到指定的 URL。请验证 URL,然后重试。

但是当我在 curl 的帮助下尝试从终端发送示例消息时,我在我的服务器应用程序上收到请求并且它正在显示日志

在PayPal !! 要求正文 : [对象对象] req.body.payment_status :P尾味精:已验证 开机自检/PayPal 200 572ms

我明白了。我没有侦听服务器中的端口 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(我认为)。反正我明白了...

最新更新