Stripe Connectの実装 その2
■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