Интеграция платежей Python + Stripe.js выдает ошибку. Неверный идентификатор payment_page - PullRequest
2 голосов
/ 10 марта 2019

Я пытаюсь интегрировать платежи в мое веб-приложение с помощью Stripe Checkout. Я следовал инструкциям на их веб-сайте , и когда я звонил stripe.checkout.Session.create, он перенаправлял меня на страницу оплаты https://checkout.stripe.com/pay/xxx, но никогда не загружался. Я прочитал сетевые запросы, используя Chrome F12, и я получаю эту информацию обратно.

{error: {message: "Недопустимый идентификатор страницы оплаты: test123", введите: "invalid_request_error"}}

Документация Stripe гласит, что id должен быть включен при перенаправлении к оформлению заказа. Затем я просто установил временную строку с именем "test123", но, похоже, она не является действительной. Как бы я пошел дальше?

Мой текущий код (Python)

stripe.api_key = "sk_test_xxxxxxxxxxxxxx"
stripe.api_version = "2018-11-08; checkout_sessions_beta=v1"

stripe.checkout.Session.create(
  success_url="https://mypage.com/success",
  cancel_url="https://mypage.com/cancel",
  payment_method_types=["card"],
   client_reference_id="test123", #not sure if this one is needed
  line_items=[
    {
      "amount": 2000,
      "quantity": 2,
      "name": "Blue banana",
      "currency": "usd",
    }
  ]
)

js код на моей html странице

<script src="https://js.stripe.com/v3/"></script>
<script>
var stripe = Stripe(
  'pk_test_xxxxxxxxxxxx',
  {
    betas: ['checkout_beta_4']
  }
);
</script>

<script>
stripe.redirectToCheckout({
  sessionId: "test123",
}).then(function (result) {
  // Diplay result.error.message to your customer
});
</script>

Снимок экрана бесконечного цикла загрузки, в котором я обнаружил ошибку на вкладке сети. enter image description here

Редактировать: Я также только что заметил, что когда следующий скрипт находится внутри моего HTML, он сразу же перенаправляет пользователей на проверку Stripe. Как я могу помешать этому и сделать это только тогда, когда нажата кнопка «Отправить / заплатить».

Редактировать 2 Я обнаружил, что в моем верхнем редактировании мне нужно создать обработчик / прослушиватель событий. Я буду исследовать это сам, нет необходимости отвечать на эту часть, хотя я очень благодарен.

<script>
    stripe.redirectToCheckout({
      sessionId: "test123",
    }).then(function (result) {
      // Diplay result.error.message to your customer
    });
    </script>

1 Ответ

0 голосов
/ 10 марта 2019
payment = stripe.checkout.Session.create(
  success_url="https://mypage.com/success",
  cancel_url="https://mypage.com/cancel",
  payment_method_types=["card"],
  line_items=[
    {
      "amount": 2000,
      "quantity": 2,
      "name": "Blue banana",
      "currency": "usd",
    }
  ]
)   
context = payment.id

Printing(payment.id) возвращает идентификатор ответа от полосы. Я сохранил эту переменную и добавил ее в качестве контекста для использования в качестве переменной в моем HTML. Страница полностью загружается.

...