Paypal Express PHP - Публикация переменных JS в методе onAuthorize - PullRequest
0 голосов
/ 07 января 2019

Я работаю над Paypal Express Checkout на PHP и пытаюсь опубликовать другие переменные в URL-адресах перенаправления после выполнения метода onAuthorize.

Я пытался запустить функцию Ajax после вызова метода onAuthorize, но пока безуспешно. Мои переменные не могут получить URL-адреса, заданные в redirect_urls.

onAuthorize Метод:

onAuthorize: function (data, actions) {
  return actions.payment.execute()
    .then(function () {
      postAjax();
      actions.redirect();
    });
}

Функция Ajax с именем postAjax

function postAjax() {
  jQuery.ajax({
    type: "POST",
    ataType: 'text',
    url: "<?php if ($langue == $fr) {echo "http://localhost/index.php/fr/confirmation";} else {echo "http://localhost/index.php/en/confirmation";}?>",
    data: {idFif : "testValue123"},
    success: function(){
      alert(data);
    }
  });
}

Перенаправление URL

redirect_urls: {
  return_url: '
    <?php if ($langue == $fr) {
       echo "http://localhost/index.php/fr/confirmation"; } 
       else {echo "http://localhost/index.php/en/confirmation";}?>'
    }

Я бы хотел опубликовать значения без необходимости создания внешней функции ajax (в данном случае postAjax ()), но я не могу понять, как это сделать. Кто-нибудь может дать мне несколько советов? Большое спасибо!

1 Ответ

0 голосов
/ 07 января 2019

Я настоятельно рекомендую для вашего случая использовать Paypal PHP SDK, потому что экспресс-заказ, да, это легко, но у меня был опыт, когда пользователь закрывал браузер, когда он закончил платить на вкладке PayPal, поэтому AJAX Я запустил, когда платеж был выполнен в then() обратном вызове onAuthorize(), иногда не заканчивающемся для выполнения, вместо этого, при запуске проверки на стороне сервера, окно PayPal закрывается, когда ваш код был выполнен полностью.

Таким образом, в вашем случае нет другого способа отправить что-либо на сервер после выполнения платежа, ajax - ваш единственный выбор. Если вы решите осуществить платеж с помощью PHP SDK, вы можете сделать это:

onAuthorize: function(data, actions) {
                // Make a request to your server
                return actions.request.post('urlServerPost', {
                    paymentID: data.paymentID,
                    payerID:   data.payerID,
                    variable1: 'something',
                    variable2: 'something2'
                })
                .then(function(res) {
                    //Your payment has already been approved and the process on the server has been finished also
                });
            }
...