上下文检出:找不到发布消息响应错误的响应处理程序

时间:2016-09-07 13:32:22

标签: paypal-sandbox paypal-rest-sdk paypal

我使用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');
    })
})

2 个答案:

答案 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异常触发的。