【发布时间】:2021-01-12 08:12:36
【问题描述】:
我有一个结帐会话:
app.post("/create-checkout-session", async (req, res) => {
const session = await stripe.checkout.sessions.create({
payment_method_types: ["card"],
line_items: converted_items,
mode: "payment",
success_url: process.env.URL + "/order-success.html",
cancel_url: process.env.URL + `/order-page.html`,
billing_address_collection: 'required',
});
res.json({ id: session.id, order: req.body });
});
我想设置一个 webhook,以便在成功付款后,它会从客户那里收集数据(姓名、地址、购买的产品)
我从 webhook 文档中复制了这个权利:
const fulfillOrder = (session) => {
// TODO: fill me in
console.log("Fulfilling order", session);
}
app.post('/webhook', bodyParser.raw({ type: 'application/json' }), (request, response) => {
const payload = request.body;
const sig = request.headers['stripe-signature'];
let event;
try {
event = stripe.webhooks.constructEvent(payload, sig, endpointSecret);
} catch (err) {
return response.status(400).send(`Webhook Error: ${err.message}`);
}
console.log(event.type)
// Handle the checkout.session.completed event
if (event.type === 'checkout.session.completed') {
const session = event.data.object;
console.log("did order")
// Fulfill the purchase...
fulfillOrder(session);
}
response.status(200);
});
我的设置方法是我首先在 localhost 上运行我的服务器,然后我从终端运行测试 webhook 命令
stripe listen --forward-to localhost:3000/webhook --events=checkout.session.completed
当我付款时,它会在终端中显示这些消息:
【问题讨论】: