【发布时间】: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