カテゴリー:
documentation
閲覧数:314 配信日:2019-04-05 08:23
docs
Connect > ACCOUNT TYPES > Standard
・Using Connect with Standard Accounts
・StandardアカウントでConnectを使用する
OAuth接続フロー
Standardアカウント
・次のOAuth接続フローを使用してプラットフォームに接続する
1.あなたのサイトのページから開始
・ユーザはStripeへ遷移するリンクをクリックする
・あなたのプラットフォームのclient_idを渡す
2.StripeのWebサイト
・ユーザーは自分のStripeアカウントに接続するか、新しいアカウントを作成して接続するように求められる
3.あなたのサイトへリダイレクト
・その後、ユーザーはあなたのサイトへリダイレクトされ 、「認証コード」または「ユーザーが接続しないことを選択した場合はエラー」を渡す
4.OAuthトークンエンドポイント
・その後、あなたのサイトはOAuthトークンエンドポイントにユーザーのアカウントIDを取得してあなたのサイトに保存するよう要求する
※ステップ4を完了した後、API 認証要求は接続されたアカウントに代わってそれらの認証資格情報を使用して行うことができる
ステップ1: OAuthリンクを作成する
システムを開始するには、 プラットフォーム設定から2つの情報が必要だ
Stripeによって生成されたあなたのclient_id
・あなたのプラットフォームのためのユニークな識別子
※Stripeはテストを容易にするために開発client_idも提供する
あなたのredirect_uri
・あなたが設定した、アカウントに接続した後(または失敗した場合)にユーザーがリダイレクトされるウェブサイト上のページ
これら2つの情報を手に入れて、OAuthリンクを作成する準備が整った
・ユーザーを当社のauthorize_urlエンドポイントに送信するConnectボタンを表示することをお勧めする
https://connect.stripe.com/oauth/authorize?response_type=code&client_id=ca_xxxx&scope=read_write
Stripeエンドポイントは少なくとも次の3つのパラメーターを受け取るはずだ
・response_type 、値はcode
・あなたのclient_id
・read_writeの値を持つscope。scopeパラメータは、接続されたアカウントに代わってあなたのプラットフォームが何をできるかを決定する。read_onlyがデフォルトだ
CSRF攻撃を防ぐには
・値として一意のトークンを渡してstateパラメータを追加する
・ユーザーをあなたのサイトへリダイレクトするときにあなたから提供されたstateを含める
接続を開始するために上記のURLをユーザーに提示する方法は次のとおりだ
・Connectデモ0.ボタン画像リンク
ステップ2:ユーザーは自分のアカウントを作成または接続する
販売者(プラットフォーム参加希望者)が、あなたのサイトへ設置した「アカウント連結申請リンク」をクリックする
・Stripeアカウントを作成するプロセスが承認フローに追加されている
・販売者(プラットフォーム参加希望者)がすでにStripeアカウントを持っているかどうかを心配する必要はない
販売者(プラットフォーム参加希望者)がすでにStripeアカウントを持っている場合は、サインインをクリック
Stripe アカウントをすでにお持ちですか? サインイン
・下記URLへ遷移https://connect.stripe.com/oauth/authorize?response_type=code&client_id=ca_xxxx&scope=read_write
販売者(プラットフォーム参加希望者)が、アカウント連結申請
・販売者(プラットフォーム参加希望者)は、あなたのプラットフォームへの接続を許可または拒否するように促される
・販売者(プラットフォーム参加希望者)は、画面に提示された必要項目を入力する
PHPデモ から、Stripe で支払いを受け入れるよう依頼が来ています。
いくつかの質問に回答するだけで、すぐにご利用になれます。 PHPデモ は お客様のデータにアクセスし、支払いと顧客の作成を代行できます。
コンプライアンス関連の質問
未提出
日本における改正割販法の施行に伴い、Stripeを通したオンライン決済の導入状況における質問にお答えください。
//中略
[このアカウントへのアクセスを許可する] [キャンセル]
直ちにPHPデモ (php-demo.w4c.work) に戻されます。
アカウントを作成すると、 利用規約と、 連結されたアカウントの利用規約に同意し、提供した情報が完全かつ正確であることを証明したものと見なされます。
いくつかの質問に回答するだけで、すぐにご利用になれます。 PHPデモ は お客様のデータにアクセスし、支払いと顧客の作成を代行できます。
コンプライアンス関連の質問
未提出
日本における改正割販法の施行に伴い、Stripeを通したオンライン決済の導入状況における質問にお答えください。
//中略
[このアカウントへのアクセスを許可する] [キャンセル]
直ちにPHPデモ (php-demo.w4c.work) に戻されます。
アカウントを作成すると、 利用規約と、 連結されたアカウントの利用規約に同意し、提供した情報が完全かつ正確であることを証明したものと見なされます。
・販売者(プラットフォーム参加希望者)が、「Stripe アカウントを連結」ボタンをクリック
ステップ3:ユーザーはあなたのサイトへリダイレクトされる
ユーザーが自分の既存または新規に作成したアカウントをプラットフォームへ接続すると
・彼らはあなたのサイト(あなたのプラットフォームのredirect_uriとして設定されたURL)へリダイレクトされる
正常に接続するために、URLを渡す
・付与されたscope
・state値(提供されている場合)
・認証コード
https://[提供者が予め設定したリダイレクトURL]?scope=read_write&code={AUTHORIZATION_CODE}
承認がユーザーによって拒否された場合でも、ユーザーはサイトにリダイレクトされますが、URLに承認コードの代わりにエラーが含まれている
https://[提供者が予め設定したリダイレクトURL]?error=access_denied&error_description=The%20user%20denied%20your%20request
ステップ4:Stripeからユーザーの認証情報を取得する
エラーが発生しなかったと仮定すると
・最後のステップは、提供されたcodeを使用してaccess_token_urlエンドポイントにPOSTリクエストを送信し、ユーザーのStripe認証情報を取得することだ
$ curl https://connect.stripe.com/oauth/token \
-d client_secret=sk_test_xxxx \
-d code="{AUTHORIZATION_CODE}" \
-d grant_type=authorization_code
-d client_secret=sk_test_xxxx \
-d code="{AUTHORIZATION_CODE}" \
-d grant_type=authorization_code
ライブまたはテストアクセストークンを返却するかどうかに応じて、ライブまたはテスト用の秘密のAPIキーを使用してリクエストを行う
・Stripeはユーザーの認証資格情報を含む応答を返す
{
"token_type": "bearer",
"stripe_publishable_key": "{PUBLISHABLE_KEY}",
"scope": "read_write",
"livemode": false,
"stripe_user_id": "{ACCOUNT_ID}",
"refresh_token": "{REFRESH_TOKEN}",
"access_token": "{ACCESS_TOKEN}"
}
"token_type": "bearer",
"stripe_publishable_key": "{PUBLISHABLE_KEY}",
"scope": "read_write",
"livemode": false,
"stripe_user_id": "{ACCOUNT_ID}",
"refresh_token": "{REFRESH_TOKEN}",
"access_token": "{ACCESS_TOKEN}"
}
問題があった場合は、代わりにエラーを返す
{
"error": "invalid_grant",
"error_description": "Authorization code does not exist: {AUTHORIZATION_CODE}"
}
"error": "invalid_grant",
"error_description": "Authorization code does not exist: {AUTHORIZATION_CODE}"
}
これで終わりだ!
・これで、ユーザーはプラットフォームに接続された
データベースにstripe_user_idを格納する
・これは新しいアカウントのStripeアカウントIDだ
・この値を使用して、 Stripe-Accountヘッダーのリクエストに渡すことで、接続アカウントとして認証する。(ここで返された秘密鍵で認証することも可能だが、代わりにアカウントIDのみを保管し使用する方が安全だ)
アプリケーションでは、これらの手順を単純化するために専用のOAuthクライアントライブラリを使用することを検討することをお勧めする
・あなたの言語やフレームワークのためのOAuthライブラリを見つけるために、あなたはOAuthウェブサイト上のクライアントライブラリのリストを参照することができる
refresh_tokenを使用して、本番用のclient_id用のテストアクセストークンを生成したり、アクセストークンをロールバックしたりできる
・この最初のPOSTリクエストの後でしか取得できないため、この値も保持する必要がある
受け取ったアカウントIDを保管してくれ
・プラットフォームは、ユーザーに代わってリクエストを実行するためにこの情報を必要とする