Bubble × Stripe Connect で作る!予約決済プラットフォームの作り方【第2回】Express アカウントとオンボーディング

Bubble × Stripe Connect で作る!予約決済プラットフォームの作り方

第2回:Stripe Connect 設計 – Express アカウントとオンボーディング


前回のおさらい

第1回では、プラットフォーム決済の概要を解説しました。

  • なぜ Stripe Connect が必要か
  • 3つのアカウントタイプ(Standard / Express / Custom)
  • お金の流れの設計

今回は、Express アカウント の設計と、店舗登録(オンボーディング)の実装を解説します。


Express アカウントとは

Express は、Stripe Connect の中で最もバランスの取れたアカウントタイプです。

特徴

項目 Express
店舗の負担 軽い(数分で登録完了)
本人確認 Stripe が代行
銀行口座登録 Stripe の画面で完結
ダッシュボード Stripe Express ダッシュボード
出金 店舗が自分で操作可能

店舗側の体験

1. プラットフォームで「売上を受け取る」ボタンをクリック
2. Stripe の登録画面に遷移
3. メールアドレス、電話番号、本人確認書類を入力
4. 銀行口座を登録
5. 完了 → プラットフォームに戻る

5分程度で完了します。


オンボーディングの流れ

「オンボーディング」とは、店舗を Stripe Connect に登録するプロセスです。

全体像

[店舗管理画面]
    │
    ↓
「Stripe連携」ボタンをクリック
    │
    ↓
[Bubble → Stripe API]
Account Links を作成
    │
    ↓
[Stripe の登録画面]
店舗が情報を入力
    │
    ↓
[登録完了]
プラットフォームにリダイレクト
    │
    ↓
[Bubble]
stripe_account_id を保存

Stripe ダッシュボードでの準備

1. Connect の有効化

Stripe ダッシュボード → Connect → 「始める」

2. ブランディング設定

Connect → 設定 → ブランディング

項目 設定内容
ビジネス名 プラットフォーム名
アイコン ロゴ画像
ブランドカラー サイトのメインカラー

これを設定すると、店舗がオンボーディング時に見る画面にロゴが表示されます。

信頼感が全然違います。

3. 必要な情報の設定

Connect → 設定 → Express

ここで、店舗から収集する情報を選択できます。

最低限必要なのは:

  • メールアドレス
  • 電話番号
  • 本人確認書類
  • 銀行口座

Bubble での実装

必要なもの

1. Stripe のシークレットキー(sk_test_xxx または sk_live_xxx)

2. 店舗テーブルstripe_account_id フィールド

ステップ1:Connected Account の作成

まず、Stripe に「この店舗用のアカウント」を作成します。

API呼び出し(Bubble の API Connector):

Method: POST
URL: https://api.stripe.com/v1/accounts
Headers:
  Authorization: Bearer sk_test_xxx
  Content-Type: application/x-www-form-urlencoded
Body:
  type=express
  country=JP
  email={{店舗のメールアドレス}}
  capabilities[card_payments][requested]=true
  capabilities[transfers][requested]=true

レスポンス:

{
  "id": "acct_1ABC123xxx",
  "type": "express",
  ...
}

この id(acct_xxx)が、店舗の Stripe アカウントIDです。

ステップ2:Account Link の作成

次に、店舗を登録画面に誘導するURLを作成します。

API呼び出し:

Method: POST
URL: https://api.stripe.com/v1/account_links
Headers:
  Authorization: Bearer sk_test_xxx
  Content-Type: application/x-www-form-urlencoded
Body:
  account={{さっき作成した acct_xxx}}
  refresh_url={{登録中断時の戻り先URL}}
  return_url={{登録完了時の戻り先URL}}
  type=account_onboarding

レスポンス:

{
  "url": "https://connect.stripe.com/express/onboarding/xxx...",
  "expires_at": 1234567890
}

この url に店舗をリダイレクトします。

