在IPN上无法获得Paypal“验证”或“无效”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在IPN上无法获得Paypal“验证”或“无效”相关的知识,希望对你有一定的参考价值。

我正在尝试通过他们的API实现paypal支付系统。不要问为什么我不使用braintree或条纹...它是客户端规范,由于某些原因,它通过普通的paypal,现在我正在努力实施付款验证。

我使用可用的沙箱实现了paypal支付表单。我提到了一个notify-url来获得反馈,然后根据这个文档,我必须做paypal验证(以确保我收到的付款信息是真实的):https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNImplementation/和这个https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNIntro/#id08CKFJ00JYK

我的代码如下:

import { Meteor } from 'meteor/meteor';

import moment from 'moment';
import bodyParser from 'body-parser';

import { HTTP } from 'meteor/http'

Picker.middleware(bodyParser.urlencoded({ extended : false }));
// Picker.middleware(bodyParser.json());


let postRoutes = Picker.filter(function(req, res) {
    return req.method === "POST"
});

postRoutes.route('/payment_received', function(params, request, response, next){
    response.statusCode = 200;
    response.end();

  let convertAsyncToSync = Meteor.wrapAsync(HTTP.call);
    let test = JSON.stringify(request.body);

    let body2 = 'cmd=_notify-validate&' + test.slice(1, -1).replace(/"/g,'').replace(/:/g,"=").replace(/,/g,'&')
    console.log('-------body2-----------')
    console.log(body2)
  let result2 = convertAsyncToSync('POST', "https://ipnpb.sandbox.paypal.com/cgi-bin/webscr", {
    headers: {
        'Connection': 'close'
    },
    body: body2
  });

    console.log('----------------result2------------')
    console.log(result2);
  console.log('----------------result2.BODY------------')
    console.log(result2.body);

})

根据文档我虽然我应该得到一个“验证”或“无效”响应,而不是这个我得到一个完整的html页面,我不明白为什么。

即使我使用简单的REST客户端测试发布请求,我也没有得到好的回复。不知道为什么,我被困在那里。有paypal经验的人吗?

答案

试试这个包对我来说就像一件轻而易举的事。 https://github.com/mbreuer23/meteor-ipn-listener/

以上是关于在IPN上无法获得Paypal“验证”或“无效”的主要内容,如果未能解决你的问题,请参考以下文章

Paypal IPN 获得空白确认(应为“已验证”或“无效”)

Paypal IPN 沙盒 - IPN 侦听器 - 未验证或无效

(Laravel)无法从PayPal IPN获得响应,但模拟的响应返回已经过验证

nodejs - 无法让 paypal-ipn 工作。 Paypal 不断返回“无效”

PHP/CodeIgniter PayPal IPN 无效验证

从 PayPal 的沙盒 IPN 获得无效响应