我正在尝试通过他们的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经验的人吗?