目次一覧
状態:確認中
閲覧数:1,758
投稿日:2019-04-03
更新日:2019-04-07
Connect Overview / Connectの概要
Building a Store Builder / ストアビルダーを構築する
Connect Account Types / Connectアカウントの種類
Using Connect with Standard Accounts / StandardアカウントでConnectを使用する
Authentication with Connect / Connectによる認証
Creating Charges / 課金を作成する
Creating Direct Charges / 直接課金の作成
Building a Store Builder / ストアビルダーを構築する
Connect Account Types / Connectアカウントの種類
Using Connect with Standard Accounts / StandardアカウントでConnectを使用する
Authentication with Connect / Connectによる認証
Creating Charges / 課金を作成する
Creating Direct Charges / 直接課金の作成
Connect Overview / Connectの概要
docs
Connect > Overview
・Connect Overview
・Connectの概要
入門
以下の手順に従って始めてくれ
・1.Stripe Dashboardで 、[ はじめに ]ボタンをクリックして、アカウントをアクティブにしてプラットフォームを登録するためのプロセスを開始する
・2.サポートするアカウントの種類を決定する
・3.料金をどのように作成するかを決める
※これらの決定をした後、あなたはあなたのシステムを築き始めることができる。 以下のレシピとConnect Quickstartに例がいくつかある
レシピ
オンデマンドアプリケーションの構築
・まず、オンデマンドアプリの作成者であるユーザー(あなた)は、(販売者の立ち位置である)サービスプロバイダーに代わってカスタムアカウントを作成することを理解してくれ
・カスタムアカウントに関する最も重要な考慮事項の1つは、Stripeが契約者(あなたの請負業者)とやり取りすることは決してないため、契約者(あなたの請負業者)に関する必要な情報提供の全責任を負うことになる
・これはあなたが下記をしなければならないことを意味する
・必要なすべての本人確認を行う
ストアビルダーを構築する
・ストアビルダーはさまざまな方法で実装できるが、最も重要な決定は、Standard、Express、またはCustomアカウントを使用するかどうかである
※Express アカウントは、米国内に所在する個人、ビジネス、および非営利団体のみ利用可能である
Building a Store Builder / ストアビルダーを構築する
docs
・Building a Store Builder
・ストアビルダーを構築する
準備をする
あなたがする必要がある最初のこと
・あなたのプラットフォームをStripeへ登録することである
次に、Webサイトに2つのページを作成する
・接続プロセスを開始する開始ページ(つまり、ユーザーがあなたのサイトに接続する場所)
・Stripeアカウントに接続した後にユーザーがリダイレクトされる宛先ページ。あなたのプラットフォームの設定で識別されるredirect_uriの値である
また、あなたが担当していることと、彼らが何をすることが期待されているのかをユーザーに示す必要がある
・コミュニケーションすることは特に重要である
彼らは彼らのStripeアカウントを作成して維持する必要があるだろう
・彼らはチャージバックとすべての顧客サービスの問題を処理する必要があるだろう
・誰にStripe料金を支払う責任があるか
・もしあれば、プラットフォームの課金するもの。この項目は、見過ごされがちな一歩である
・コミュニケーションが不十分な場合、かなり不幸なユーザーを生み出すことに繋がってしまう
アカウントを接続する
OAuth × Standard Stripeアカウント
・このシナリオでは、 OAuthフローを使用してStandard Stripeアカウント(既に存在しているかどうかにかかわらず)に接続する
・このオプションは、Stripeがユーザーエクスペリエンスの大部分を処理するため、設定が簡単である
・あなたのユーザーはStripeにリダイレクトされ、Stripeアカウントを作成または既存のStripeアカウントへ接続するように求められてから、あなたのサイトへ戻る
Connectは、 read_onlyとread_write 2つの異なるスコープの下での接続をサポートする
・接続ユーザーの代わりにリクエストを実行するために、 read_writeスコープをリクエストする
OAuthワークフローの最後に、接続したアカウントの認証資格情報が表示される
{
...
"stripe_publishable_key": "pk_live_xxxx",
"access_token": "sk_live_xxxx",
"stripe_user_id": "acct_xxxx",
...
}
・これはAPIリクエストを行うときにアカウントを識別するために使用されるので、 stripe_user_idを格納する必要がある
・stripe_publishable_keyはトークンを要求するために必要になる(下記参照)。
・繰り返すが、このフローは、ユーザーがすでにStripeアカウントを持っているかどうかに関係なく使用できる。 そうでない場合は、Stripeから作成するように促される(そしてStripeのサービス契約に同意する)
・Stripeアカウントが接続された状態で、あなたは彼らに代わって請求処理を始めることができる
トークンをリクエストする
セキュリティの向上とシステムの容易さの両方を実現するために
・Stripeは、顧客の支払い詳細、特にクレジットカード番号、有効期限、およびCVCがサーバーに触れないように設計されている
・代わりに、 ElementsまたはCheckoutを使用して、顧客の支払いの詳細が、サーバーを完全に迂回して、顧客のブラウザからStripeに直接送信される
・支払い方法が有効であると思われる場合、Stripeはブラウザに代表トークンを返す
・このトークンはあなたのサーバーへ送信され、そこで課金処理に使用される
PCI準拠
・他人のためにeコマースを有効にしていても、あなたのサイトはPCIに準拠し続けるために大金を使う必要はない!
接続アカウントから課金する
接続アカウントを介して料金処理
・このシナリオでは、接続アカウントが料金、払い戻し、およびチャージバック(そして暗黙的には顧客サービスの義務)に対して責任を負うので、接続アカウントを介して料金を処理する
・Connectでは、これは簡単である
・トークンを入手して、接続アカウントとして認証されている間にcreate chargeリクエストを実行する
ターミナル
$ curl https://api.stripe.com/v1/charges \
-u sk_test_xxxx: \
-H "Stripe-Account: acct_xxxx" \
-d amount=1000 \
-d currency=usd \
-d source="{TOKEN}"
接続アカウントはStripe feeを支払う
・支払い自体は接続アカウントの料金として表示され、接続アカウントはStripe feeを支払う
・その後、資金は通常のローリングベースで銀行口座への送金に使用できるようになる
・Standardアカウントでは、接続ユーザーはそこからの銀行口座への振替を制御する(手動の支払い、予定通りの自動支払い、または資金が利用可能になったときの自動支払いなど)
・彼らは自分のダッシュボードにログインして支払いの状況を確認したり、疑問や懸念をStripeに電子メールで送信したりできる
subscriptionsを作成する
subscriptionsサポート
・このEコマースモデルは、subscriptionsをサポートするように拡張することもできる
・そのためには、接続アカウント内でplansを定義する必要がある
・これはあなたができること、またはあなたの接続しているユーザーができることである(彼らがStripeアカウントをコントロールしているので)
・自分で作成したものか、ユーザーが作成したものかに関係なく、gold_monthlyというIDを持つ接続済みアカウントにplanが既に存在するとする
subscriptionは、customerとplanの組み合わせである
・有料subscriptionの場合は、支払い方法も必要である
・これらすべてをまとめると、接続アカウントの公開可能キーを使用してトークンが再び作成される
次に、接続アカウントに請求を作成する代わりに、customerを作成する
・ターミナル
$ curl https://api.stripe.com/v1/customers \
-u sk_test_xxxx: \
-H "Stripe-Account: acct_xxxx" \
-d plan=gold_monthly \
-d source="{TOKEN}"
・customerは、保存されたカードを使用して接続先のアカウントで作成され、 gold_monthlyプランが購読される
subscriptionsを使用している場合は
・請求書が生成されて支払われるとプラットフォームに通知されるように、 Webフックも定義することをお勧めする
サービス料金
すべてが適切に機能していれば
・幸せなユーザーがいることになる
・これは素晴らしいことである
・しかし、おそらくあなたはあなたのサービスを無料で提供していないのだろう!
あなたがあなたのサービスのために課金することができる2つの方法がある
最初のオプションはあなた自身のStripeアカウントを通してあなたのユーザーに課金することである
・顧客が自分のStripeアカウントを接続したら、 支払いの詳細を尋ねてから、Stripeアカウントでそれらのsubscriptionを作成する
・作成した顧客IDを関連するStripe IDと一緒に保存すると、どのユーザーが支払い済みでアクティブであるか、またどのユーザーがそうでないかを簡単に確認できる
・このアプローチは、定額制(例えば、サイトの作成とホスティングに10ドル/月、作成、ホスティング、電子商取引に20ドル/月)に最適だ
別の方法として、 application_fee_amountパラメータを使用して、処理された各請求の一部を受け取ることができる
・ここでは、顧客にはまだ10ドルが課金されており、ユーザーにはまだStripeの料金が支払われているが、さらに$ 2.00のアプリケーション料金も支払われている
・ターミナル
$ curl https://api.stripe.com/v1/charges \
-u sk_test_xxxx: \
-H "Stripe-Account: acct_xxxx" \
-d amount=1000 \
-d currency=usd \
-d source="{TOKEN}" \
-d application_fee_amount=200
・subscriptionsでは、定額の代わりにアプリケーション料金のパーセント(各合計料金のパーセント)を取ることができる
Connect Account Types / Connectアカウントの種類
docs
Connect > ACCOUNT TYPES > Accounts Overview
・Connect Account Types
・Connectアカウントの種類
・Connectで使用できる3種類のStripeアカウントについて詳しく学んでくれ
Stripe Connectを使用するとき
プラットフォームでお金を受け取る各ユーザーのアカウント(接続アカウントと呼ばれる)を作成する必要がある
・これらのアカウントは通常、ユーザーがプラットフォームにサインアップしたときに作成される
・作成するアカウントの種類は、作成するものに影響し、チャージバック、ユーザーサポートなどを担当するユーザーを決定できる
・Connectで使用できるアカウントの種類は3つあり、それぞれ異なる用途に合わせて設計されている
・Standard
・Express … 米国内に所在する個人、ビジネス、および非営利団体のみ利用可能であるため、これ以降は省略している
・Custom
アプローチを選ぶ
オンボーディング(管理画面)フローの構築にそれほど時間をかけたくない場合
・Standardアカウントの方が実装が簡単だ
接続されているユーザーの操作性をより細かく制御する必要がある場合
・カスタムアカウントがニーズに合っている可能性がある
あなたのプラットフォームは複数のアカウントタイプをサポートすることができるが
・それはあなたのシステムを複雑にする
比較一覧表
Connectアカウントの種類 | STANDARD | CUSTOM |
---|---|---|
統合方法 | OAuth統合 | APIのみ |
詐欺および紛争責任 | ユーザー(販売者側) | プラットフォーム |
プラットフォームは支払いのタイミングを指定できるか? | いいえ | はい |
オンボーディング(管理画面) | Stripe | プラットフォーム |
ユーザー(販売者側)はStripe Dashboardにアクセスできるか? | はい、フルStripeダッシュボード | いいえ |
ユーザーサポートはどこから提供されるか? | プラットフォームとStripe | プラットフォーム |
・接続されたアカウントを持つ人(つまり、あなたのプラットフォームを通じて商品またはサービスを提供することでCustomerより支払いを受ける人)を指す
Standardアカウントでは
・destination chargesを使用する場合、プラットフォームは詐欺および紛争の責任を負うが、 direct chargesを使用する場合はユーザー(販売者側)の責任となる
Customアカウント
・使用には追加料金がかかる
・Stripe Q234。Connect カスタムアカウント手数料
Standardアカウント
アカウント所有者(つまりプラットフォームのユーザー)によって直接管理される従来のストライプアカウントだ
・Standardアカウントを持つユーザー(販売者側)は、Stripeと関係があり、 Dashboardにログインでき、自分で請求を処理でき、自分のアカウントをプラットフォームから切断できる
・Stripeアカウントを作成するようにユーザーに促すことも、既存のStripeアカウントを持つユーザーにあなたのプラットフォームへ接続することを許可することもできる
次の場合にStandardアカウントが最適だ
・すばやく始めて、あなたのユーザーの操作性をあまり制御する必要はない
・direct charges を使用したい
・オンラインビジネスの運営に精通しているユーザー、または既にStripeアカウントを持っている可能性のあるユーザーがいる
・Stripeがアカウントの問題についてユーザーとのコミュニケーションを直接処理するようにする(例えば、本人確認のために追加の情報を要求するために)
・Standardアカウントを開始するには、オンボーディングフローの詳細を読んでくれ
Customアカウント
アカウント所有者にはほとんど見えない
・あなた(プラットフォーム)は、Stripeが必要とする情報を収集することを含め、ユーザーとのやり取りすべてに対して責任がある
・プログラムで、支払い銀行やデビットカードのアカウントなど、アカウントのすべての設定を変更することもできる
カスタムアカウント所有者
・Stripe Dashboardにアクセスすることはできず、Stripeは直接彼らに連絡することはない
次の場合は、おそらくカスタムアカウントを使用する必要がある
・ユーザーの操作性を完全に制御したい
・ユーザー情報の収集、ユーザーダッシュボードの作成、およびサポートの処理に必要なインフラストラクチャを構築できる
・ユーザーに直接Stripeに連絡させるのではなく、ユーザーとのすべてのコミュニケーションを処理したい
・カスタムアカウントの作成と管理には、通常、標準アカウントを使用するよりも複雑なシステムが必要なので、 カスタムアカウントの基本から始めて、いくつかのページをトピックにまとめた
Using Connect with Standard Accounts / StandardアカウントでConnectを使用する
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を保管してくれ
・プラットフォームは、ユーザーに代わってリクエストを実行するためにこの情報を必要とする
Authentication with Connect / Connectによる認証
docs
・Authentication with Connect
・Connectによる認証
・Connectの使用時にあなたのユーザーとして認証する方法を学んでくれ
・そうすれば、彼ら(あなたのユーザー)に代わって任意のAPIアクションを実行できる
接続アカウントの代わりにStripe APIを使用するときにリクエストを認証する方法は2つある
Stripe-Accountヘッダーと接続アカウントのIDを使用する
・可能であれば、 Stripe-Accountヘッダー方法を使用する必要がある
・それはより簡単でより安全だ
接続アカウントのAPIキーを使用する
・2番目のアプローチはレガシ互換性のためにサポートされているが、一般的に新しいアプリケーションでは使用すべきではない
・どちらの方法でも、アカウントをプラットフォームに接続するときに、接続したアカウントの情報(IDキーまたはAPIキー)を保存する必要がある
Stripe-Accountヘッダーを介した認証
1つ目の、推奨される認証オプション
・あなたの(プラットフォームアカウントの)秘密鍵を使用し、リクエストが行われている接続アカウントを識別するStripe-Accountヘッダーを渡すことだ
・このcurl リクエストは、接続アカウントの代わりに料金の払い戻しを行う
$ curl https://api.stripe.com/v1/charges/{{CHARGE_ID}}/refunds \
-u {{PLATFORM_SECRET_KEY}}: \
-H "Stripe-Account: {{CONNECTED_STRIPE_ACCOUNT_ID}}" \
-d amount=1000
-u {{PLATFORM_SECRET_KEY}}: \
-H "Stripe-Account: {{CONNECTED_STRIPE_ACCOUNT_ID}}" \
-d amount=1000
・Stripe-Accountヘッダー認証アプローチは、URLにStripeアカウントIDを含むすべてのAPIリクエストに含まれている
$ curl https://api.stripe.com/v1/accounts/{{CONNECTED_STRIPE_ACCOUNT_ID}} \
-u {{PLATFORM_SECRET_KEY}}:
-u {{PLATFORM_SECRET_KEY}}:
・Stripeのライブラリはすべて、リクエストごとにこの認証方式をサポートしている
\Stripe\Stripe::setApiKey("{{PLATFORM_SECRET_KEY}}");
\Stripe\Customer::create(
["email" => "person@example.edu"],
["stripe_account" => "{{CONNECTED_STRIPE_ACCOUNT_ID}}"]
);
// アカウントを取得するには、パラメータとしてIDが必要だ
\Stripe\Account::retrieve("{{CONNECTED_STRIPE_ACCOUNT_ID}}");
APIキーによる認証
2番目の認証オプション
・接続されたアカウントの秘密鍵と公開可能な鍵を使用してAPI呼び出しを行う
・プラットフォームが接続アカウントの秘密鍵を受信する方法は、接続方法によって異なる
Standardアカウントの場合
・OAuthフローによって提供されるaccess_tokenだ
カスタムアカウントの場合
・create account API呼び出しによって返されるkeys[secret]プロパティにある
APIキーを保存する
・Stripeは最初の接続時にのみプラットフォームのアカウントのAPIキーを提供する
・後で接続アカウントのAPIキーを取得することはできない
・そのため、オンボーディングプロセスの一部としてそれらを必ず保存してくれ
このコードは、この2番目の認証方法を使用して上記と同じ返金要求を実行する
$ curl https://api.stripe.com/v1/charges/{{CHARGE_ID}}/refunds \
-u {{CONNECTED_ACCOUNT_SECRET_KEY}}: \
-d amount=1000
-u {{CONNECTED_ACCOUNT_SECRET_KEY}}: \
-d amount=1000
この方法を使用している場合は、APIキーをグローバルに設定するのではなく、リクエストごとに認証を実行することをお勧めする
・Stripeのライブラリはすべて、リクエストごとにこの認証方式をサポートしている
// Not recommended: setting global API key state
\Stripe\Stripe::setApiKey("{{CONNECTED_ACCOUNT_SECRET_KEY}}");
\Stripe\Customer::create(
["email" => "person@example.edu"]
);
// Recommended: sending API key with every request
\Stripe\Customer::create(
["email" => "person@example.edu"],
["api_key" => "{{CONNECTED_ACCOUNT_SECRET_KEY}}"] // account's access token from the Connect flow
);
Creating Charges / 課金を作成する
docs
Connect > PROCESSING PAYMENTS > Creating Charges
・Creating Charges and Taking Fees
・課金を作成する
・Connectが課金したり、そこからプラットフォームの手数料を徴収したり、コネクテッドアカウントへの振替を発行するために提供するオプションについて説明する
Connectを使用すると
課金を作成する機能を含め、接続アカウントの代わりに完全なStripe APIを使用できる
・接続アカウントに代わって課金を作成するには、3つの方法がある
接続アカウントに直接課金を作成する
プラットフォームアカウントで取扱先料金を作成する
プラットフォームアカウントに課金を作成し、接続アカウントに個別に送金する
・これらの箇条書きにリンクされているドキュメントは、各プロセス中にプラットフォーム料金を受け入れる方法を含む、対応するアプローチを詳細に説明している
・但し、以下の情報を使用して、最初にどのアプローチがユースケースに最も適しているかを判断する必要がある
アプローチを選ぶ
多くの要因が「最適な課金方法の選択」に関係してくるので、次の表に最も重要な考慮事項と例を示す
- | いつ使用するか | 例 |
---|---|---|
直接課金 | ・エンドカスタマーは、接続されたアカウントと直接取引する。多くの場合、プラットフォームの存在に気付いていない ・単一の接続アカウントが取引に関与している |
・ShopifyやSquarespaceのようなeコマースプラットフォーム ・Freshbooksのような請求書支払いを可能にする会計プラットフォーム |
取扱料金 | ・エンドカスタマーは、接続先アカウントによって提供される製品またはサービスについてプラットフォームと取引する ・単一の接続アカウントがトランザクションに関与している |
・Lyftのような共有サービス ・Thumbtackのようなサービスプラットフォーム |
別途料金と振込み | ・複数の接続アカウントがトランザクションに関与している、または ・特定の接続アカウントがcharge時に不明である、または ・charge時に振込みはできない |
・複数の企業が販売する商品用の単一のショッピングカートを許可する電子商取引市場 ・Birdのようなスクーター共有プラットフォームで、スクーターに請求する個人を支払うのとは別にスクーターを予約することができる |
直接課金
Standardアカウントを使用する場合は、接続アカウントに直接課金を作成することをお勧めする
・この方法は一部のCustomアカウントにも適している
このアプローチを使用する:
・接続アカウントは、Stripeの料金、返金、およびチャージバックの費用を負担する
・支払い自体は、プラットフォームアカウントではなく、接続アカウントの料金として表示される
・課金は直接接続口座の残高を増やす
・あなたのプラットフォームの残高は申請料によってのみ増加する
取扱料金
カスタムアカウントを使用する場合
・プラットフォームアカウントで取扱料金を作成することをお勧めする
このアプローチを使用する:
・あなたのプラットフォームアカウントは、接続アカウントのためにこれらを処理して、Stripe料金、払い戻し、およびチャージバックの費用に対して責任がある
・支払い自体はプラットフォームアカウントの料金として表示され、続いて接続アカウントへの自動割り当てが行われる。これにより、プラットフォームの残高が減少し、接続アカウントの残高が増加する
お金の流れ
・Customer → 親(プラットフォームアカウント) → 子(販売者アカウント)
別途料金と振込み
・このアプローチは、プラットフォームと接続アカウントの両方が米国またはヨーロッパにある場合にのみ完全にサポートされている
Connect課金のStripe手数料を理解する
直接課金に対するStripeの手数料
・接続アカウントの 料金プランによって決定される
・取扱料金または個別の課金と振替では、取扱先アカウントの国について、課金が作成されたプラットフォームの料金プランが使用される
取扱料金
・指定されたアカウントの国と通貨で決済され、その国の料金体系を使用する
・on_behalf_ofを使用して、個別の請求と振替でこの動作を再現できる
・価格は、さまざまな要因によって異なる。 Connectの価格設定に関する詳細および説明については、 Stripe社に問い合わせてくれ
・カスタム価格に関心のあるプラットフォームの場合、そのプラットフォームのすべてのカスタムアカウントに適用される価格プランを交渉できる
Creating Direct Charges / 直接課金の作成
docs
Connect > PROCESSING PAYMENTS > Creating Charges > Direct Charges
・Creating Direct Charges
・直接課金の作成
・Connectを使用すると、接続されたアカウントに直接課金し、その過程で料金を支払うことができる
接続アカウントに直接課金を作成すること
そのユーザーのために電子商取引を可能にするプラットフォームに特に適している
・エンドカスタマーはプラットフォームではなく個々のビジネスから購入しており、そのビジネスは自分のStripe Dashboardで自分の売上を簡単に確認できる
接続アカウントに直接課金するには?
接続アカウントとして認証された状態で、プラットフォームの秘密鍵を使用して標準の課金作成またはPaymentIntent作成リクエストを実行する
Charges API
・例ではテストトークン tok_visaを使用しているが、代わりにStripe.jsとElementsまたはStripe Checkoutを使用してテストカードをトークン化することが出来る
// Set your secret key: remember to change this to your live secret key in production
// See your keys here: https://dashboard.stripe.com/account/apikeys
\Stripe\Stripe::setApiKey("sk_test_xxxx");
$charge = \Stripe\Charge::create([
"amount" => 1000,
"currency" => "jpy",
"source" => "tok_visa",
], ["stripe_account" => "{CONNECTED_STRIPE_ACCOUNT_ID}"]);
Payment Intents API
・例では、支払い方法は添付されていない。 代わりに、 Stripe.js&ElementsまたはStripe社のiOSおよびAndroid SDKを使用して添付してくれ
// Set your secret key: remember to change this to your live secret key in production
// See your keys here: https://dashboard.stripe.com/account/apikeys
\Stripe\Stripe::setApiKey("sk_test_xxxx");
$payment_intent = \Stripe\PaymentIntent::create([
'payment_method_types' => ['card'],
'amount' => 1000,
'currency' => 'jpy',
], ['stripe_account' => '{CONNECTED_STRIPE_ACCOUNT_ID}']);