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

Implement Stripe subscription with Firebase JS SDK version 9

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

此扩展的文档尚未更新以支持 Firebase v9。我已经在 Twitter 上确认文档将会更新,但目前没有预计到达时间:)

这是他们在以前的 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 中执行上述代码片段吗?

谢谢!

您会在下方找到代码的 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);
        }
})