首页 > 解决方案 > 动态更改已在 JavaScript 中创建的实例的值

问题描述

我在这里使用“Braintree - Dropin”。页面加载时创建实例,之后我有一个下拉菜单可以选择“支付金额”。我想在下拉列表更改时更新实例的值(已创建)。

var form = document.querySelector('#payment-form');
var client_token = "{{ Braintree\ClientToken::generate()}}";
var amount = document.getElementById("amount");
var amount_val = amount.options[amount.selectedIndex].value;

braintree.dropin.create({
    authorization: client_token,
    selector: '#bt-dropin',
    applePay: {
        displayName: 'My Store',
        paymentRequest: {
            total: {
                label: 'My Store',
                amount: amount_val
            }
        }
    }
}, function (createErr, instance) {
    if (createErr) {
        console.log('Create Error', createErr);
        return;
    }
    amount.addEventListener("change", function() {
        console.log(amount.value);
        // Where i'm trying to change amount
        instance.updateConfiguration('applePay', 'paymentRequest', {
            total: {
                label: 'My Store',
                amount: amount.value
            }
        });
    });
    form.addEventListener('submit', function (event) {
        event.preventDefault();

        instance.requestPaymentMethod(function (err, payload) {

            if (err) {
                console.log('Request Payment Method Error', err);
                return;
            }
            // Add the nonce to the form and submit
            document.querySelector('#nonce').value = payload.nonce;
            form.submit();
        });
    });
});

根据“Dropin”文档,这应该可以工作。但事实并非如此。 https://braintree.github.io/braintree-web-drop-in/docs/current/Dropin.html#updateConfiguration

标签: javascriptobjectinstancebraintreebraintree-javascript

解决方案


创建实例后,我找不到更改实例的可能方法。但我通过将过程分成两部分来解决问题。我做了两个步骤来完成付款。在第一页,用户将从下拉列表中选择金额,然后单击下一步按钮,将所选金额提交到付款页面。然后在付款页面上,这个实例是用上一页已经过帐的金额创建的。希望这会帮助有类似问题的人。


推荐阅读