Paypal javascript sdk onClick 无法阻止弹出窗口显示

Paypal javascript sdk onClick not prevent popup showing

我按照这个documentation集成paypal javascript sdk。我想在点击 paypal 按钮后验证用户输入,如果验证失败则阻止 paypal window 显示。

paypal.Buttons({
          onClick: function(data, actions)  {
            console.log('click >>>>>')
            return actions.reject();
            // return false;
          },
          createOrder: function(data, actions) {
            return fetch('/checkout/submit/paypal/create_order', {
              method: 'post',
              headers: {
                'content-type': 'application/json'
              },
              body: JSON.stringify(_this.getSubmitData())
            }).then(function(res) {
              return res.json();
            }).then(function(detial) {
              return detial.orderId
            });
          },
          onApprove: function(data, actions) {
            // data > { billingToken, facilitatorAccessToken, orderID, payerID, paymentID }
            return fetch('/checkout/submit/paypal/capture_order?orderId=' + data.orderID, {
              method: 'post',
              headers: {
                'content-type': 'application/json'
              },
            }).then(function(res) {
              return res.json();
            }).then(function(details) {
              console.log(details);
            })
          }
        }).render('#paypal-button-container');

当我点击 paypal 按钮时,控制台显示我的消息 click >>>>> 和一个新的 window 显示并立即消失。

我认为它不应该显示新的 window。

I don't think it should show a new window.

尽管如此,如果您拒绝 onClick.

,这就是它的工作原理

要防止弹出窗口打开,您需要禁用 onInit 中的按钮并添加一个侦听器以在适当的时候重新启用它们,如 the link in your question.

中所述