PayPal作为Braintree中的二级付款选项

时间:2017-04-11 13:32:20

标签: 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;
    });
}

1 个答案:

答案 0 :(得分:4)

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

当您选择Lastschrift付款选项时,仍会加载Drop-in UI,这就是您收到验证错误的原因。

避免这些验证错误的一种方法是,如果客户选择Lastschrift,则使用braintree.js中的'teardown' method in the 'onReady' callback删除Drop-in UI。

或者,您可以将每种付款方式分成页面上完全不同的表单元素。