【问题标题】:Paypal Checkout.js not calling onAuthorize()Paypal Checkout.js 未调用 onAuthorize()
【发布时间】:2017-11-06 08:48:55
【问题描述】:

我有来自https://developer.paypal.com/demo/checkout/#/pattern/confirm的以下代码

代码在 Paypal 结帐页面显示,我可以输入我的所有信息。我遇到的问题是 onAuthorize() 根本没有被调用。即使我完成了一个事务,唯一被调用的是 onCancel() 函数。

注意:我正在使用这里的测试信用卡https://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/credit_card_numbers.htm

        paypal.Button.render({
          // Set your environment
          env: 'sandbox', // sandbox | production
          // Create a PayPal app: https://developer.paypal.com/developer/applications/create
          client: {
            sandbox:    'AY2UxZoOkoWQ0-******',
            production: '' // This is not set
          },
          commit: true, // Set to 'Pay Now'
          payment: function() { // Wait for the PayPal button to be clicked
            // Make a client-side call to the REST api to create the payment
            return paypal.rest.payment.create(this.props.env, this.props.client, {
              transactions: [
                {
                  amount: { total: '10.00', currency: 'USD' }
                }
              ]
            });
          },
          // Wait for the payment to be authorized by the customer
          onAuthorize: function(data, actions) {
            console.log('onAuthorize');
          },
          onCancel: function(data, actions) {
            console.log('onCancel');
            console.log(data);
          }
        }, '#paypal-button-container');

当我从 onCancel() 打印数据对象时的响应如下:

{
    cancelUrl: "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true&force_sa=true&fallback=1&token=EC-90M952801L841090P",
    intent: "sale",
    paymentToken: "EC-90M952801L841090P"
}

【问题讨论】:

  • 在演示站点上直接使用按钮时看到相同的结果吗?
  • @bluepnume 是的,完全一样。一旦添加,只有 onCancel() 会被调用。看看是否有帮助。
  • 但是如果你不添加 onCancel 是否有效?或者什么都没发生
  • @bluepnume 然后它根本不会做任何事情。仍然不会进入 onAuthorize()
  • @bluepnume 不确定是否有区别,但我正在使用这里的测试信用卡paypalobjects.com/en_US/vhelp/paypalmanager_help/…

标签: javascript paypal paypal-sandbox


【解决方案1】:

我现在正在处理这个问题。 我在测试期间意识到并感谢@zee(我读到“只有 onCancel() 才会被调用一次添加..”这让我想到)只有在 SANBOX checkout.js 中才会调用 onCancel() 总是(或至少,总是为我和我所有的测试)。 我(10 分钟前)想在 onCancel() 中实现一个可怕的“IF”来处理响应并调用我的服务器,就像我想在 onAutorize() 内部做的那样(在付款执行等之后......)。 在此之前,我用生产密钥尝试过一次,然后......它奏效了! onAutorize() 被调用并且一切都按预期运行。 直到昨天我都在这个问题上并且正在燃烧,我希望这会对某人有所帮助。

西蒙娜

【讨论】:

    猜你喜欢
    • 2017-05-12
    • 2018-04-02
    • 2019-08-05
    • 2018-05-21
    • 2017-08-22
    • 2018-06-16
    • 2017-06-26
    • 2019-02-05
    • 1970-01-01
    相关资源
    最近更新 更多