はじめに
こんにちは。サイオステクノロジーの佐藤隆太郎です。
今回から、Stripe Connectについてのブログを書いていきます。Connectは、PaymentsやBillingなどとは異なり、マーケットプレイスやSaaSプラットフォームのための製品です。公式のドキュメントだけでも十分わかりやすいのですが、初めて触った際は細かいところの使い方などで戸惑ったところがありましたので、手順を中心にConnectでどのようなことができるのかを記載します。
なお、本記事は2023年12月に確認した内容で、APIのバージョンは2023-10-16になります。APIやダッシュボードが変更される可能性があることをご了承ください。また、記載している内容はテスト環境でのみ確認したものになります。
プラットフォームの設定
はじめてConnectを使用するアカウントは、Connectを使えるようしておきます。
手順:ダッシュボードのConnectのページ→「Connectの使用を開始する」のボタンをクリック
図1 ダッシュボード上のConnectのページ
ブランドのカスタマイズも事前に設定しておく必要があります。
手順:ダッシュボードの右上の歯車マーク→ 設定 → Connectの設定 → ブランディングの「ビジネス名」「デザインアイコン」「ブランドカラー」を設定します。
※テスト環境がONになっていると、ブランディングの変更を行う上記の項目が表示されませんでした。設定を行うときのみ、一時的にテスト環境をOFFにする必要があるようです。
図2 ブランディングの設定
ここで設定した内容は、後ほど扱うアカウント登録などのStripeがホストする画面で表示されます。今回はビジネス名を「ブログ用プラットフォーム」と設定してみました。
連結アカウントの作成
Connectを利用することで、販売者という登場人物を増やすことができます。販売者は連結アカウント(子アカウント)と呼ばれるアカウントで管理され、プラットフォームに紐づきます。
連結アカウントを作成するには、アカウント作成API:Create Accountを使用します。パラメータとして、type
を指定する必要があります。今回は、standard
を指定します。
例えば、Node.jsで実装すると、以下のようになります。
const account = await stripe account create({
type: 'standard'
});
実行すると、account
にはこのような値が返ってきます。
{
"id": "acct_xxxxx",
"object": "account",
(省略)
"type": "standard"
}
ダッシュボードをみてみると、連結アカウントが作成されていることがわかります。
図3 作成されたStandardタイプの連結アカウント(ステータス:制限あり)
ステータスは制限あり
と表示されており、この状態では支払いの作成や入金が無効となっています。これらは、連結アカウントオブジェクトのcharges_enabled
(支払いの作成が可能かどうか)、payouts_enabled
(入金の受け取りが可能かどうか)属性からも確認できます。現在の値はfalse
となっているはずです。
有効にするには、本人確認が必要です。Stripeは、連結アカウントの本人確認をスムーズに行うツールを提供しています。アカウントリンク作成API:Account Linksを使用して、Stripeがホストする連結アカウントの本人確認を収集するページのリンクを作成します。
Node.jsで実装すると、以下のようになります。
const accountLink = await stripe.accountLinks.create({
account: 'acct_xxxxx',
refresh_url: 'https://example.com/reauth',
return_url: 'https://example.com/return',
type: 'account_onboarding'
});
上記の実装では、4つのパラメーターを渡しています。
account
- 連結アカウントのidです
- アカウント作成APIで先ほど作成した連結アカウントのidを指定します
refresh_url
- アカウント登録フローが正常に終了したときにリダイレクトするURLです
- 登録フローで必要な情報をすべて入力しなくても正常に終了すれば、このURLに遷移します
- アカウント登録フローが正常に終了したときにリダイレクトするURLです
return_url
- リンク切れやブラウザーで戻るや進むなどの操作などをしたときにリダイレクトされるURLです
type
- アカウントリンクの種類です
- オンボーディングと更新の2つから選べます
実行すると、accountLink
にはこのような値が返ってきます。
{
"object": "account_link",
"created": 1701837306,
"expires_at": 1701837606,
"url": "https://connect.stripe.com/setup/s/acct_xxxxx"
}
url
が指す値をブラウザで開くと、アカウント登録画面にアクセスできます。
ここで、Standardタイプの連結アカウントについて説明します。公式ドキュメントを読むと、主に以下のような特徴があります。
- Standardタイプは、通常のStripeアカウントです
- プラットフォームに連結する(紐づける)アカウントは、既に存在するアカウントを利用することも、新たに連結アカウントを作成することもできます
- 通常のStripeアカウントですので、連結アカウントのユーザーはフル機能のStripeダッシュボードが利用できます
- アカウント登録や本人確認情報の収集は、Stripeが提供する登録画面を利用します
- そのため、組み込みの負荷は非常に低いです
- 組み込みの方法としては、今回記載しているAPIのほかに、OAuthも可能のようです
今回は、アカウント登録画面で新たな連結アカウントを作成してみます。本記事では、プラットフォームと同じStripeアカウントに連結アカウントを作成します。
まず、Stripeアカウントのメールアドレスとパスワードを入力しログインします。
図4 アカウント登録画面
次に、「新しいビジネスを作成」を選択して「続ける」ボタンをクリックします。作成する連結アカウントのビジネスタイプを求められますので、ビジネスの所在地は「日本」、事業形態は「法人」としてみました。
続いて、ビジネス詳細や個人情報の確認が必要なので、ダミーの値を入力していき、アカウント登録フローを進めていきます。今回、法人名はstandard account for blog
と設定しました。なお、銀行口座はテスト用の口座が用意されています。「テストアカウントを使用する」というボタンがあるのでそれをクリックし、テスト用口座を設定します。
その後、顧客向けの表示情報などが求められるので、引き続き必要な情報を入力します。今回、店舗名はstandard tenant
に設定しました。項目を全て入力し、「同意して送信する」のボタンをクリックすると、refresh_url
で指定したURLにリダイレクトすると思います。これでアカウント登録フローは完了です。
ダッシュボードをみてみると、ステータスは完了
になっており、アカウント名は設定した法人名に変更されていることが確認できます。
図5 作成されたStandardタイプの連結アカウント(ステータス:完了)
今回のStandardタイプの連結アカウントの作成は、プラットフォームと同じStripeアカウントで行いましたので、ダッシュボードの左上からアカウントを切り替えることができます。作成した連結アカウントのアカウント名は、以下の画像のように、アカウント登録フローで入力したビジネスのウェブサイトが設定されるようです。
図6 連結アカウントへの切り替え
連結アカウントのダッシュボードは以下の画面のようになっています。Standardタイプの連結アカウントは、通常のStripeアカウントと同様のダッシュボードを利用することができます。
図7 連結アカウントのダッシュボード
ダッシュボードの左下に連結されているプラットフォームのビジネス名が表示されており、連結アカウントのダッシュボードであることがわかるようになっています。
まとめ
本記事では、Standardタイプの連結アカウントを作成しました。
Standardタイプは、Stripeがホストするアカウント登録画面を利用することで簡単に本人確認ができたり、通常のStripeアカウントと同様にダッシュボードを利用することができました。
次回は、作成した連結アカウントを使って、Standardの支払いタイプであるダイレクト支払いを確認したいと思います。
参考
https://stripe.com/docs/connect/accounts#choosing-approach
https://stripe.com/docs/connect/standard-accounts
https://support.stripe.com/questions/standard-accounts-with-platform-controls