我使用Advanced In-Context Checkout integration。
我做AJAX并利用这些功能,就像他们的文档解释一样:
paypal.checkout.setup()
paypal.checkout.initXO()
paypal.checkout.startFlow()
paypal.checkout.closeFlow()
Execute the payment step之后我经常遇到这个烦人的错误。他们没有在任何地方解释它的API文档。它只是缺失。
新错误(“找不到发布消息响应的响应处理程序”+ t.name +“in”+ window.location.href);
错误是什么意思?期望什么样的响应消息响应处理程序?如何提供?
我的客户端代码非常简单:
onCheckoutBtnClick(ev) {
paypal.checkout.initXO();
$.post('/checkout', {
user: JSON.stringify(this.props.user),
data: JSON.stringify(this.props.WCs),
})
.done(res => {
paypal.checkout.startFlow(res.approval_url);
})
.fail(err => {
paypal.checkout.closeFlow();
});
},
服务器端如下:
router.post('/checkout', (req, res, next) => {
var payment_json = {
// huge config to create a payment
// the pivotal value is "return_url"
redirect_urls: {
"return_url": "http://example.com:3000/complete_payment",
"cancel_url": "http://example.com:3000/cancel_payment"
},
}
});
return_url
代码
router.get('/complete_payment', (req, res, next) => {
paypal.payment.execute(req.query.paymentId, execute_payment_json, function (err, payment) {
// After this step the error in thrown on the client
res.redirect('http://example.com:3000/show_complete_page_to_buyer');
})
})
答案 0 :(得分:2)
这似乎只是一个沙箱问题。在Sandbox中始终看到此错误,并且在生产模式下看到它更新。 我已经邮寄了Paypal开发人员抱怨沙盒和生产之间的许多区别。
答案 1 :(得分:1)
沙箱对我来说也有问题,经常在刷新时纠正自己。使用Chrome开发人员工具(Ctrl-Shift-I)并查看控制台日志,我看到了这个堆栈跟踪:
types.js:19 Uncaught Error: No handler found for post message ack for message: postrobot_method from http://localhost:50834 in https://www.sandbox.paypal.com/webapps/hermes/button
at Object._RECEIVE_MESSAGE_TYPE.(anonymous function) [as postrobot_message_ack] (https://www.paypalobjects.com/api/checkout.js:2514:33)
at receiveMessage (https://www.paypalobjects.com/api/checkout.js:2465:77)
at messageListener (https://www.paypalobjects.com/api/checkout.js:2486:13)
我还观察到错误可能是由我代码中其他地方的未处理的javascript异常触发的。