firebase Stripe API 首次付款流程失败
firebase Stripe API failing on first payment process
我已经成功集成了 stripe 和 firebase,使用 Run Subscription Payments with Stripe
。
流程如下:
当我点击注册时,它会把我带到条纹页面,使用这个功能:
export async function createCheckoutSession(activtyStatus){
let user = firebase.auth().currentUser;
const checkoutSessionRef = firestore
.collection('customers')
.doc(userID)
.collection('checkout_sessions')
.add({
price: price,
success_url: "https://xxx/successPage",
cancel_url: "https://xxx/signin",
});
// Wait for the CheckoutSession to get attached by the extension
(await checkoutSessionRef).onSnapshot(function (snap) {
const { error, sessionId } = snap.data();
if (error) {
console.log(`An error occured: ${error.message}`);
}
if (sessionId) {
//live key
const stripe = window.Stripe('pk_livekeyxxxx');
stripe.redirectToCheckout({sessionId})
console.log("logged stripe")
}
});
}
如果成功,它会转到我的 SuccessPage
,它只检查订阅集合是否是在 firebase 中创建的。
所以会发生什么,如果支付成功,它只会渲染 /clients
路由,如果不成功,它会重定向到 createCheckoutSession
函数,返回到 allow客户再次付款。因此,当我在 Stripe 上输入付款详细信息时,有时,它会转到客户并添加订阅,有时,它会重定向到 Stripe 页面,让我再次输入 ti,然后它就可以工作了。
这是我代码中的错误,还是 firebase 和 stripe 只是挑剔?
听起来您可能会在客户到达成功页面时丢失您对客户的引用,这样您就无法检查他们的新订阅。
除了加载用户配置文件的身份验证会话等选项之外,您还可以考虑将成功页面设置为 receive the Session ID,并可选择包含您自己的客户 ID。在显示任何个人信息之前,您当然仍应确保您的客户已通过身份验证,但这可能有助于您加载数据。
更新:会话成功后,您可以从 API 检索它(或检查您的 webhook 数据)以查看 subscription
属性 (API ref) 来查找创建的订阅 ID。
我已经成功集成了 stripe 和 firebase,使用 Run Subscription Payments with Stripe
。
流程如下:
当我点击注册时,它会把我带到条纹页面,使用这个功能:
export async function createCheckoutSession(activtyStatus){
let user = firebase.auth().currentUser;
const checkoutSessionRef = firestore
.collection('customers')
.doc(userID)
.collection('checkout_sessions')
.add({
price: price,
success_url: "https://xxx/successPage",
cancel_url: "https://xxx/signin",
});
// Wait for the CheckoutSession to get attached by the extension
(await checkoutSessionRef).onSnapshot(function (snap) {
const { error, sessionId } = snap.data();
if (error) {
console.log(`An error occured: ${error.message}`);
}
if (sessionId) {
//live key
const stripe = window.Stripe('pk_livekeyxxxx');
stripe.redirectToCheckout({sessionId})
console.log("logged stripe")
}
});
}
如果成功,它会转到我的 SuccessPage
,它只检查订阅集合是否是在 firebase 中创建的。
所以会发生什么,如果支付成功,它只会渲染 /clients
路由,如果不成功,它会重定向到 createCheckoutSession
函数,返回到 allow客户再次付款。因此,当我在 Stripe 上输入付款详细信息时,有时,它会转到客户并添加订阅,有时,它会重定向到 Stripe 页面,让我再次输入 ti,然后它就可以工作了。
这是我代码中的错误,还是 firebase 和 stripe 只是挑剔?
听起来您可能会在客户到达成功页面时丢失您对客户的引用,这样您就无法检查他们的新订阅。
除了加载用户配置文件的身份验证会话等选项之外,您还可以考虑将成功页面设置为 receive the Session ID,并可选择包含您自己的客户 ID。在显示任何个人信息之前,您当然仍应确保您的客户已通过身份验证,但这可能有助于您加载数据。
更新:会话成功后,您可以从 API 检索它(或检查您的 webhook 数据)以查看 subscription
属性 (API ref) 来查找创建的订阅 ID。