Как передать переменную JS во второй скрипт, чтобы он не был доступен или изменялся с консоли? - PullRequest
1 голос
/ 15 января 2020

У меня есть два сценария: один для расчета суммы товаров в корзине и один для передачи переменной в API PayPal. Можно ли передать эту переменную из сценария корзины покупок в сценарий PayPal, если кто-то не сможет изменить ее значение из консоли? В противном случае люди смогут определить, сколько они хотели бы заплатить за товары, и отправить информацию в PayPal. Вот мой код:

Корзина:

```
var total = 0; //Total for all the items in the shopping cart, value is passed off to paypal-buttons.js to complete the checkout.

// Calculates values items in cart depending on quantity
function addData(clicked_id, quantity) {
  var price = values[clicked_id].price;
  var qty = document.getElementById(quantity).value;
  var lineTotal = price * qty;
  total += lineTotal;
  document.getElementById("total").innerHTML = total;
  addRow(clicked_id, qty, lineTotal);
}

PayPal:


    paypal.Buttons({
  style: {
    shape: 'rect',
    color: 'gold',
    layout: 'vertical',
    label: 'checkout',

  },
  createOrder: function(data, actions) {

    return actions.order.create({
      purchase_units: [{
        amount: {
          value: total
        }
      }]
    });
  },
  onApprove: function(data, actions) {
    return actions.order.capture().then(function(details) {
      alert('Thank you for your order ' + details.payer.name.given_name +   ', your equipment is on its way!');
    });
  }
}).render('#paypal-button-container');

Я хотел бы отправить значение 'total' из корзина для покупок в PayPal. Я мог бы попытаться использовать запутывание как частичное решение, но я бы хотел, чтобы оно было более безопасным, чем это.

1 Ответ

1 голос
/ 15 января 2020

Единственный способ обезопасить себя от злонамеренных изменений на стороне клиента - перейти на интеграцию на стороне сервера, чтобы вызовы API настраивали и фиксировали платеж. Вот пример демонстрации пользовательского интерфейса:

https://developer.paypal.com/demo/checkout/# / pattern / server

Вот руководство по реализации необходимых вызовов API v2 / orders с вашего сервера :

https://developer.paypal.com/docs/checkout/reference/server-integration/

...