Как передать переменную PHP в JavaScript PayPal в качестве суммы платежа

#php #paypal #codeigniter-3

Вопрос:

Итак, у меня есть это приложение, которое я пытаюсь реализовать [PayPal Express][1]

[1]: https://developer.paypal.com/demo/checkout/#/pattern/client но моя проблема в том, что я не могу выбрать переменную цены от php до javascript «значение»

Я value: '<?php echo $order_amount;?>' безуспешно пытался.

Это PayPal JS:

 <script>
    // Render the PayPal button into #paypal-button-container
    paypal.Buttons({

        // Set up the transaction
        createOrder: function(data, actions) {
            return actions.order.create({
                purchase_units: [{
                    amount: {
                        value: '88.44'
                    }
                }]
            });
        },

        // Finalize the transaction
        onApprove: function(data, actions) {
            return actions.order.capture().then(function(orderData) {
                // Successful capture! For demo purposes:
                console.log('Capture result', orderData, JSON.stringify(orderData, null, 2));
                var transaction = orderData.purchase_units[0].payments.captures[0];
                alert('Transaction '  transaction.status   ': '   transaction.id   'nnSee console for all available details');

                // Replace the above to show a success message within this page, e.g.
                // const element = document.getElementById('paypal-button-container');
                // element.innerHTML = '';
                // element.innerHTML = '<h3>Thank you for your payment!</h3>';
                // Or go to another URL:  actions.redirect('thank_you.html');
            });
        }


    }).render('#paypal-button-container');
</script>
 

Как мне назвать это $order_amount как value в js, чтобы я мог обработать платеж?

Комментарии:

1. Когда вы попытались, насколько конкретно это не удалось? Была ли ошибка в PHP? Ошибка в JavaScript? Неожиданный результат?

2. Никакой ошибки. Но это неверная сумма, а не сумма, указанная переменной. Например, переменная сумма, с которой я пробовал, составляет 21 доллар, но когда вы входите в PayPal, она показывает 600 долларов

3. Какую отладку вы провели, чтобы подтвердить, что он выдает ожидаемое значение? Когда вы выводите значение из PHP в свой код JavaScript, когда вы изучаете этот вывод в исходном коде страницы вашего браузера, какое значение было передано клиенту? Какова точная результирующая строка кода JavaScript?

4. После отладки я все еще получаю значение заказа 600, что неверно. Это потому, что у меня есть кнопка по умолчанию, которая вычисляет значение как 21. Я попытался выяснить из своей системы, где она получает эту цифру, но безуспешно.

5. «После отладки я все еще получаю значение порядка 600» — Если этот код: value: '<?php echo $order_amount;?>' приводит к такому выводу: value: '600' тогда значение времени выполнения $order_amount равно 600 . Если это значение неверно, вам нужно будет выяснить, откуда берется это значение и почему оно не такое, как вы ожидаете. Показанный код не имеет к этому никакого отношения. В принципе, это звучит так, как будто проблема в другом месте, а не там, где вы предполагаете.

Ответ №1:

Я смог решить свою проблему благодаря руководству @David.

Я не смог определить идентификатор значения в js PayPal.

Прямо вверху я создал скрытое поле ввода с идентификатором примерно так:

<input type="hidden" id="t_amount" value="<?php echo $orders['order_amount']; ?>">

Вот что я добавил:

  var amountt= document.getElementById("t_amount").value; 
        console.log(amountt);
 

Затем я поставил amountt в качестве значения, и это сработало как шарм.

Вот весь мой код:

 <script>
        var amountt= document.getElementById("t_amount").value; 
        console.log(amountt);
    // Render the PayPal button into #paypal-button-container
    paypal.Buttons({

        // Set up the transaction
        createOrder: function(data, actions) {
            return actions.order.create({
                purchase_units: [{
                    
                    amount: {
                        value: amountt
                    }
                }]
            });
        },

        // Finalize the transaction
        onApprove: function(data, actions) {
            return actions.order.capture().then(function(orderData) {
                // Successful capture! For demo purposes:
                console.log('Capture result', orderData, JSON.stringify(orderData, null, 2));
                var transaction = orderData.purchase_units[0].payments.captures[0];
                alert('Transaction '  transaction.status   ': '   transaction.id   'nnSee console for all available details');

                // Replace the above to show a success message within this page, e.g.
                // const element = document.getElementById('paypal-button-container');
                // element.innerHTML = '';
                // element.innerHTML = '<h3>Thank you for your payment!</h3>';
                // Or go to another URL:  actions.redirect('thank_you.html');
            });
        }


    }).render('#paypal-button-container');
</script>