如何为带Firebase扩展的Stripe NextJS生成计费门户链接?

tpgth1q7  于 2022-11-29  发布在  其他
关注(0)|答案(1)|浏览(94)

我使用Firebase中的Stripe扩展在NextJS Web应用程序中创建订阅。
我的目标是为返回的用户创建一个链接,以便在Stripe中编辑他们的支付,而无需再次进行身份验证(他们已经在我的Web应用程序中进行了身份验证,Firebase可以识别身份验证)。
我正在使用Stripe的测试模式,我有一个测试客户和测试产品。
我试过

首先,我设置了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>
kqlmhetl

kqlmhetl1#

您应该使用Stripe库创建计费门户会话(第二种方法),并且您可能希望检查Dashboard logs并将端点设置为/v1/billing_portal/sessions,以便查看在门户会话创建过程中是否存在任何错误。

相关问题