Проблема при создании заказа на Paypal Javascript - PullRequest
0 голосов
/ 01 июня 2019

У меня проблема, когда скрипт вызывает запрос на создание заказа на странице HTML / javascript.

В консоли появляется ошибка «Ожидается обещание передать идентификатор строкового порядка в createOrder».

Я даю свой код HTMl / javascript

<html >
<body>
<div id="bouton-paypal"></div>
<script src="https://www.paypal.com/sdk/js?client-id=monid"></script>
<script>
paypal.Buttons({
  // Set up the transaction
  createOrder: function() {
      var SETEC_URL = 'http://localhost/paypalphp/paypalcreatepayment.php';

      return fetch(SETEC_URL, {
        method: 'post',
        headers: {
          'content-type': 'application/json'
        }
      }).then(function(res) {
        return res.json();
      }).then(function(data) {
        return data.token;
      });
    }
}).render('#bouton-paypal');

Ответы [ 2 ]

0 голосов
/ 03 июня 2019

Спасибо за ответ.Я нашел решение этой проблемы

  <script>
    paypal.Buttons({

      style: {
   layout:  'vertical',
   color:   'blue',
   shape:   'rect',
   label:   'paypal'
 },
      // Set up the transaction
      createOrder: function() {
          var SETEC_URL = 'http://localhost/paypalphp/paypalcreatepayment.php';

          return fetch(SETEC_URL, {
            method: 'post',
            headers: {
              'content-type': 'application/json'
            }
          }).then(function(res) {
            return res.json();
          }).then(function(data) {
            let token;
            token = data.paypal_response.links[1].href.match(/EC-\w+/)[0];
            console.log(token);
            return token;
          });
        },

  // Finalize the transaction
  onApprove: function(data) {     // On indique le chemin vers notre script PHP qui se chargera d'exécuter le paiement (appelé après approbation de l'utilisateur côté client).
          var EXECUTE_URL = 'http://localhost/paypalphp/paypalexecutepayment2.php?payerID='+data.payerID+'&paymentID='+data.paymentID;
          /*var data = {
            paymentID: data.paymentID,
            payerID: data.payerID
          };*/
          console.log(data);
          return fetch(EXECUTE_URL, {
    method: 'post',
    headers: {
      'content-type': 'application/json'
    },
    body: JSON.stringify({
      token:   data.orderID,
      payerID: data.payerID,
      paymentID: data.paymentID
    })
  });
},
onCancel: function(data, actions) {
  alert("Paiement annulé : vous avez fermé la fenêtre de paiement.");
},
onError: function(err) {
  alert("Paiement annulé : une erreur est survenue. Merci de bien vouloir réessayer ultérieurement.");
}
    }).render('#bouton-paypal');
  </script>
0 голосов
/ 01 июня 2019

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

Ошибка, которую выуказывает на то, что строка return data.token; не возвращает правильную строку идентификатора заказа (скорее всего, возвращает неопределенное значение).

Я добавил console.log(data) в ваш код.Пожалуйста, запустите это, чтобы мы могли проверить JSON, возвращенный с вашего сервера.

<html>
<body>
<div id="bouton-paypal"></div>
<script src="https://www.paypal.com/sdk/js?client-id=monid"></script>
<script>
  paypal.Buttons({
    // Set up the transaction
    createOrder: function() {
      var SETEC_URL = 'http://localhost/paypalphp/paypalcreatepayment.php';

      return fetch(SETEC_URL, {
        method: 'post',
        headers: {
          'content-type': 'application/json'
        }
      }).then(function(res) {
        return res.json();
      }).then(function(data) {
        console.log(data)
        return data.token;
      });
    }
  }).render('#bouton-paypal');
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...