Stripe Checkout не перенаправляет на страницу оформления заказа Express

#express #stripe-payments

#экспресс #stripe-платежи

Вопрос:

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

Я думаю, что я правильно написал код, но почему-то мое приложение не перенаправляет пользователя на страницу оформления заказа Stripe. Мой код выглядит следующим образом:

В моем бэкэнде Express:

 router.get("/create-check-out", async (req, res, next) => {
  const session = await stripe.checkout.sessions.create({
    payment_method_types: ['card'],
    mode: 'setup',
    customer: req.body.id,
    success_url: 'http://localhost:5000/ll_profile?session_id={CHECKOUT_SESSION_ID}',
    cancel_url: 'http://localhost:5000/ll_profile',
  });
  res.send (session.id);
});
  

На моей стороне клиента JavaScript:

         $.get("/create-check-out", { id: stripe_customer_id}, async (sessionId) => {
          console.log(sessionId)
          stripe.redirectToCheckout({
            sessionId: sessionId,
            name: "Yugue"
          }).then(function(result) {
            console.log(result)
          });
  

В журнале консоли не отображается sessionId nor result .
Проблема в том, что после отправки запроса get веб-URL становится: http://localhost:5000/ll_profile?name= from http://localhost:5000/ll_profile (URL, под которым находятся все приведенные выше коды), и приложение застревает на той же странице без каких-либо действий по перенаправлению. Я думал, что он должен перенаправлять на встроенную страницу оформления заказа Stripe следующим образом:
введите описание изображения здесь

Что я сделал не так?

Ответ №1:

Скорее всего, у вас есть кнопка внутри <form> элемента, и существует конкуренция между перенаправлением оформления заказа и действием отправки формы. Вы должны либо не использовать форму, либо иным образом убедиться, что используется обработчик кликов, связанный с оформлением preventDefault() заказа.

Если это не так, пожалуйста, предоставьте больше контекста вашей структуры DOM и обработчика кликов.

Комментарии:

1. о да, это то, что я сделал неправильно. Действительно, он находится внутри элемента <form> . Большое тебе спасибо, Брендан Мур, ты спаситель!!