Paypal Checkout.js没有调用onAuthorize()

zee*_*zee 7 javascript paypal paypal-sandbox

我有以下代码来自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');
Run Code Online (Sandbox Code Playgroud)

从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"
}
Run Code Online (Sandbox Code Playgroud)

小智 0

我现在正在研究这个问题。我在测试过程中意识到,感谢你@zee(我读到“只有 onCancel() 才会在添加后被调用……”这让我想到)只有在 SANBOX checkout.js 中才会调用 onCancel() 总是(或者至少) ,始终适合我和我所有的测试)。我(10 分钟前)考虑在 onCancel() 中实现一个可怕的“IF”来处理响应并调用我的服务器,就像我想在 onAutorize() 中所做的那样(在付款执行后等...)。在此之前,我尝试过使用生产密钥一次......它成功了!onAutorize() 被调用,一切都按预期运行。直到昨天我还在讨论这个问题,我希望这会对某人有所帮助。

西蒙娜