工程開發
integrating-stripe-webhooks avatar

integrating-stripe-webhooks

解決 Stripe webhook「原始主體」與簽名驗證錯誤,提供 Fastify、Express 與 FastAPI 的特定框架實作,並修復常見的 TypeScript 訂閱資料映射問題。

簡介

此技能旨在協助處理 Stripe webhook 整合困難的開發者,特別是需要處理原始請求主體 (raw request body) 的情境。由於許多現代 Web 框架(如 Fastify、Express 與 FastAPI)預設會自動解析 JSON 主體,這通常會導致 Stripe 的簽名驗證失敗,進而觸發「Raw body not available」或 400 簽名驗證錯誤。此技能提供精確的框架專屬程式碼模式,確保在中間件干預前存取原始緩衝區,從而確保與 Stripe API 的安全通訊。

除了主體解析外,本技能也解決了常見的 TypeScript 型別不匹配問題。開發者在嘗試直接存取訂閱物件上的 'current_period_start' 等屬性時常會遇到錯誤,因為這些欄位其實位於訂閱項目資料結構的深處。透過遵循此文件中的模式,開發者可以有效避免這些執行時期錯誤並成功處理複雜的 Stripe 事件。

  • 提供在 Fastify、Express 與 FastAPI 中配置原始主體解析器的樣板模式,確保 constructEvent() 驗證成功。

  • 提供針對路由註冊不當導致 API 前綴失效而引發 404 錯誤的詳細除錯策略。

  • 提供存取訂閱期間日期的穩健方法,包含當根訂閱物件缺少特定欄位時的後備邏輯。

  • 包含針對結帳 URL 中的動態參數進行 URL 編碼的技巧,以防止 URI 格式驗證失敗。

  • 請務必在任何 JSON 解析中間件之前配置原始主體解析器。

  • 若遇到關於訂閱期間的 TypeError,請檢查 subscription.items.data[0] 而非根目錄。

  • 確保 STRIPE_WEBHOOK_SECRET 環境變數已正確載入並用於每次請求驗證。

  • 使用提供的實作檢查清單以確保全面處理 webhook 事件,包含及時返回 200 回應以防止事件重試。

  • 請注意,此技能僅限於後端 webhook 處理;前端 Stripe Elements 或一般的結帳會話管理不在本技能範圍內。

倉庫統計

Star 數
106
Fork 數
12
Open Issue 數
4
主要語言
TypeScript
預設分支
main
同步狀態
閒置
最近同步時間
2026年4月30日 上午09:28
在 GitHub 查看