【发布时间】:2021-11-27 07:32:42
【问题描述】:
NEXT JS:我正在尝试将状态变量“cart”的内容放入到 STRIPE api 的 POST 请求的正文中。 购物车的格式为 [{id: 1, amount: 1}, {id: , amount: }.......]
我尝试将项目直接放入 api 处理程序 (list_items) 并且有效。但是我无法让我的“购物车”变量出现在那里,所以我想我必须在 POST 请求本身中包含这些项目。已经尝试让它运行(包括那里的对象和 JSON.stringify 作为“line_items”的属性 - 变量,但无济于事。 也许有人可以帮助我?
API 处理程序:
import Stripe from 'stripe';
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);
export default async function handler(req, res) {
if (req.method !== 'POST') {
return res.send({
error: 'Method need to be POST',
});
}
const domainURL = 'http://localhost:3000';
// const { quantity, mode, productKey } = req.body;
const pmTypes = ['card'];
const session = await stripe.checkout.sessions.create({
payment_method_types: pmTypes,
mode: 'payment',
locale: 'en',
line_items: the_variable????,
success_url: `${domainURL}/success?session_id={CHECKOUT_SESSION_ID}`,
cancel_url: `${domainURL}/cart`,
});
res.send({
sessionId: session.id,
});
}
POST 请求:
const stripeLoader = loadStripe(props.pk);
const redirectToCheckout = async () => {
const stripeClient = await stripeLoader;
const { sessionId } = await fetch('api/checkout_sessions', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body : {????}
}).then((res) => res.json());
stripeClient.redirectToCheckout({ sessionId });
};
【问题讨论】:
标签: javascript api post next.js stripe-payments