首页 > 解决方案 > Firebase 只有在付款成功后才能注册用户

问题描述

我正在尝试实现以下流程:

  1. 用户进入网站
  2. 用户点击Subscribe now
  3. 用户被重定向到Stripe Checkout(因为它更容易)
  4. 用户支付成功
  5. 用户现在可以登录(甚至更好 - 自动登录)
  6. 每月自动向用户收费,因此更新数据库(以控制访问)

长话短说:仅在用户付费时才授予用户访问权限。

我为此使用 Firebase,但似乎有很多障碍/头痛:

在使用 Firebase 时,我在网上浏览了有关订阅模式的所有信息,但几乎没有。

我的问题是:任何人都使用Stripe(任何,不必是 Checkout - 流程相同)和Firebase实现订阅服务?还是我应该使用自己的服务器并将 Firebase 仅用于数据库?

当用户必须先注册然后付款(摩擦太大)时,我真的不认为它是一个好的用户体验。

标签: firebasestripe-payments

解决方案


使用云功能:

  1. 在结帐时创建一个条纹客户。
stripe.customers.create({ email: 'user_email' }) // grab customer id
  1. 创建firebase用户文档并将条纹客户ID保存到“用户”集合中。

(使用userRecord.uidid 到doc()id 中)

  firebaseAdmin.auth().createUser({
      email: 'email',
      password: 'temporary_password',
      displayName: 'fullname'
    })
    .then((userRecord) => {
      return firebaseAdminSDK.firestore()
        .collection('users').doc(userRecord.uid)
        .set({ stripe_account: 'cus_HILXPWljT9fKRA' })
    })
  • 向用户发送电子邮件
  • 将电子邮件和密码发送回客户。

在客户端:

  1. 收到云功能服务器的成功消息后,让用户自动登录
firebase.auth().signInWithEmailAndPassword(data.email, data.password)
  1. 当用户登录时,stripe_account从用户集合中获取并获取条带订阅状态并将其显示给用户。

  2. 要求用户验证其电子邮件或更改密码。禁用所有编辑,直到用户验证其电子邮件或更改其密码。


推荐阅读