決済フロー¶
smooth は Stripe を使ってすべての決済処理を行います。
決済の種類¶
1. 自動決済(Auto Payment)¶
ドライバーが事前に登録したデフォルトカードで、出場時に自動的に請求されます。
sequenceDiagram
participant Device as SmoothBox
participant API as バックエンド
participant Stripe as Stripe
participant App as smooth-mobile
Device->>API: 画像送信(OCR失敗3回連続で出庫確認フロー開始)
API->>API: 出庫確定・料金計算
API->>Stripe: 自動決済実行(デフォルトカード)
Stripe-->>API: Webhook(決済完了)
API->>App: SSE でリアルタイム通知
API->>LINE: LINE プッシュ通知
2. 決済リンク(Payment Link)¶
デフォルトカードが未設定の場合、Stripe ホスト型の決済ページへのリンクを生成します。
カード情報の登録¶
Stripe の SetupIntent を使い、カード情報を直接 Stripe に保存します(smooth のサーバーにはカード番号は保存されません)。
POST /payment-methods → SetupIntent を作成(client_secret を返す)
POST /payment-methods/stripe-callback → SetupIntent を確定(カードを登録)
POST /payment-methods/{id}/set-default → デフォルトカードを設定
駐車場オーナーへの入金(Stripe Connect)¶
smooth は Stripe Connect を使い、駐車場オーナーへ売上を送金します。
| エンドポイント | 説明 |
|---|---|
POST /parking-owner/connect |
Stripe Connect アカウントを作成 |
POST /parking-owner/connect/onboarding |
オンボーディングリンクを取得 |
GET /parking-owner/connect/status |
Connect 状態を確認 |
GET /parking-owner/deposits |
入金履歴 |
Stripe Webhook¶
Stripe からのイベントは POST /payments/webhooks/stripe で受け取ります。
主なイベント:
- payment_intent.succeeded — 決済成功
- payment_intent.payment_failed — 決済失敗
- charge.dispute.created — チャージバック発生