Я использую HostedFields для кредитной карты и PayPal Web для PayPal. Так что внутри braintree.client.create
у меня есть braintree.hostedFields.create
и braintree.paypalCheckout.create
. Пример кода PayPal:
braintree.paypalCheckout.create({
client: clientInstance
}, function (paypalCheckoutErr, paypalCheckoutInstance) {
if (paypalCheckoutErr) {
console.error('Error creating PayPal Checkout:', paypalCheckoutErr);
return;
}
paypal.Button.render({
env: 'sandbox',
commit: true,
buttonStyle: {
color: 'blue',
shape: 'rect',
size: 'medium'
},
payment: function () {
return paypalCheckoutInstance.createPayment({
flow: 'checkout',
locale: ''+langanalytics+'',
amount: '10.00',
currency: 'EUR'
});
},
onAuthorize: function (data, actions) {
return paypalCheckoutInstance.tokenizePayment(data, function (err, payload) {
document.getElementById("paynonce").value = payload.nonce;
document.getElementById("paymentform").submit();
});
},
onCancel: function (data) {
console.log('checkout.js payment cancelled', JSON.stringify(data, 0, 2));
},
onError: function (err) {
console.error('checkout.js error', err);
}
}, '#paypal-button').then(function () {
});
});
Проблема в том, что, согласно моему клиенту, он хочет оформить заказ на одной странице, где сумма генерируется динамически. Например, если кто-то изменит страну или способ оплаты, цена может измениться на несколько евро. Нажмите EventListener, чтобы начать расчет и изменить общую сумму в режиме реального времени.
Моя проблема: Я не могу изменить сумму моей инициализации PayPal этой части:
return paypalCheckoutInstance.createPayment({
flow: 'checkout',
locale: ''+langanalytics+'',
amount: '10.00',
currency: 'EUR'
});
Есть ли способ обновить сумму вне функции, как только общая сумма изменится (у меня есть полный контроль над этим). Я уже пытался инициализировать все braintree.client.create
новые данные об изменении общей суммы, но я получаю ошибки из размещенных полей, экземпляр уже создан и для PayPal я получаю несколько кнопок.