javascript - 发生错误:无法读取 null 的属性“stripeId”
问题描述
为了某些测试目的,我将我的条带和 firebase api 密钥和所有内容都更改为测试模式。但是,当我尝试使用 firebase stripe api 重定向到结帐时,我在控制台中遇到了这个错误,令人不快:
An error occured: Cannot read property 'stripeId' of null
但是,我的代码中不存在 stripeID。有趣的。这是代码。哦,请记住,这只发生在测试模式下。
var userID = "";
firebase.auth().onAuthStateChanged((user) => {
if(user) {
userID = user.uid
console.log(user.uid)
}
});
export async function createCheckoutSession(activtyStatus){
var price = 'price_1Iav0JKDPaWWeL1yBa9F7Aht'
if (activtyStatus == "canceled") {
// test price
price = 'price_1IelOCKDPaWWeL1ynps36jkc'
}
const checkoutSessionRef = firestore
.collection('customers')
.doc(userID)
.collection('checkout_sessions')
.add({
price: price,
success_url: "https://app.x.com/successPage",
cancel_url: "https://app.x.com/signin",
});
// Wait for the CheckoutSession to get attached by the extension
(await checkoutSessionRef).onSnapshot(function (snap) {
const { error, sessionId } = snap.data();
if (error) {
// Show an error to your customer and
// inspect your Cloud Function logs in the Firebase console.
console.log(`An error occured: ${error.message}`);
}
if (sessionId) {
// We have a session, let's redirect to Checkout
// Init Stripe
const stripe = window.Stripe('pk_test_C');
console.log("going to stripe: ")
stripe.redirectToCheckout({sessionId})
console.log("logged stripe")
}
});
}
export async function goToBilliingPortal(){
var finalRoute = "https://app.x.com/profile"
const functionRef = app
.functions('us-central1')
.httpsCallable('ext-firestore-stripe-subscriptions-createPortalLink');
const {data} = await functionRef({returnUrl : finalRoute});
window.location.assign(data.url);
};
有人有什么想法吗?
解决方案
您是否检查过 Stripe 仪表板或 Firebase Functions 的日志内容?我遇到了类似的问题,查看日志是因为 createCheckoutSession 函数失败。我的 Firebase 日志中有以下消息:
ext-firestore-stripe-subscriptions-createCheckoutSession ❗️[错误]:无法为 [XXXXXXXXXXXXXXXXXXXXXX] 创建客户:无法使用可发布的 API 密钥进行此 API 调用。请使用秘密 API 密钥。您可以在 https://dashboard.stripe.com/account/apikeys找到您的 API 密钥列表。
我只需要在 Firebase 控制台中用受限密钥替换“具有受限访问权限的 Stripe API 密钥”中的密钥,就可以解决了。
推荐阅读
- triggers - 如何在 GitLab CI 中触发管道
- django - Pandas/Django - 无法将保存为文件字段的 csv 转换为数据框
- c - C 指针地址差异
- php - CallRail 网络钩子
- python - 两列 pandas DataFrame 上的条件不等式语句
- javascript - 如何识别未显示的模板文字模态的错误?
- java - 在 JPA/Hibernate 中为没有业务键的浅层类层次结构提供对象相等性
- c# - 你能在 Azure 函数的全局字典中存储一个值吗
- sql - 递归关联多对多和主键和外键
- sql - 检查时间范围是否不在 PostgreSQL 的“午休”时间范围内