javascript - Paypal 作为布伦特里的次要支付选项

标签 javascript paypal braintree

我们目前正在努力将 Braintree PayPal 付款与通过 IBAN 的常规银行转帐相结合。基本上,我们向访问者提供两种订阅选项:PayPal(通过 Braintree)和 IBAN 交易。

PayPal 方法工作正常,但是当我们不选择 PayPal 而选择 IBAN 银行转账时,我们收到以下控制台错误:

enter image description here

我们知道这是正确的行为,因为未填写 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 选项应该只验证是否设置了复选框。例如,下面屏幕截图中给出的复选框(切换两个字段集的可见性)。

enter image description here


更新#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/

相关文章:

javascript - 如何将新闻提要标题链接到新闻发布页面?

javascript - 在 bxslider 中调整大小时更新内容 slider 的大小

php - 在 Braintree 中是否可以只为一个客户而不是整个保险库验证重复的付款方式?

android - 在 Meteor mobile (android - cordova) 上使用 Braintree

php - Braintree 订阅定期付款

javascript - 在 for 循环中将对象添加到 'Json Array of Objects'

javascript - MapboxGLJS 是否支持 WMS-T 和/或 TMS?

jquery - Paypal Jquery 移动集成

paypal - PayPal 如何接受首月免费付款?第一个月后,它会支付。

Paypal 订阅信息