首页 > 解决方案 > Paypal javascript sdk onClick 不会阻止弹出窗口显示

问题描述

我按照这个文档来集成 paypal javascript sdk。我想在单击贝宝按钮后验证用户输入,并在验证失败时阻止贝宝窗口显示。

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

当我单击贝宝按钮时,控制台显示我的消息click >>>>>并显示一个新窗口并立即消失。

我认为它不应该显示一个新窗口。

标签: paypalpaypal-sandbox

解决方案


我认为它不应该显示一个新窗口。

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

为防止弹出窗口打开,您需要禁用其中的按钮onInit并添加一个侦听器以在适当时重新启用它们,如您问题中的链接中所述


推荐阅读