我正在尝试在我的node.js应用中使用Stripe支付,在whatsapp上向用户销售产品。
我安装了stripe扩展:stripe/firestore-stripe-payments@0.3.3,并按照文档中的说明进行了操作:
const docRef = await db
.collection('customers')
.doc(currentUser.uid)
.collection('checkout_sessions')
.add({
price: 'price_1GqIC8HYgolSxxxxxxxxx',
success_url: window.location.origin,
cancel_url: window.location.origin,
});
// 等待扩展附加CheckoutSession
docRef.onSnapshot((snap) => {
const { error, url } = snap.data();
if (error) {
// 向客户显示错误,并在Firebase控制台中检查云函数日志。
alert(`发生错误:${error.message}`);
}
if (url) {
// 我们有一个Stripe Checkout URL,让我们重定向。
window.location.assign(url);
}
});
我在云控制台中收到以下错误:
❗️[错误]:为文档[maxxxxxxxxxA]创建Checkout会话失败:提供的标识符没有对应的用户记录。
我发现我需要使用来自Firebase身份验证的userId,但由于我在函数(后端服务器)中运行我的服务,所以在auth中没有客户端/用户。
是否有另一种方法来创建(个别的)stripe结账链接?是否有一种在没有客户端的情况下使用Firebase身份验证的方法?
提前感谢。
我尝试使用auth,
import { getAuth } from "firebase/auth";
const auth = getAuth();
const user = auth.currentUser;
但我收到以下错误:FirebaseError: Firebase: 需要提供选项,当不通过源部署到托管时。 (app/no-options)
我尝试了这个:https://stackoverflow.com/a/74732162/21612440
并得到TypeError: 无法读取未定义的属性'getProvider'(读取'getProvider')
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
云函数(原则上)在没有当前经过身份验证的用户上下文的情况下运行。因此,在云函数中,
auth.currentUser几乎没有意义,因为每个请求可能来自不同的用户。但是,您可以将任何您想要的UID传递到这里的Firestore数据库
.doc(currentUser.uid)。因此,如果您可以以某种其他(安全)方式确定相关的UID,您可以传递该值,Stripe扩展将为该用户处理它。