■Connect機能利用の流れ

1)スタンダードアカウントを作成する

https://connect.stripe.com/oauth/authorize?response_type=code&client_id={client_id}&scope=read_write

client_idはプラットフォームのクライアントID(ca_xxxxxx)です。

入力項目は「Stripe Connectの実装 その1.5」を参照ください。

2)プラットフォームのリダイレクトURIにリダイレクトされる

リダイレクトURI?scope=read_write&code=ac_xxx{authorization_code}

3)authorization_codeを使用して、stripe_user_idなどを獲得する

request.post({
 url : "https://connect.stripe.com/oauth/token",
 form : {
  grant_type : "authorization_code",
  code : authorization_code,
  client_secret : プラットフォームのシークレットキー
 }
}, function( err, r, body ) {
}

bodyにはこんな感じのが返ってきます。

{
 "access_token": "sk_live_xxxxxxxxx",
 "livemode": true,
 "refresh_token": "rt_xxxxxxxx",
 "token_type": "bearer",
 "stripe_publishable_key": "pk_live_xxxxxxxx",
 "stripe_user_id": "acct_xxxxxx",
 "scope": "read_write"
}

この中で、access_token/stripe_publishable_keyはChargeに必要です。

stripe_user_idは子アカウントです。

必要に応じて、それぞれ保存しておいてください。

4)カード情報を入力する

カスタマー情報を子アカウントに保存するため、公開キーは子アカウントの公開キーを設定します

<script type="text/javascript" src="https://checkout.stripe.com/v2/checkout.js"
 class="stripe-button"
 data-key="<%= keyPub %>"   // 子アカウントの公開キー(stripe_publishable_key)を設定します
 data-locale="auto"
 data-bitcoin=false
 data-label="<%= label %>"
 data-description="<%= description %>"
 data-amount=<%= amount %>
 data-name="<%= name %>"
 data-currency="<%= currency %>"
></script>

5)カスタマー情報を作成する

カスタマー情報を子アカウントに保存するため、子アカウントの秘密キーを設定します

let stripeAcc = require("stripe")(stripe_secret_key );
 stripeAcc.customers.create({
 email : req.body.stripeEmail,
 source : req.body.stripeToken
 }).then( function( customer ) {
}

6)チャージします。(Direct Charge)

プラットフォームの秘密キーでチャージします。

stripe.charges.create({
 amount : 3000,
 description : "test charge",
 currency : "JPY",
 customer : customer.id,
 application_fee : 300,
}, {
 stripe_account : strupe_user_id
}

■終わりに。。。

途中で秘密キーを切り替える必要があることに気が付きませんでした。

どうしてもカスタマー情報がプラットフォーム側に保存されるので、サポートに問い合わせました。

※速攻で回答頂き、ホント助かりました!ありがとうございますm(_ _)m

子アカウントの秘密キー、公開キーを保存しておく必要があるのがちょっと気にはなりますが。。

準備編はコチラを参照ください → Stripe Connectの実装 その1