使用 Firebase JS SDK 版本 9 实施 Stripe 订阅

Posted

技术标签:

【中文标题】使用 Firebase JS SDK 版本 9 实施 Stripe 订阅【英文标题】:Implement Stripe subscription with Firebase JS SDK version 9 【发布时间】:2022-01-03 08:14:54 【问题描述】:

我在我的 Web 应用程序中使用 Firebase JS V9。我正在尝试将 Firebase 中的 Stripe Etension 实施到我的应用中。

此扩展程序的文档尚未更新以支持 Firebase v9。我已在 Twitter 上确认文档将更新,但目前没有 ETA :)

这是他们在以前的 Firebase 版本中的做法:

const docRef = await db
  .collection('customers')
  .doc(currentUser.uid)
  .collection('checkout_sessions')
  .add(
    price: 'price_1GqIC8HYgolSBA35zoTTN2Zl',
    success_url: window.location.origin,
    cancel_url: window.location.origin,
  );
// Wait for the CheckoutSession to get attached by the extension
docRef.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);
  
);

所以我正在尝试这样做,但使用 v9 中的新内容,一切都不同了。我在网上搜索过,我能找到的唯一解决方案是关于以前的 Firebase 版本。

这是我第一次使用 Firebase,所以也没有用。

有人知道如何在 Firebase JS SDK V9 中执行上述代码 sn-p 吗?

谢谢!

【问题讨论】:

看起来 Stripe 团队和 Firebase 团队正在努力更新这些代码示例。等待他们是最好的。同时,试试 Web SDK (github.com/stripe/stripe-firebase-extensions/tree/next/…) 怎么样?它应该不受 Firebase 版本的影响 【参考方案1】:

您会在下面找到您的代码的 V9 版本。在 JS SDK 文档中有两个选项卡,一个用于 V9,一个用于 V8,因此从一个版本转换到另一个版本并不难。 Example for the onSnapshot() method.

import  collection, addDoc, onSnapshot  from "firebase/firestore"; 

const docRef = await addDoc(collection(db, `customers/$currentUser.uid/checkout_sessions`), 
          price: 'price_1GqIC8HYgolSBA35zoTTN2Zl',
          success_url: window.location.origin,
          cancel_url: window.location.origin,
        );

onSnapshot(docRef, (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);
        
)

【讨论】:

以上是关于使用 Firebase JS SDK 版本 9 实施 Stripe 订阅的主要内容,如果未能解决你的问题,请参考以下文章

如何将 firebase 的 firestore/admin sdk 与 next.js 一起使用

一段时间后,新的 Firebase 9 Android sdk 给出“无效的 Idp 响应”

无法使用 React Native Expo 导入 Firebase JS SDK

Firebase Cordova vs Firebase JS SDK?

使用 node.js admin sdk 创建令牌时的 Firebase REST 身份验证

专业实训9.1