3

node.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を使用しています。

Paypal Sandbox から IPN メッセージを送信しようとすると、このメッセージが表示されます

IPN 配信に失敗しました。指定された URL に接続できません。URL を確認して、もう一度お試しください。

しかし、curl を使用してターミナルからサンプル メッセージを試すと、サーバー アプリでリクエストを受け取り、ログが表示されます。

ペイパルで!! req.body : [object Object] req.body.payment_status :Pending msg: VERIFIED POST /paypal 200 572ms

4

1 に答える 1

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 に送信します (と思います)。とにかくわかった…

于 2012-11-30T07:00:24.883 に答える