Почему handleCardPayment в Stripe не работает в моей функции Javascript? - PullRequest
1 голос
/ 06 апреля 2019

Я пытаюсь использовать Stripes handleCardPayment для обработки платежа после платежного намерения. Я не могу заставить функцию handleCardPayment работать внутри другой функции Javascript.

Я попытался отладить мой код шаг за шагом. Функция Javascript запускается и выводит предупреждение в окно.

Также устанавливаются переменные Javascript, которые я установил в верхней части функции.

Однако функция handleCardPayment (), похоже, не работает?

Я попытался попробовать / поймать, чтобы узнать, могу ли я отловить ошибку, полученную из запроса, но ничего не записано

Я немного озадачен тем, где проблема с этим? хотя я подозреваю, что это может быть что-то базовое, чего мне не хватает при правильном вызове функции чередования.

function completePayment() {

 // Assign client secret from PHP session variable

 var clientSecret = "<?php echo $_SESSION['c_secret'] ?>";

 try {

  stripe.handleCardPayment(
   clientSecret, cardElement, {
    source_data: {
      owner: {email: "<?php echo $_SESSION['m_usr_email'] ?>"}
    }
   }
  ).then(function(result) {
     if (result.error) {
        alert("Error in payment");
      } else {
        alert("Success in payment");
      }
    }); 
  }
  catch(error) {
   console.log(error.message);
  } 
}

Моя цель платежа создается на отдельной странице PHP. Это работает правильно, и намерение платежа создается в полосе со связанным клиентским секретом.

Как работает приложение:

  • Пользователь нажимает кнопку «Подписаться».
  • Ajax-запрос запускается и ПОСТАВЛЯЕТСЯ в отдельный PHP-файл
  • Файл PHP создает намерение оплаты и сохраняет секрет клиента в переменной PHP SESSION
  • Ajax «Завершить функцию ()», затем вызывает «completePayment ();»
  • Javascript function 'completePayment ();' находится непосредственно перед закрывающим тегом внизу страницы.
  • Отладка completePayment () показывает, что функция выполняется после вызова Ajax «Complete function ()».
  • stripe.HandleCardPayment не может ничего сделать.
  • cardElement - это глобальная переменная Javascript, устанавливаемая при создании элемента карты (создается при начальной загрузке страницы).

  • Я отладил обе переменные PHP SESSION и подтверждаю, что они оба были установлены с правильной информацией, прежде чем использовать их в функции handleCardPayment.

Есть предложения, что я здесь не так делаю?

...