我有一个名为stripe.js的函数,如下所示
const stripe = require("stripe")(process.env.STRIPE_SECRET_TEST);
exports.handler = async (event, context) => {
const session = await stripe.checkout.sessions.create({
payment_method_types: ["card"],
line_items: [
{
price_data: {
currency: "gbp",
product_data: {
name: "Prunus serrulata",
},
unit_amount: 6000,
},
quantity: 1,
},
],
mode: "payment",
success_url: "/success",
cancel_url: "/cancel",
});
return {
statusCode: 200,
body: JSON.stringify({
id: session.id,
}),
};
};
从checkout组件 调用的
import React from "react";
import Stripe from "stripe";
const stripe = Stripe(
"pk_test_51HqgwdGKpDMhyEuL11A63hDc42CNdjZbMH93xDPIumVyYlgGe5byVF9rXhgW0rs64r0uaDjQUqlwOUDXrbTZy9nx00cyCIwiBm"
);
const callApi = () => {
fetch("/api/stripe", {
method: "POST",
})
.then((response) => response.json())
.then((response) => console.log(response))
.then((session) => {
return stripe.redirectToCheckout({ sessionId: session.id });
})
.then((result) => {
if (result.err) {
alert(result.err.message);
}
})
.catch((err) => {
console.error("Error:", err);
});
};
const Checkout = () => {
return (
<div>
<form
onSubmit={callApi}
>
<ChkButton>Checkout</ChkButton>
</form>
</div>
);
};
我得到这个在条纹:条纹会话
数据将条纹成功,但支付页面不加载,因为我认为我有重定向错误?谁能给我指出正确的方向吗?
如有任何帮助,不胜感激
我一直在遵循这个教程https://www.freecodecamp.org/news/serverless-online-payments/试图修改它的工作在我的应用程序,但我只得到这个远。我在谷歌上搜索了一下,我没有找到解决方案,也没有在netflix论坛上找到。
session
目前未定义,因为您没有返回response.json()
。
总的来说,第二个。then链也不是必要的,尽管我假设您只是为了记录目的而使用它。试一试:
.then((response) => {
return response.json();
})
.then((session) => {
return stripe.redirectToCheckout({ sessionId: session.id });
})