0

node.js と Express を使用してペイパル IPN リスナーを作成しました。ここに私のリスナーコードがあります:

exports.ipn = function(req, res, next) {
    console.log('Paypal');
    var ipn = require('paypal-ipn');
    if(typeof req.body != "undefined") {
        ipn.verify(req.body, function callback(err, msg) {
            if (err) {
                winston.error('IPN: ' + err);
            } else {
                if (req.body.payment_status == 'Completed' && msg == "VERIFIED") {
                    winston.info('IPN: ' + msg + " " + req.body.txn_id + " " + req.body.payer_email);
                }
            }
            res.send(200);
            res.end();
        });
    }
    res.send(200);
    res.end();
};

これが私のexpressjsの設定とルートです:

    var app = express();

    // all environments
    app.set('port', process.env.PORT || 3000);
    app.use(express.logger('dev'));
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(app.router);

    // development only
    if ('development' == app.get('env')) {
      app.use(express.errorHandler());
    }

    app.get('/', routes.index);
    app.options('/', routes.options);
    app.post('/', routes.up);
    app.post('/ipn', routes.ipn);

    http.createServer(app).listen(app.get('port'), function(){
      console.log('Express server listening on port ' + app.get('port'));
    });

このモジュールhttps://github.com/andzdroid/paypal-ipnを使用してipnメッセージを確認すると、paypal ipnシミュレーターで正常に動作しますが、ライブで使用しようとすると、ノードコンソールに次のように表示されます:

undefined
POST /ipn 500 351ms

他のエラー メッセージはありません。このエラー 500 と undefined だけです。この未定義の変数とは何か、なぜこのエラー 500 が発生するのかを調べるのを手伝ってもらえますか。リスナーのすべてをコメントアウトしても発生します。

編集:

Paypal の IPN URL を、定義していないランダムな URL に変更しました。それでも undefined とエラー 500 が発生します。curl で投稿すると、当然のようにエラー 404 が発生します。

編集:

次のようにcurlを使用して投稿すると、次のことがわかりました。

curl -d "test" -A "-" http://127.0.0.1/randomurl

その後、エラー 500 が表示されます。これにより、404 が返されます。

curl -d "test=er" -A "-" http://127.0.0.1/randomurl
4

1 に答える 1