PayPal Checkout API с PHP - Безопасная отправка и получение дополнительных данных - PullRequest
1 голос
/ 08 июля 2019

Я учусь использовать новую версию API Paypal, и у меня есть некоторые сомнения.

Примечание: я пробовал это на https://www.sandbox.paypal.com, и это работает, у меня естьтесты в Live не выполнены.

onApprove:

Мне нужно отправить дополнительные персонализированные данные в Paypal, и как только пользователь совершит платеж, я вернусь к URL на моем сервереи затем извлеките данные, которые я отправил.

Paypal использует fetch () , чтобы указать URL-адрес и объект Json, называемый заголовками, там я добавляю дополнительное значение, называемое user_ID , который мне нужно восстановить.

Я использую PHP-функцию getallheaders () , чтобы получить user_ID , который я указал.

Мои вопросы:

  1. Это правильный способ отправки персонализированных данных в PayPal с последующим восстановлением?
  2. Это безопасно использовать getallheaders () , я понимаю, что заголовки могут быть изменены перед отправкой, есть ли возможностьЕсли их можно изменить?
  3. Используя $ _ SERVER ['HTTP_REFERER'] , чтобы определить, что указанный веб-сайт принадлежит Paypal, это по-прежнему безопасно или его трудно взломать?
  4. Это был бы безопасный способ интеграции Paypal Checkout?
  5. Любую рекомендацию, которая может дать мне, пожалуйста.

Буду очень признателен за вашу помощь.

<!DOCTYPE html>

<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
</head>

<body>


    <input type="text" id="price" value="100.00">
  <input type="hidden" id="user_id" value="15">

    <div id="paypal-button-container"></div>

    <script src="https://www.paypal.com/sdk/js?client-id=HERE_CLIENT_ID&currency=USD"></script>

    <script>
    paypal.Buttons({
    createOrder: function(data, actions) {
      return actions.order.create({
        purchase_units: [{
          amount: {
            value: document.getElementById("price").value
          }
        }]
      });
    },
    onApprove: function(data, actions) {
      return actions.order.capture().then(function(details) {
        alert('Transaction completed by ' + details.payer.name.given_name);
        // Call your server to save the transaction
        return fetch('https://my-domain.com/payment-from-paypal.php', {
          method: 'post',
          headers: {
            'content-type': 'application/json'
          },
          body: JSON.stringify({
            orderID: data.orderID,
            user_ID: document.getElementById("user_id").value
          })
        });
      });
    }
  }).render('#paypal-button-container');

  </script>
</body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...