【问题标题】:Having bad requests in Paypal express checkput client side rest在 Paypal 快速结帐客户端休息中有错误的请求
【发布时间】:2017-10-24 09:51:20
【问题描述】:

我有 laravel 项目,并希望使用客户端休息集成贝宝快速结帐。我有几个问题。

  1. 点击 paypal 按钮进行付款时出现以下错误:
POST https://c.paypal.com/v1/r/d/b/p1 400(错误请求) POST https://c.paypal.com/v1/r/d/b/p2 400(错误请求) 获取 https://c6.paypal.com/v1/r/d/b/p3?f=EC-19893223FU9150749&s=HERMES_SIGNIN 400(错误请求)
  1. 也有这个错误:

    指定窗口的域 * 上的 xcomponent_delegate_ppcheckout 的请求侦听器已经存在

但我的项目中没有listeners.js

  1. 最后一个问题。如果我使用客户端休息,我是否需要对 paypal api 进行 curl 请求。

这是我的代码。

  paypal.Button.render({
        env: 'sandbox', // sandbox | production
        client: {
        sandbox:    'AZDxjDScFpQtjWTOUtWKbyN_bDt4OgqaF4eYXlewfBP4-8aqX3PiV8e1GWU6liB2CUXlkA59kJXE7M6R',
        production: 'EFPOKHzlSKXUGm9z615EopgdiqkKqVTfMayOzyadr06mWDe3NwaIKwBr7yZTpKZQbLisQ8WT5vIh2gyn'
    },
    commit: true,
    payment: function(actions) {
        return actions.payment.create({
            transactions: [
                {
                    amount: { total: '5', currency: 'USD' }
                }
            ]
        });
    },
    onAuthorize: function(data, actions) {
        return actions.payment.execute().then(function() {
            window.alert('Payment Complete!');
            console.log('The payment was authorized!');
            console.log('Payment ID = ',   data.paymentID);
            console.log('PayerID = ', data.payerID);
        });
    },
    onCancel: function(data) {
        console.log('The payment was cancelled!');
    }

}, '#paypal-button-container');

我在看这个教程:

https://github.com/paypal/paypal-checkout/blob/master/docs/paypal-rest-api.md

有 curl 请求,但是任何人都可以解释为什么我们在客户端情况下需要这些 curl 请求。非常感谢。

【问题讨论】:

  • 首先,您可以尝试清除您的cookies吗?如果您仍然收到错误,您可以链接到您的网站,以便我可以尝试重现问题
  • 我不能给你链接,因为我在本地尝试。也许它不是 100% 工作,因为我在本地,在现场也许它会完美工作?现在及时发布请求有错误错误:请求发布sandbox.paypal.com/v1/payments/payment失败并出现401错误并且付款弹出窗口没有出现,再次单击贝宝按钮,它可以工作。我不明白为什么它有时会起作用。

标签: laravel paypal client-side express-checkout


【解决方案1】:

我也看到了 400 和 401 - 不仅在我自己的代码中,而且在 PayPal 网站上的现场演示中。

我联系了我的客户经理并发送了一些日志等,并被告知这是一个沙盒问题,在生产系统上应该没问题。事实上,切换到生产模式每次都会成功打开弹​​出窗口。

所以现在的建议似乎是忽略沙盒上偶尔出现的故障,生产工作正常!我计划在推出更改之前对实时系统进行一些最终测试。

对于客户端,您不需要该链接中的任何 curl 逻辑,您发布的 Javascript 应该就是您所需要的。我建议在此处构建 PayPal 的示例:https://developer.paypal.com/demo/checkout/#/pattern/client,并在此处构建 REST API 文档,以防其他任何 JSON 字段有用:https://developer.paypal.com/docs/api/payments/#payment_create

【讨论】:

  • 感谢您的回复。我知道沙盒不能 100% 工作。我还有一个问题。如果我使用客户端休息,onAuthorize 功能是否足以确保支付成功。或者我需要向api.sandbox.paypal.com/v1/payments/payment". $PaymentID . "/execute" 链接发出curl post 批准请求以批准付款?
  • 那里的示例代码说从 onAuthorize 调用 actions.payment.execute() 应该是所有需要的,尽管我会测试并确保资金在此时转移,因为“执行”在它们的正常 REST 中具有不同的含义API,之后仍然需要授权和捕获。我们有一个现有的 REST API 实现,所以我没有对 onAuthorize 中的付款做任何事情,只是重定向到执行、授权和捕获的旧代码。
猜你喜欢
  • 2017-09-11
  • 2012-12-14
  • 2016-10-09
  • 2016-01-28
  • 2023-04-08
  • 2012-07-02
  • 1970-01-01
  • 2018-12-26
  • 2016-08-20
相关资源
最近更新 更多