【问题标题】:Not able to get response in braintree checkout button无法在 Braintree 结帐按钮中获得响应
【发布时间】:2018-03-01 01:14:24
【问题描述】:

我正在使用braintree paypal 结帐付款,付款工作正常,但无法得到响应,这是我的代码

<script type="text/javascript">
var form = document.querySelector('#payment-form');
var client_token = "<?php echo \Braintree\ClientToken::generate(); ?>";
braintree.dropin.create({
    authorization: client_token,
    selector: '#bt-dropin',
    paypal: {
        flow: 'vault',
        onSuccess: function (nonce, email) {
            alert('sdsdsd123');
            console.log(JSON.stringify(nonce));
        },
    },

}, function (createErr, instance) {
    if (createErr) {
        console.log('Error', createErr);
        return;
    }
    form.addEventListener('submit', function (event) {
        event.preventDefault();

        instance.requestPaymentMethod(function (err, payload) {
            if (err) {
                console.log('Error', err);
                return;
            } else {
                console.log("Payment confirmation");
                console.log(payload);
            }

            // Add the nonce to the form and submit
            document.querySelector('#nonce').value = payload.nonce;
            form.submit();
        });
    });
},
);
var checkout = new Demo({
    formID: 'payment-form'
});

但无法在 onsuccess 函数中得到响应,谁能告诉我如何才能得到这个成功响应,

【问题讨论】:

    标签: paypal paypal-sandbox braintree braintree-sandbox


    【解决方案1】:

    全面披露:我在 Braintree 工作。如果您还有任何问题,请随时联系support

    您似乎将Braintree JSv2 Drop-In UI 中的PayPal 实现与Braintree JSv3 Drop-In UI 混淆了。 JSv3 不支持 onSuccess 选项。 JSv3 中 PayPal 对象的完整配置选项列表是available here

    根据您提供的代码,我建议您删除您的 onSuccess 回调函数。您应该仍然可以通过将该代码放在您的 instance.requestPaymentMethod 回调函数中来实现您想要的结果,如下所示:

    <script type="text/javascript">
      var form = document.querySelector('#payment-form');
      var client_token = "<?php echo \Braintree\ClientToken::generate(); ?>";
    
      braintree.dropin.create({
          authorization: client_token,
          selector: '#bt-dropin',
          paypal: {
              flow: 'vault'
          }
      }, function (createErr, instance) {
          if (createErr) {
              console.log('Error', createErr);
              return;
          }
          form.addEventListener('submit', function (event) {
              event.preventDefault();
    
              instance.requestPaymentMethod(function (err, payload) {
                  if (err) {
                      console.log('Error', err);
                      return;
                  }
    
                  console.log("Payment confirmation");
                  console.log(payload);
                  alert('sdsdsd123');
                  console.log(payload.nonce);
    
                  // Add the nonce to the form and submit
                  document.querySelector('#nonce').value = payload.nonce;
                  form.submit();
              });
          });
      });
    </script>
    

    【讨论】:

    • 感谢您的帮助,requestPaymentMethod 仅在我们使用信用卡付款时有效,它不适用于贝宝结帐
    • @NikulPanchal 你能用脚本发布你的完整 html 表单,以便我可以在本地运行它吗?是否记录了任何错误?提交表单后,上面的代码对我有效。
    猜你喜欢
    • 2017-09-26
    • 2015-03-20
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    相关资源
    最近更新 更多