![](/img/trans.png)
[英]Storing a username on sign up only displays after page refresh (Firebase)
[英]Firebase sign user up only after successful payment
我正在尝试实现以下流程:
Subscribe now
Stripe Checkout
(因为它更容易)长话短说:只有在用户付费时才授予他访问权限。
我为此使用 Firebase,但似乎有很多障碍/头痛:
我用Firebase的时候到处找web关于订阅model,几乎没有。
我的问题是:任何人都使用Stripe实现了订阅服务(任何,不必是 Checkout - 流程是一样的)和Firebase ? 或者我应该为我自己的服务器使用 go 而仅将 Firebase 用于数据库?
当用户必须先注册然后付款(太多摩擦)时,我真的不觉得它是一个好的 UX。
使用云函数:
stripe.customers.create({ email: 'user_email' }) // grab customer id
(将userRecord.uid
id 用于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' })
})
在客户端:
firebase.auth().signInWithEmailAndPassword(data.email, data.password)
当用户登录时,从用户集合中获取stripe_account
并获取条带订阅状态并将其显示给用户。
要求用户验证其 email 或更改密码。 禁用所有编辑,直到用户验证其 email 或更改其密码。
我正在考虑使用 firebase 条纹扩展的以下设置:
用户填写电子邮件地址并单击提交。
signInAnonymously()
并使用updateEmail()
设置用户电子邮件地址。
然后创建一个附加 uid 的结帐会话:
async stripeCheckout({ state }, payload) { const uid = state.authUser.uid const ref = await this.$fire.firestore.collection('users').doc(uid).collection('checkout_sessions').add({ price: payload.price, success_url: SUCCES_URL, cancel_url: CANCEL_URL, }); // Wait for the CheckoutSession to get attached by the extension ref.onSnapshot((snap) => { const { error, url } = snap.data(); if (error) { // Show an error to your customer and // inspect your Cloud Function logs in the Firebase console. alert(`An error occured: ${error.message}`); } if (url) { // We have a Stripe Checkout URL, let's redirect. window.location.assign(url); } }) }
CANCEL_URL 可以是任何 url
SUCCESS_URL 将是一个 url + 带有电子邮件的查询参数
在 SUCCESS_URL 后面,您将调用sendSignInLinkToEmail()
在 stripe 中,您可以在订阅中设置自定义声明,例如: stripeRole
equals premium
。 此声明将添加到 firebase 授权,仅供订阅用户使用。
您的前端可以使用 auth guard 或中间件来检查自定义声明
如果您使用 firestore 为高级会员提供内容,您应该使用如下安全规则: request.auth.token.stripeRole == "premium";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.