问题描述
我正在按照 Node 中 Stripe 付款设置的步骤进行操作,但我无法让我的页面重定向到预先构建的 Stripe 结帐表单。对“/create-checkout-session”的发布请求只是在网络选项卡中显示“待处理”。
有人能解释一下这条路线应该指向哪里吗?该教程使它看起来应该是 {localhost address}/create-checkout-session,但我看不出它们是如何连接回 Stripe 的服务器的。
我的 Server.js
var express = require("express");
var app = express();
var cors = require("cors");
app.use(cors());
app.options("*",cors());
var dotenv = require("dotenv");
const Stripe = require("stripe");
const stripe = Stripe(
"***************************** (secret key would go here) ************************"
);
app.get(
"/checkout-session",async (req,res) => {
const { sessionId } = req.query;
const session = await stripe.checkout.sessions.retrieve(sessionId);
res.send(session);
});
app.post("/create-checkout-session",res) => {
const { priceId } = req.body;
try {
const session = await stripe.checkout.sessions.create({
mode: "subscription",payment_method_types: ["card"],line_items: [
{
price: priceId,quantity: 1
}
],success_url: "localhost:3000/listings?session_id={CHECKOUT_SESSION_ID}",cancel_url: "localhost:3000/stripe"
});
res.send({
sessionId: session.id
});
} catch (e) {
res.status(400);
return res.send({
error: {
message: e.message
}
});
}
})
app.listen(4242,() =>
console.log(`Node server listening at http://localhost:${4242}/`)
客户端
<template>
<div id="main">
<head>
<title>Checkout</title>
<script src="https://js.stripe.com/v3/"></script>
</head>
<body>
<button @click.prevent="createSession" ref="checkout">Subscribe</button>
</body>
</div>
</template>
<script>
var createCheckoutSession = function(priceId) {
console.log("create checkout");
return fetch("http://localhost:4242/create-checkout-session",{
method: "POST",headers: {
"Content-Type": "application/json"
},body: JSON.stringify({
priceId: "price_1I641zIXVRhKifjKEM8o7Fat"
})
}).then(function(result) {
console.log("posted");
return result.json();
});
};
export default {
methods: {
createSession() {
console.log("called function");
createCheckoutSession().then(function(data) {
console.log("redirected");
// Call Stripe.js method to redirect to the new Checkout page
stripe.redirecttocheckout({
sessionId: data.sessionId
});
console.log("redirected").then(handleResult);
});
}
}
};
</script>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)