braintree.paypalCheckout.create добавить динамическую сумму к кнопке PayPal - PullRequest
0 голосов
/ 05 ноября 2019

Я использую 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 я получаю несколько кнопок.

...