Skip to content

建立 2026-09-14 更新 2026-09-14

API 物件

寫 Python 時你一直在建立與讀取這些物件。名字記熟,文件就好查。

商品目錄

  • Product:賣什麼,例如「Python 入門課」。
  • Price:賣多少、什麼幣、是否每月扣款。同一個 Product 可以有 TWD 與 USD 兩種 Price。

Checkout 的 line_items 通常帶 price(Dashboard 上的 price_...)或當場用 price_data 組出來。

顧客與付款方式

  • Customer:你的買家在 Stripe 的檔案,訂閱與保存卡片會用到。
  • PaymentMethod:一張卡或一種錢包,由 Stripe.js 建立,敏感資料不會進你的資料庫。

一次性賣東西不一定要先建 Customer。需要「記住這個人、之後再扣款」時再建立。

這一筆交易

  • Checkout Session:一次結帳過程。裡面有商品列、成功/取消網址,完成後會帶出 PaymentIntent 或 Subscription。
  • PaymentIntent:一筆付款的生命週期:建立 → 收集付款方式 → 可能要 3DS → succeeded 或失敗。金額在建立時就鎖定。
  • Charge(較舊):實際請款紀錄。新程式請看 PaymentIntent 與其下的 Charge,不要再對 /v1/charges 寫新流程。

本 repo 的 server.py 根路徑呼叫 stripe.Charge.list,只是示範讀取資料,不是現在推薦的收款寫法。收款請用 Checkout 或 PaymentIntent。

履約相關

  • Event:Stripe 推到 webhook 的訊息,例如 checkout.session.completed
  • Refund:退款。
  • Invoice / Subscription:帳單與訂閱,見 訂閱

狀態只信 Stripe

訂單在你資料庫裡可以有 pending / paid。是否已付款,以 Stripe 物件狀態為準:

  • Checkout Session:payment_status == "paid"
  • PaymentIntent:status == "succeeded"

成功頁的 query string 只能拿來顯示「謝謝」,不能當出貨依據。