Stripe
大事なこと
アカウントにLive mode || Test modeの状態がある(要するに本番モードとテストモード)
開発時にどうアカウントを使うかは使い手次第。
レートリミットが異なる。
テスト:25rps
本番:100rps
いろんな概念を「オブジェクト」として扱う。プログラムからも、このオブジェクトを操作する。
全てのオブジェクトは固有のIDを持ち、調査やデバッグで使うことができる。
更新可能なオブジェクトにはmetadataを追加できる。metadataは(意図的にしない限り)ユーザーには表示されない。
ex. CustomerにA/Bテストのフラグをつけたり、Refundsに経緯やメモをつけることができる。
決済に関する関する色んなシナリオが確認できるテストデータ(テストカード)がある。
テストカードはテストモードでだけ使える。
ネットワーク障害による重複課金などを回避できる。
指定したイベントの発生でoutgoing Webhookを登録できる。
APIキーはアクセス許可範囲を指定できる。また権限を作成後に更新できる。
分からんこと
Conectedアカウント?
プラットフォームアカウント?
Stripeの商品設計
Subscriptionが有効かどうかを(プラン内容に関わらず)Stripeで検証できると、システムがシンプルにできる
購入商品の組み合わせやアップグレード先など、商品の依存関係を表す制約をつけられる(?)
機能としては提供していない
ダッシュボードを有効に使うためには、無料商品はSubscriptionとして登録しない方がいい
ダッシュボードのノイズになるため
あえて使うとしたら・・・?
クエリ(有料オプション)を使って分析するためにあえて登録する
契約がアクティブかどうかを確認する用途として登録する
概念、オブジェクト
事前に作るもの
製品、商品を表すオブジェクト
デフォルトのPriceと、Taxへの参照を持つ
割引を表すオブジェクト。金額指定 or パーセンテージ。Productの指定、Customerの指定ができる
分からん
契約、購読を表すオブジェクト。
請求を表すオブジェクト
決済前
エンドユーザーを表すオブジェクト
決済手段を表すオブジェクト。カードなど。
Customerに紐づけることができるが、紐付けない1回限りの利用パターンもある。
決済方法を保存しておいて、将来利用するためのオブジェクト
決済を収集するオブジェクト(?)
オプションで決済方法をCustomerに保存できる
決済を実行するオブジェクト
決済後
返金のオブジェクト。Chargesから作られる
取引のオブジェクト。Charges, Refunds, Disputesから作られる。
残高はこれの集合から計算され、残高そのものはDBに保存されていない。
Stripeから外部の銀行口座への入金を表すオブジェクト。
主要オブジェクトの関係
https://gyazo.com/d60aaf29af95f1ff714065c5ebb49224
CustomerとPriceを紐付けた契約をSubscriptionという
Customer、SubscriptionはデフォルトのPaymentMethodを持つことができる
SubscriptionがInvoiceを発生させる
SubscriptionとInvoiceは明細を持ち、Priceを参照している
InvoiceはPaymentIntentを生成する。
PaymentIntentにはPaymentMethodが必要である。
PaymentIntentの結果としてChargeができる。