串接 Stripe 訂閱制與上架 Web Store

開發完一款好用的微型 SaaS 後,最重要的一步就是「變現」與「發布」。 Chrome Extension 的付費模式與一般網站略有不同,因為我們沒有自己的伺服器來處理複雜的帳號登入系統。這堂課將教你使用最聰明、最輕量的方式:結合 Stripe Payment Links (付款連結)Supabase 來完成訂閱制的會員驗證。

最後,我們將走過 Chrome Web Store 的上架流程,讓全世界幾十億的 Chrome 使用者都能找到你的產品!

1. 輕量級的變現架構設計

我們不需要從頭手刻一個購物車或會員中心,我們將採用以下架構:

  1. 免費版 (Free Tier):套件安裝後即可使用基礎功能。
  2. 升級按鈕 (Upgrade UI):在 Popup 中放置一個「升級為 Pro」的按鈕,點擊後跳轉到我們事先建立好的 Stripe 付款連結。
  3. Stripe Checkout:使用者在 Stripe 頁面輸入信用卡,並要求他們提供一個 Email 帳號。
  4. 驗證機制 (License Key / Email):付款完成後,Stripe 透過 Webhook 通知我們的後端 (例如 Supabase Edge Functions),將該使用者的 Email 標記為 is_pro: true
  5. 套件端驗證:使用者在 Options 頁面輸入自己的 Email(或是由我們寄送一組 License Key 給他輸入)。套件的 Service Worker 呼叫我們的 API 驗證該 Email 是否為 Pro,如果是,則將權限寫入 chrome.storage.local,解鎖進階功能!

2. 實作 Stripe 付款跳轉

要實作這個流程,你不需要在套件裡面寫任何複雜的金流程式碼。

  1. 登入 Stripe 後台,建立一個「產品 (Product)」,設定為「循環訂閱 (Recurring)」。
  2. 為該產品建立一條 Payment Link (付款連結)
  3. 在你的 popup.js 或是 options.js 中綁定升級按鈕:
// popup.js
const upgradeBtn = document.getElementById('upgrade-btn');

upgradeBtn.addEventListener('click', () => {
  const stripePaymentUrl = 'https://buy.stripe.com/test_abcdefg123456';
  
  // 使用 chrome.tabs.create 在新分頁打開付款連結
  chrome.tabs.create({ url: stripePaymentUrl });
});

3. 實作 License 驗證邏輯

當使用者付完錢並取得授權信箱 / 金鑰後,我們在 Options 頁面提供一個輸入框讓他們驗證身份。

// options.js
const verifyBtn = document.getElementById('verify-btn');
const emailInput = document.getElementById('email-input');

verifyBtn.addEventListener('click', async () => {
  const userEmail = emailInput.value;
  verifyBtn.innerText = '驗證中...';

  try {
    // 呼叫你的後端 API 檢查該信箱是否有付費
    const response = await fetch(`https://your-api.com/verify?email=${userEmail}`);
    const result = await response.json();

    if (result.isPro) {
      // 驗證成功!將 Pro 狀態寫入 storage
      await chrome.storage.local.set({ isProUser: true, userEmail: userEmail });
      alert('恭喜!Pro 版功能已解鎖。');
      
      // 通知其他元件 (如 Content Script) 更新畫面
      // ...
    } else {
      alert('找不到該信箱的付費紀錄。');
    }
  } catch (error) {
    alert('驗證發生錯誤,請稍後再試。');
  } finally {
    verifyBtn.innerText = '驗證身分';
  }
});

在你的 Content Scripts 或是 Background 腳本中,只要把進階功能用一個簡單的 if 包起來即可:

// content.js 中攔截進階功能
chrome.storage.local.get(['isProUser'], (result) => {
  if (result.isProUser) {
    // 執行 Pro 版專屬邏輯:例如無限次使用 AI 潤飾
    executePremiumFeature();
  } else {
    // 彈出提示,引導購買
    showUpgradePrompt();
  }
});

這就是微型 SaaS 最核心的變現護城河!

4. 上架 Chrome Web Store 實戰

產品做好了,接下來就是要發布到全世界!

步驟一:打包專案

將你專案中除了 node_modules 以外的所有必要檔案(manifest.json, HTML, JS, CSS, icons),打包成一個單一的 .zip 壓縮檔。

步驟二:註冊開發者帳號

前往 Chrome Developer Dashboard。你需要支付一次性 $5 美金的註冊費。這筆費用是用來防範惡意開發者的洗版,付一次就能終身使用。

步驟三:填寫商店資訊

點擊「New Item (新增項目)」並上傳你的 ZIP 檔。接下來你需要準備大量的行銷素材:

  • 套件名稱與簡介:這裡非常注重 ASO (App Store Optimization)。請把重要的關鍵字 (如 AI, ChatGPT, Productivity) 寫進標題和簡介的前幾行。
  • Store Icon:128x128 的高畫質圖示。
  • Promotional Image:440x280 的行銷橫幅圖片,這會出現在商店推薦版面。
  • Screenshots (螢幕截圖):至少需要準備 1-5 張清楚展示功能介面的截圖 (尺寸限制為 1280x800)。

步驟四:填寫隱私與權限聲明 (最重要!)

Google 對於使用者隱私把關極嚴。在 "Privacy" 頁籤中:

  • 你必須提供一份 Privacy Policy (隱私權政策) 的網頁連結。你可以用 Notion 或 GitHub Pages 簡單放一份英文版的聲明即可。
  • Justification (權限正當性):如果你的 Manifest 中申請了 activeTab 或是 storage 權限,你必須在這裡用英文解釋「為什麼你需要這個權限?」。如果你亂寫或不寫,審核有 100% 的機率會被退回! (例:I need the "storage" permission to save user preferences such as theme colors and license keys locally.)

步驟五:送出審核 (Submit for Review)

一切就緒後,點擊送出審核。

在 Manifest V3 的時代,通常第一次上架的審核時間會比較久(約 2 到 7 天不等),之後的改版更新通常幾個小時內就會通過。這段期間,你可以先建立一個登陸頁面 (Landing Page) 來收集早鳥名單。

恭喜你!走完這五個章節,你已經從零具備了獨立開發、串接金流、到發布微型 SaaS 的完整能力。這就是打造個人數位資產最快的一條捷徑!

解鎖完整教學內容

本章為付費內容。加入專案即可解鎖超過 5000 字的深度解析,包含 10 個以上神級 Prompt 與真實 Source Code 範例!