我们目前正在努力将 Braintree PayPal 付款与通过 IBAN 的常规银行转帐相结合。基本上,我们向访问者提供两种订阅选项:PayPal(通过 Braintree)和 IBAN 交易。
PayPal 方法工作正常,但是当我们不选择 PayPal 而选择 IBAN 银行转账时,我们收到以下控制台错误:
我们知道这是正确的行为,因为未填写 PayPal 字段,但是如何将 PayPal 作为可选的付款方式而不在字段未填写时抛出错误?
我们通过 DropUI 使用基本的 js 实现。
<div class="bt-drop-in-wrapper" id="showpaypalfields">
<div id="bt-dropin" class="paypaldiv"></div>
</div>
<script src="https://js.braintreegateway.com/js/braintree-2.27.0.min.js"></script>
<script>
var client_token = "123TOKEN";
braintree.setup(client_token, "dropin", {
container: "bt-dropin"
});
</script>
更新: 两种形式都立即在页面上可见,之后它们不会通过 Ajax 或任何类型加载。因此,通过 Braintree 的 PayPal 选项应该只验证是否设置了复选框。例如,下面屏幕截图中给出的复选框(切换两个字段集的可见性)。
更新#2: 对于任何对最终解决方案感兴趣的人:
var btInstance;
$('input#paymentmethod-1').change(function(){
if ( $(this).is(':checked') == true ) {
teardown();
}
});
$('input#paymentmethod-2').change(function(){
if ( $(this).is(':checked') == true ) {
setup();
}
});
function setup() {
if (btInstance) {
return;
} else {
var client_token = "<ps:braintreetoken />";
braintree.setup(client_token, "dropin", {
container: "bt-dropin",
onReady: function (bt) {
btInstance = bt;
}
});
}
}
function teardown() {
if (!btInstance) {
return;
}
btInstance.teardown(function () {
btInstance = null;
});
}
最佳答案
完全披露:我在 Braintree 工作。如果您还有任何疑问,请随时联系support .
当您选择 Lastschrift 付款选项时,插入式 UI 仍会加载,这就是您收到验证错误的原因。
避免这些验证错误的一种方法是使用 'teardown' method in the 'onReady' callback如果客户选择 Lastschrift,在 braintree.js 中删除 Drop-in UI。
或者,您可以将这些付款方式中的每一种分成页面上完全不同的表单元素。
关于javascript - Paypal 作为布伦特里的次要支付选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43347495/