【问题标题】:Paypal Button returns 'Order could not be captured'Paypal 按钮返回“无法捕获订单”
【发布时间】:2019-08-03 12:09:25
【问题描述】:

我正在使用贝宝按钮 SDK。激活按钮的代码是:-

        paypal.Buttons({
        createOrder: ( data, actions ) => {
            return actions.order.create({
                purchase_units: [{
                    amount: {
                        value: this.amount.toFixed(2),
                        currency_code: "GBP",
                    }
                }]
            })
        },
        onApprove: ( data, actions ) => {
            return actions.order.capture().then(details => {
              console.log('details',details);
            })
        },
        onError: ( error ) => {
            console.log('error',error);
        }
    }).render('#paypal-button-container')

用户界面按预期运行,然后在返回错误之前有很长的暂停。脚本标签中使用的 client_id 用于沙盒帐户。我找不到描述错误可能原因的文档...

error Error: Order could not be captured

非常感谢任何建议。

贝宝..https://developer.paypal.com/docs/checkout/integrate/#1-get-paypal-rest-api-credentials

【问题讨论】:

    标签: javascript paypal


    【解决方案1】:

    我在 onApprove 回调中的“actions.order.capture()”中遇到了同样的“无法捕获订单”错误。

    就我而言,它在第一次运行时有效,但在随后的调用中无效。我发现我的订单总是有相同的 invoice_id。我删除了 invoice_id,Paypal 停止了投诉。

    如果 invoice_id 总是唯一的就好了。

    【讨论】:

      【解决方案2】:

      如果您在控制台中收到 Xss 消息,请尝试在私人导航中,断开与您的 paypal 买家帐户的连接。

      【讨论】:

        【解决方案3】:

        按照评论中的建议,尝试使用此 URL 进行卷曲:

        https://www.sandbox.paypal.com/smart/api/order/ODER_ID/capture

        它回复了代码 401,并进行了一些研究,最终发现我使用了错误的帐户进行付款。

        我刷新 PayPal 登录并使用正确的沙盒买家帐户登录并付款,它可以正常工作。

        也许贝宝应该给出正确的错误信息。

        【讨论】:

          【解决方案4】:

          与 Nuxt 相同的问题,结帐工作但捕获错误响应:错误 500 order-could-not-be-captured

          <template>
            <no-ssr>
              <v-layout row wrap>  
                <div ref="paypal"></div>   
              </v-layout>
            </no-ssr>
          </template>
          

          脚本

          mounted() {
              const script = document.createElement("script");
              script.src =
                "https://www.paypal.com/sdk/js?client-id=MyKeyID";
              script.addEventListener("load", this.setLoaded);
              document.body.appendChild(script);
            },
            methods: {
              setLoaded: function() {
                this.loaded = true;
                window.paypal
                  .Buttons({
                    createOrder: (data, actions) => {
                      return actions.order.create({
                        purchase_units: [
                          {
                            description: "Test description",
                            amount: {
                              currency_code: "USD",
                              value: 1
                            }
                          }
                        ]
                      });
                    },
                    onApprove: async (data, actions) => {
                      const order = await actions.order.capture();
                      this.paidFor = true;
                      console.log(order);
                    },
                    onError: err => {
                      console.log(err);
                    }
                  })
                  .render(this.$refs.paypal);
              }
          

          【讨论】:

          • 您能否在答案中添加更多描述?或者这是另一个问题?
          • 这是另一个问题吗?
          【解决方案5】:

          您可以使用返回 Paypal 服务器的 CURL 检查吗? 这是一条评论,但我没有 50pkt S/O。抱歉。

          【讨论】:

          • 这是失败的贝宝服务器 POST... [链接] www.sandbox.paypal.com/smart/api/order/3J674917081315435/capture (网址有www。在前面,但由于某种原因,这没有出现在评论中)
          • curl -v -X POST sandbox.paypal.com/smart/api/order/3J674917081315435/capture 也许 401 未经授权?
          • 我很确定连接已获得授权,如果我将脚本标签中的 client_id 更改为废话,会话将无法启动( window.paypal 未定义)。在最后阶段(处理订单)之前还会发生一些互动。
          • > POST /smart/api/order/3J674917081315435/capture HTTP/1.1 > 主机:www.sandbox.paypal.com > 用户代理:curl/7.52.1 > 接受:/ >
          • 如果我 curl -v -X POST www.sandbox.paypal.com/smart/api/order/3J674917081315435/capture 我得到的响应是 HTTP/1.0 302 Found ?
          猜你喜欢
          • 2021-01-14
          • 2012-06-27
          • 2021-01-20
          • 2020-10-24
          • 2018-01-18
          • 2014-10-21
          • 2021-10-31
          • 1970-01-01
          • 2012-12-15
          相关资源
          最近更新 更多