Paypal Smart Payment выдает ошибку, но все еще обрабатывает платеж - PullRequest
1 голос
/ 02 апреля 2020

У меня есть веб-сайт для клиента, и он запросил платежи по дебету / кредиту на своем сайте, я настроил параметры смарт-платежей и, кажется, на сайте все работает нормально, однако я просто добавил функцию для извлечения переменная (цена) из URL , умные кнопки выдают код ошибки и предполагают, что из-за части javascript получить переменную суммы из URL. Однако платежи обрабатываются так, как должны, независимо от код ошибки.

Ниже приведен пример моего кода

function getQueryVariable(variable)
{
       var query = window.location.search.substring(1);
       var vars = query.split("&");
       for (var i=0;i<vars.length;i++) {
               var pair = vars[i].split("=");
               if(pair[0] == variable){return pair[1];}
       }
       return(false);
}
var sel = getQueryVariable("price");

  paypal.Buttons({
    createOrder: function(data, actions) {
      return actions.order.create({
        purchase_units: [{
          amount: {
            value: sel
          }
        }]
      });
    },
    onApprove: function(data, actions) {
      return actions.order.capture().then(function(details) {
        alert('Transaction completed by ' + details.payer.name.given_name);
      });
    }
  }).render('#paypal-button-container');

1 Ответ

0 голосов
/ 02 апреля 2020

Попробуйте выполнить перенаправление window.location.href в случае успеха вместо отображения предупреждения, и все должно быть в порядке

В качестве альтернативы вы можете сохранить ссылку на кнопки перед рендерингом, а затем закрыть их в случае успеха и обновить страницу. с любым сообщением об успехе.

Что-то вроде (не проверено):

<code>  window.myButtons = paypal.Buttons({
    createOrder: function(data, actions) {
      return actions.order.create({
        purchase_units: [{
          amount: {
            value: sel
          }
        }]
      });
    },
    onApprove: function(data, actions) {
      return actions.order.capture().then(function(details) {
        alert('Transaction completed by ' + details.payer.name.given_name);
        window.myButtons.close();
        document.getElementById('paypal-button-container').innerHTML = '<pre>' + JSON.stringify(details, null, 4) + '
'; }); }}); window.myButtons.render ( '# PayPal кнопки-контейнер');
...