Я пытаюсь использовать 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.
Есть предложения, что я здесь не так делаю?