Динамически изменять значение экземпляра, уже созданного в 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

1 ответ

Мне не удалось найти способ изменить экземпляр после его создания. Но я решил проблему, разделив процесс на две части. Я сделал два шага, чтобы произвести оплату. На первой странице пользователь выберет сумму из раскрывающегося списка, затем нажмите кнопку "Далее", которая отправит выбранную сумму на страницу оплаты. затем на странице оплаты создается этот экземпляр с суммой, уже опубликованной с предыдущей страницы. Надеюсь, это поможет кому-то с аналогичной проблемой.

Другие вопросы по тегам