我使用Firebase中的Stripe扩展在NextJS Web应用程序中创建订阅。
我的目标是为返回的用户创建一个链接,以便在Stripe中编辑他们的支付,而无需再次进行身份验证(他们已经在我的Web应用程序中进行了身份验证,Firebase可以识别身份验证)。
我正在使用Stripe的测试模式,我有一个测试客户和测试产品。
我试过
- Firebase Stripe扩展库不包含任何仅返回计费门户链接的函数:https://github.com/stripe/stripe-firebase-extensions/blob/next/firestore-stripe-web-sdk/markdown/firestore-stripe-payments.md
- 在此Vercel博客中使用NextJS推荐的条带foundn导入
首先,我设置了Stripe-JS的导入:https://github.com/vercel/next.js/blob/758990dc06da4c2913f42fdfdacfe53e29e56593/examples/with-stripe-typescript/utils/get-stripejs.ts
export default function Settings() {
import stripe from "../../stripe_utils/get_stripejs"
async function editDashboard() {
const dashboardLink = await stripe.billingPortal.sessions.create({
customer: "cus_XXX",
})
}
console.log(dashboardLink.url)
return (
<Button
onClick={() => editDashboard()}>
DEBUG: See payments
</Button>
)
}
这将导致错误:
TypeError: Cannot read properties of undefined (reading 'sessions')
- 使用
stripe
库。这似乎是最有前途的解决方案,但从我读到的这是一个后端库,虽然我试图在前端使用。这种方法没有错误,但我认为它挂在await
上
import Stripe from "stripe"
const stripe = new Stripe(process.env.STRIPE_SECRET)
...
const session = await stripe.billingPortal.sessions.create({
customer: 'cus_XXX',
return_url: 'https://example.com/account',
})
console.log(session.url) // Does not reach here
- 使用预先制作的Stripe链接进行重定向,但用户必须使用其电子邮件在Stripe上进行身份验证(这是可行的,但我宁愿从Stripe获得一个短期链接)
<Button component={Link} to={"https://billing.stripe.com/p/login/XXX"}>
Edit payment info on Stripe
</Button>
1条答案
按热度按时间kqlmhetl1#
您应该使用Stripe库创建计费门户会话(第二种方法),并且您可能希望检查Dashboard logs并将端点设置为
/v1/billing_portal/sessions
,以便查看在门户会话创建过程中是否存在任何错误。