Paypal Checkout.js没有调用onAuthorize()

时间:2017-06-05 14:31:52

标签: 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

System.Web.HttpContext.Current.Session["test"] = "asasa";

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

        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');

1 个答案:

答案 0 :(得分:0)

我现在正在处理该问题。 我意识到在测试过程中,感谢@zee(我读到“一旦添加,只会调用onCancel()。”这让我想到),只有在SANBOX中,checkout.js才会调用onCancel()(至少,始终用于我和我的所有测试)。 我当时(10分钟前)正在考虑在onCancel()中实现一个可怕的“ IF”来处理响应并像在onAutorize()内部那样执行服务器调用服务器(在执行付款等之后)。 在此之前,我曾尝试过使用生产密钥,并且.....有效! onAutorize()被调用,并且所有程序都按预期运行。 直到昨天,我一直在处理这个问题,并且一直在燃烧,我希望这会帮助到别人。

Simone