【问题标题】:PayPal Express Checkout, error when supplying input_fieldsPayPal Express Checkout,提供 input_fields 时出错
【发布时间】:2017-08-25 05:44:58
【问题描述】:

我正在通过 JavaScript 使用 PayPal Express Checkout。

这是我拥有并且可以使用的代码(我看到了 PayPal 按钮,我可以点击它,并且支付窗口可以正常打开):

<div id="paypal-button"></div>

<script src="https://www.paypalobjects.com/api/checkout.js"></script>
<script>
        paypal.Button.render({

            env: 'sandbox',

            client: {
                sandbox: 'xxxxxx',
                production: 'yyyyyy'
            },

            payment: function () {

                var env = this.props.env;
                var client = this.props.client;

                return paypal.rest.payment.create(env, client, {
                    transactions: [
                        {
                            amount: { total: '1.00', currency: 'USD' }
                        }
                    ]

                });
            },

            commit: true, 

            onAuthorize: function (data, actions) {

                return actions.payment.execute().then(function() {
                    document.querySelector('#paypal-button-container').innerText = 'Payment Complete!';
                });
            }

        }, '#paypal-button');

</script>

但是,如果我像下面的代码一样提供input_fields,它会停止工作并引发控制台错误:

        paypal.Button.render({

            env: 'sandbox',

            client: {
                sandbox: 'xxxxxx',
                production: 'yyyyyy'
            },

            payment: function () {

                var env = this.props.env;
                var client = this.props.client;

                return paypal.rest.payment.create(env, client, {
                    transactions: [
                        {
                            amount: { total: '1.00', currency: 'USD' }
                        }
                    ]

                }, {
                    input_fields: {
                        no_shipping: 1
                    }
                });
            },

            commit: true, 

            onAuthorize: function (data, actions) {
                return actions.payment.execute().then(function() {
                    document.querySelector('#paypal-button-container').innerText = 'Payment Complete!';
                });
            }

        }, '#paypal-button');

这是错误详情:

在最后一种情况下,我看到了 PayPal 按钮,当我单击它时窗口打开,但几秒钟后窗口自行关闭并给出此处提供的控制台错误。
我错过了什么?

更新
正如@bluepnume 指出的那样,如果我从沙箱切换到生产环境,问题就会消失。
但是,如果我还在input_fields 中提供first_namelast_name,我会得到另一个无论我是在沙盒还是生产环境中,都会出现控制台错误。

这是代码sn-p:

, {
      input_fields: {
          no_shipping: 1,
          first_name: 'Abc',
          last_name: 'Dfg'
      }
 }

这是错误信息:

【问题讨论】:

    标签: javascript paypal paypal-sandbox


    【解决方案1】:

    这是一个正在跟踪的已知问题。无论如何,如果您在生产模式下运行,则不应该存在问题。

    编辑:对于第二个问题,看起来这不是有效的请求格式。您应该能够在您的网络标签中看到:

    您是否正在寻找支付 API 的 payer_info 字段? https://developer.paypal.com/docs/api/payments/

    【讨论】:

    • 我认为你成功了。谢谢!附带说明一下,如果我在input_fields 中提供first_namelast_name,我会在控制台中收到另一个错误,它发生在沙盒和实时环境中。你知道为什么吗?也许我应该为这个开始另一个线程......
    • 我仍然需要first_namelast_name input_fields 的帮助,如果您有时间,请查看this thread 中的详细信息。谢谢!
    • 是的,谢谢,我看到了,它帮助我在payer_info 中正确传递了first_namelast_name,以及email。这防止了错误被抛出,但仍然:现在在支付窗口中选择信用卡/借记卡时,first_name 和 last_name 似乎被忽略了。电子邮件已正确预填充,但 first_name 和 last_name 为空白(即未预填充我通过 api 调用发送的值)。我试图在第二个 SO 线程中解释所有这些。
    【解决方案2】:

    关于第一个问题,现在看来一切正常。即使在测试条件下也可以使用“no_shipping”选项。

    【讨论】:

      猜你喜欢
      • 2015-01-12
      • 2021-10-26
      • 1970-01-01
      • 2017-09-12
      • 2013-03-09
      • 2011-08-17
      • 2017-05-31
      • 2016-03-15
      • 2018-12-13
      相关资源
      最近更新 更多