【问题标题】:Python + Stripe.js payment integration gives error Invalid payment_page idPython + Stripe.js 支付集成给出错误 Invalid payment_page id
【发布时间】:2019-07-31 22:45:47
【问题描述】:

我正在尝试使用 Stripe Checkout 将付款集成到我的网络应用中。我按照their website 上的指南进行操作,当我致电stripe.checkout.Session.create 时,它会将我重定向到付款页面https://checkout.stripe.com/pay/xxx,但从未加载。我已经使用 Chrome 的 F12 阅读了网络请求,并且正在获取此信息。

{error: {message: "Invalid payment_page id: test123", type: "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",
    }
  ]
)

我的html页面上的js代码

<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>

我在网络选项卡中发现错误的无限加载循环的屏幕截图。

编辑:我还刚刚注意到,当以下脚本位于我的 HTML 中时,它会立即将用户重定向到 Stripe 结帐。我怎样才能阻止它这样做,只有在按下提交/支付按钮时才会发生。

编辑 2 我发现在我的上层编辑中我需要创建一个事件处理程序/侦听器。我会自己研究,虽然非常感谢,但无需回答那部分。

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

【问题讨论】:

  • 当你应该传递 stripe.checkout.Session.create 中返回的内容时,你传递的是 test123 而不是 redirectToCheckout 中的会话 ID
  • @dan-klasson 我如何获取stripe.checkout.Session.create 中的会话ID?我还不是编码方面的专家,如果你能给我一个想法或什么,我会做一些谷歌搜索和研究。
  • 我猜你是从 stripe.checkout.Session.create 返回的内容中得到的。然后将它传递给你的模板,然后用 JS 抓取它并发送到 Stripe
  • 你是对的。我刚刚在python -i 中完成了我的代码,它返回了一个ID。我会试着弄清楚如何找回它。谢谢

标签: stripe-payments


【解决方案1】:
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) 从条带返回响应 ID。我保存了这个变量并将其添加为上下文,以在我的 HTML 中用作变量。页面现在已完全加载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-27
    • 2013-12-11
    • 2015-12-19
    • 2017-05-12
    • 1970-01-01
    • 2021-02-09
    • 2017-08-12
    • 2017-04-09
    相关资源
    最近更新 更多