1

我正在使用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 函数中得到响应,谁能告诉我如何得到这个成功响应,

4

1 回答 1

1

全面披露:我在布伦特里工作。如果您还有其他问题,请随时联系支持人员

看起来您可能会将 Braintree JSv2 Drop-In UI 中的 PayPal 实现与Braintree JSv3 Drop-In UI混淆onSuccessJSv3 不支持该选项。此处提供了 JSv3 中 PayPal 对象的完整配置选项列表。

根据您提供的代码,我建议删除您的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>
于 2017-09-20T16:24:49.067 回答