Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
24
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Stripe Connectを2年程使ってみた話

この記事はトレタ Advent Calendar 2019 の8日目の記事です。

こんにちは!トレタに就職して1ヶ月半の榊原です!
今季の話は入社して間もないトレタは一切関係なく、別の企業で2年程度使用していたStripeの話をしていこうと思います。
内容は今年の8月頃までの内容を元にしているので、現在は変更があった場合はご指摘いただけると幸いです。

Stripeとは

インターネットビジネスのための、オンライン決済代行サービスです。
類似サービスだと、Pay.jpやベリトランス、Softbank paymentなどがあります。

PayPayやLinePayとは違ってオンライン決済を中心としているサービスです。

Stripeは最近採用している企業が増えてきて、ユーザコミュニティも活発になってきています。

https://www.facebook.com/groups/1826257457627959/

何ができるの?

ECサイトのお金周りで必要なことはほぼ全てできます。
簡単なところで言うと、
* BtoC 向けの決済
* BtoBtoC 向けの決済、入金
* サブスクリプションサービス向けの定期支払い
* クーポン機能の標準搭載
* 領収書を自動で生成できる
などなど

手軽に決済サービスを開発する事ができます。

今回はStripe Connectのお金の流れを図式化している記事やドキュメントがなさそうだったので
BtoBtoC向けの「Stripe Connect」について書かせていただきます。

Stripe Connect

Stripe Connectとは

BtoCの様な、自分たちのサービスからユーザに対してのお金のやり取りだけでなく
BtoBtoCやCtoBtoCの、シェアリングエコノミーやクラウドファンディングでよく用いられるサービス形態に用いられる決済方法です。
スクリーンショット 2019-12-09 23.34.18.png

登場人物

登場人物はBtoBtoCのサービスを想定して
* 自社サービス
* ユーザ
* 企業
の3つで、それぞれ白の四角で図式化しました。

また、背景の色は
紫色の背景: Stripeのサービス上での出来事
黄色の背景: リアル世界での出来事
です。

スクリーンショット 2019-12-09 23.33.54.png

実際のお金の流れ

想定するストーリ

想定するストーリーは企業は出品した500円の品をユーザが購入するという流れです。

詳細に記述すると下記の様な事があります。
* ユーザが500円で企業の商品を購入します
* 自社サービス上での決済なので、手数料を1回辺り150円とります
* 企業には一月に一回銀行口座に入金をします

決済の流れ

スクリーンショット 2019-12-09 23.34.14.png

それぞれ一つの処理を行った時や、ユーザなどにはそれぞれIDが発行されます。
例えば決済(Charge)の場合はch_[乱数]
ユーザーID(Customer)の場合は cus_[乱数]
の様な物が生成されます。
下記のフローにはにはそれを含めた形で説明してます。

①ユーザが500円で企業の商品を購入

  1. ユーザアカウント cus_oooo にお金をチャージして、そのお金の情報が格納されているトークン tok_oooo を発行します。
  2. ユーザアカウント cus_oooo から自社サービスに決済する ch_oooo
  3. この時3.6%の決済手数料が発生します
  4. 結果的に自社サービスの口座には482円が入ります。

②自社サービスが企業に送金

  1. 企業にお金を送金 tr_ooooo します。この時は決済時と違い入力した金額の満額が企業のStripeの口座に入ります。
  2. 決済手数料は0.02%です。これは毎月2日に引かれます

③企業は自分の銀行口座にお金を入金

  1. 週1回や月1回、銀行口座に自動で入金 po_oooo できます
  2. この時の手数料は振り込み一回辺り150円です。これも入金の度に自社サービスのStripe口座から引かれます。

注意点

ここでいくつか注意点がありますがここでは3つ紹介します。
* 自動入金の場合、月末締めができない
* 企業は代表の氏名や住所が必要
* 自社サービスのStripe口座にはお金を入金できない
* 標準ではJCBで決済はできない
* 引き落とし時の明細を日本語表記するやり方が公式ドキュメントに載っていない

自動入金の場合、月末締めができない

自動入金の場合Stripeは入金日は指定はできますが、締め日(時間)を指定できません。

重要なのは、
入金日の4日前の19時頃〜22時頃が締めになることです

つまり企業に毎月5日入金にした場合は(仮に20時15分に締めだった場合)
12月1日の20時15分までが12月5日に入金されて
それ以降の時間は1月5日に入金されます。

入金サイクルをStripeに任せず、自社で金額指定の入金APIを叩けば上記の注意点は回避できます。

企業は代表者の氏名や住所が必要

どこの決済代行も同じだと思いますが、
企業の場合は登記簿藤本のカラーコピーされた物と代表者の氏名、住所が必要です
個人の場合は本人の免許証などの身分証明書、氏名、住所が必要です。

※ユーザは上記の内容は必要ありません

自社サービスのStripe口座にはお金を入金できない

使用する機会は少ないかもしれませんが、
自社サービスのStripe口座にお金は入金することができない、かつ自社のStripe口座よりも多く企業に送金ができないので
Stripe口座にお金があまり入っていない時に、過剰なユーザへのディスカウントをしすぎると
企業へは通常通りの送金を行う事はできない可能性があるので注意しましょう。

引き落とし時の明細を日本語表記するやり方が公式ドキュメントに載っていない

Rubyの場合は決済時に下記の様に記述すれば日本語表記になります

# アメリカの場合
charge = Stripe::Charge.create({
  :amount => 1000,
  :currency => "jpy",
  :source => "tok_visa",
  :statement_descriptor => "Custom descriptor",
}, :stripe_account => "{CONNECTED_STRIPE_ACCOUNT_ID}")
# 日本の場合
charge = Stripe::Charge.create({
  :amount => 1000,
  :currency => "jpy",
  :source => "tok_visa",
  :alternate_statement_descriptors => {
    "kana":"テスト",
    "kanji":"てすと",
  }
  }, :stripe_account => "{CONNECTED_STRIPE_ACCOUNT_ID}")

メリット

厳選すると、下記の事が大きかったと思います。
* Stripeの導入がとっても簡単
* ダッシュボードも直感的で使いやすく、決済以外はほぼダッシュボードで済ませれる
* コミュニティが盛ん

Stripeはコミュニティが盛んかつ、カスタマーサクセスの人にも気軽に聞く事ができるため、困った時にすぐに聞く事ができる環境というのが一番大きいです。

最後に

Stripeはとても簡単に、複雑なお金の流れを含んだサービスを開発する事ができます。
注意点は多少あるものの、困った時にすぐに聴ける環境も大きいです。

前まではJCB決済はできませんでしたが、申請すれば使用可能になったので
JCBが使えなかったから使用をためらっていた人もぜひ、新しくサービスを作る際はStripeの導入を検討してみてください!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
24
Help us understand the problem. What are the problem?