ステップ3:リダイレクト

Bubble のワークフローで:

[ボタンクリック]
    │
    ↓
[API Call: Create Account]
    │
    ↓
[店舗の stripe_account_id を保存]
    │
    ↓
[API Call: Create Account Link]
    │
    ↓
[Open external website: 返ってきたURL]

登録完了後の処理

店舗が登録を完了すると、return_url に戻ってきます。

やるべきこと

1. 登録状況の確認

店舗が本当に登録を完了したか確認します。

Method: GET
URL: https://api.stripe.com/v1/accounts/{{acct_xxx}}
Headers:
  Authorization: Bearer sk_test_xxx

レスポンスの charges_enabledpayouts_enabledtrue なら完了。

2. ステータスの更新

Bubble のデータベースで、店舗の「Stripe連携済み」フラグを更新。


よくあるハマりポイント

1. Account Link の有効期限

Account Link は 数分で期限切れ になります。

店舗が「後でやろう」と思って放置すると、リンクが無効に。

→ 再度 Account Link を作成する仕組みが必要。

対策:

[Stripe連携ボタン]
    │
    ├─→ stripe_account_id がない → Account 作成から
    │
    └─→ stripe_account_id がある → Account Link だけ作成

2. 本人確認が完了していない

店舗が途中で離脱すると、アカウントは作成されているが、本人確認が未完了の状態に。

対策:

charges_enabled をチェックして、未完了なら「登録を続ける」ボタンを表示。

3. テスト環境と本番環境

テスト環境で作成した Connected Account は、本番環境では使えません。

本番移行時は、店舗に再度オンボーディングしてもらう必要があります。


実装のコツ

1. stripe_account_id は必ず保存

この ID がないと、決済時に「どの店舗に送金するか」が分かりません。

最重要データです。

2. 状態を可視化

店舗管理画面に、現在の状態を表示:

[Stripe連携状況]
・未連携 → 「連携する」ボタン
・登録中 → 「登録を続ける」ボタン
・連携済み → 「✓ 売上を受け取れます」

3. Webhook も設定(次回以降で詳しく)

account.updated イベントを受け取ると、店舗の状態変化を自動で検知できます。


テスト方法

テスト用の店舗アカウント作成

1. Stripe テストモードで Account を作成

2. Account Link でオンボーディング画面へ

3. テスト用の情報を入力

テスト用本人確認書類:

Stripe のテストモードでは、「000000」などのダミー番号が使えます。

テスト用銀行口座:

銀行コード: 0000
支店コード: 000
口座番号: 0000000

次回予告

第3回では、予約決済の実装 を解説します。

  • Destination Charges とは
  • application_fee_amount(手数料)の設定
  • 決済金額の計算ロジック

お楽しみに!


このシリーズの目次

タイトル 内容
1 イントロ プラットフォーム決済の設計
2 Stripe Connect設計 ← 今ここ
3 予約決済の実装 Destination Charges、手数料計算
4 クーポンの罠 プロモコードが使えない問題と回避策
5 サブスク課金 有料掲載・広告プランの実装
6 Webhook設計 決済完了の検知、ステータス更新
7 本番デプロイ テスト→本番の切り替え、審査対策

いいね・フォローしていただけると励みになります!


実装のご相談

予約システム・サブスク決済の導入でお困りの方へ。

・Stripe / Stripe Connect の設計・実装

・Bubble / Make.com でのノーコード開発

・テスト環境→本番デプロイまで一貫対応

初期設定から運用まで、初心者の方にも丁寧にサポートします。

👉 ココナラで相談する

この技術、気になりませんか?

このページも含め、サイト全体がWordPressで作られています。
同じような技術で、あなたのビジネスも強化しませんか?

お気軽にご相談ください

29年の判断 + AI で、成果を再現しませんか?

(マーケティング × 技術) + AI。伝言ゲームゼロで、設計から実装まで。