Как я могу подтвердить платеж PayPal, прежде чем предпринимать какие-либо действия в ASP. NET Core + Angular + простая интеграция с PayPal? - PullRequest
0 голосов
/ 28 мая 2020

Как я могу подтвердить платеж PayPal перед выполнением каких-либо действий в ASP. NET Core + Angular + простая интеграция с PayPal?

Моя цель - добавить способ оплаты в свое приложение. В моем приложении есть виртуальная валюта, которую пользователь может приобрести за реальные деньги. Так, например, я продаю 100 виртуальных валют за 10 долларов США. Теперь я хочу, чтобы пользователь заплатил 10 долларов США, а затем добавил соответствующее количество виртуальной валюты для пользователя в мою базу данных.

Я нашел самый простой способ добавить PayPal. Здесь это:

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Ensures optimal rendering on mobile devices. -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <!-- Optimal Internet Explorer compatibility -->
  </head>

  <body>
    <script src="https://www.paypal.com/sdk/js?client-id=YOUR_SB_CLIENT_ID"> // Replace YOUR_SB_CLIENT_ID with your sandbox client ID
    </script>

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

    <!-- Add the checkout buttons, set up the order and approve the order -->
    <script>
      paypal.Buttons({
        createOrder: function(data, actions) {
          return actions.order.create({
            purchase_units: [{
              amount: {
                value: '0.01'
              }
            }]
          });
        },
        onApprove: function(data, actions) {
          return actions.order.capture().then(function(details) {
            alert('Transaction completed by ' + details.payer.name.given_name);
          });
        }
      }).render('#paypal-button-container'); // Display payment options on your web page
    </script>
  </body>
</html>

Как мы видим, существует только один метод, который создает платеж и запускает его на стороне PayPal (поправьте меня, пожалуйста, если я ошибаюсь) имя метода createOrder. Теперь, когда заказ выполнен, я могу запустить свой собственный код в функции onApprove.

Итак, я полагаю, PayPal ожидает, что я добавлю свою виртуальную валюту в учетную запись пользователя (в базу данных) методом onApprove. Т.е. PayPal ожидает, что я вызову конечную точку моей серверной части, которая добавит валюту, во внешнем методе onApprove. Но я не понимаю, как я могу проверить на своем сервере, что пользователь просто не вызвал конечную точку из инструментов разработчика или аналогичного места и фактически совершил покупку.

Должен ли я обязательно создать настраиваемую форму с настраиваемый внутренний код, который будет работать с SDK PayPal, если я хочу запретить пользователю звонить на мою конечную точку без фактической покупки валюты?

...