Как отправить настраиваемую переменную с помощью стандартной проверки интеграции PayPal? - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь использовать IPN для обновления «статуса платежа» пользователя в моей MySQL таблице после того, как пользователь заплатил.

Я использую стандартную интеграционную кассу PayPal. После некоторого чтения я понял, что мне нужно отправить пользовательскую переменную, содержащую идентификатор таблицы пользователя MySQL, в PayPal, чтобы PayPal опубликовал ее в IPN после оплаты пользователем. Затем я могу получить запись MySQL, используя идентификатор пользователя, и обновить «статус платежа» на «оплачено».

Мне удалось сделать все, что указано выше, за исключением отправки настраиваемой переменной с помощью стандартной проверки интеграции PayPal. Я знаю, что код для отправки пользовательской переменной выглядит примерно так:

<input type='hidden' name='custom' value='<?php echo $id; ?>'/>

В приведенном выше коде $ id - это идентификатор пользователя из таблицы MySQL, которую я поместил в переменную php. .

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

<script src="https://www.paypal.com/sdk/js?client-id=my_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: '29.99'
                                           }
                                           }]
                                           });
               },
               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>

EDIT:

Я понял что этот процесс проще с использованием базовой настройки интеграции PayPal c, и что я могу использовать переменную Purcha_units "custom_id". Однако я хотел бы сделать пользовательский идентификатор переменной javascript, которую я определил ранее в документе, например:

<div id="paypal-button-container"></div>
<script src="https://www.paypal.com/sdk/js?client-id=my_client_id&currency=USD" data-sdk-integration-source="button-factory"></script>
<script>
  paypal.Buttons({
      style: {
          shape: 'pill',
          color: 'white',
          layout: 'vertical',
          label: 'paypal',

      },
      createOrder: function(data, actions) {
          return actions.order.create({
              purchase_units: [{
                  amount: {
                      value: '29.99'
                  }
          custom_id: {
              value: id
          }
              }],
          application_context: {
                    shipping_preference: 'NO_SHIPPING'
              }
          });
      },
      onApprove: function(data, actions) {
          return actions.order.capture().then(function(details) {
              alert('Transaction completed by ' + details.payer.name.given_name + '!');
          });
      }
  }).render('#paypal-button-container');
</script>

Но это не работает :(. Фактически, я не могу получить переменная custom_id должна работать вообще. Есть ли у кого-нибудь предложения, как это исправить?

...