SlideShare a Scribd company logo
Stripeを使った簡単なサブスク型
課金サービスの作り方
WESEEK Tech Conference #15
#WESEEK_tech
会社概要
株式会社WESEEK
所在地
● 本社:〒169-0051東京都新宿区西早稲田2-20-15高田馬場アクセス10F
● サテライトオフィス:〒874-0838大分県別府市荘園9-1 ルーデンス荘園305
Lead with the web
-Webで未来をリードする-
2
#WESEEK_tech
現在の主な事業
1. 通信大手企業の業務フロー自動化プロジェクト
2. ソーシャルゲームの受託開発
3. 自社発オープンソースプロダクト「GROWI」「GROWI.cloud」の開発
3
#WESEEK_tech
GROWIとは
4
快適な情報共有を、全ての人へ
● OSSとして公開している情報共有ツール(ナレッジベース)
● エンジニアに馴染みのあるMarkdown形式で記述可能
● 柔軟な階層構造での情報管理が可能
#WESEEK_tech
GROWI.cloudとは
情報共有をもっと身近に、もっと手軽に
● OSSであるGROWIを専門的知識がなくても簡単に運用・管理できる、
法人・個人向けの商用サービス
● エンタープライズプランの導入事例
○ インターネットマルチフィード株式会社様
○ 株式会社エイチーム様
○ 株式会社HIKKY(VR法人HIKKY)様
5
#WESEEK_tech
質問の受付方法について
● Zoomのチャット機能で、発表中も随時質問を受け付けます
○ メッセージの送信先設定は「全員」で!
● 発表終了後に10分程度、質疑応答の時間を設けています
6
ハッシュタグ
【 #WESEEK_tech 】
7
本日の発表
8
#WESEEK_tech
自己紹介
伊勢 達也
Tatsuya Ise
9
2017年7月にWESEEKに入社
別府サテライトオフィスに勤務
GROWI/GROWI.cloud 開発・運用
ウインドサーフィン、
園芸、バイク、子どもとの戯れ
業務
趣味
#WESEEK_tech
はじめに
今日のテーマ
● サブスクリプション型課金のサービスを考えているが決済をど
うすればいいのか分からない
● クレジットカードや銀行などが絡んでくると、決済の管理が大
変
● そもそも定期支払ってどうやって実現するの?
こういった悩みをお持ちの方はいませんか?
10
#WESEEK_tech
はじめに
今日のテーマ
このような悩みを解決してくれる Stripe(ストライプ) という
オンライン決済サービスがあります
● オンライン決済を簡単に組み込みたい
● サブスクリプション形式の決済を行いたい(仕組みを知りたい)
という方に向けて、GROWI.cloud での実例を交えながらご紹介
11
#WESEEK_tech
本日の流れ
※一部ハンズオン風の形式で実際に Stripe を操作しつつお送りします
1. 「Stripe」とは
2. Stripeのデータの種類
3. 実際に課金してみる
4. SDK & ドキュメント
12
Coupon
Product
Plan
Invoice
Customer
Subscription
#WESEEK_tech
はじめに
本日の流れ ※一部ハンズオン風の形式で実際に Stripe を操作しつつお送りします
6. GROWI.cloudでの導入事例
7. Stripe の便利機能 PickUp
8. 失敗談と対策
9. さいごに
10.質疑応答
13
#WESEEK_tech
「Stripe」とは
14
#WESEEK_tech
「Stripe」とは
● Stripe は、オンライン決済サービス
→ https://stripe.com/jp
● ライブラリ・API が用意されており、サブスクリプション型の
決済を行うプログラムを簡単にサービスに組み込むことができ
る
15
#WESEEK_tech
「Stripe」とは
Stripe は始めるのがとても簡単なオンライン決済サービス
● メールアドレスがあればテストアカウントを即時に発行可能
● 早速、アカウントを発行してみます
→ https://stripe.com/jp
16
#WESEEK_tech
「Stripe」とは
Stripe は始めるのがとても簡単なオンライン決済サービス
● 本番環境利用の申請も、必須項目を埋めて送信するだけ
● 最短1日で利用開始できる
→ 続けて Stripe について深掘りしていきます
17
#WESEEK_tech
Stripeのデータの種類
18
#WESEEK_tech
Stripeのデータの種類
Stripe にはどんな種類のデータがあるのかご紹介
● 顧客 (Customer) ・・・ 一顧客を表すデータ
● 商品 (Product) ・・・ 提供する商品を表すデータ
● 料金 (Plan) ・・・商品の料金 ¥〇 / 月 等のデータ
● インボイス(Invoice) ・・・(料金 × 顧客) 請求情報を表す
19
#WESEEK_tech
Stripeのデータの種類
Stripe にはどんな種類のデータがあるのかご紹介
● サブスクリプション(Subscription) ・・・定期支払を表す
20
#WESEEK_tech
Stripeのデータの種類
サブスクリプション(Subscription)の仕様
1. 顧客の情報を持つ
2. 期間と期間の区切り、料金プランを持つ
3. 期間の区切りごとに支払い情報を作成する
つまり、インボイスを定期的に自動生成して定期支払を実現して
いるのが「サブスクリプション」である
21
#WESEEK_tech
Stripeのデータの種類
Stripe の仕様について疑問
● Q: 期間の途中で顧客がプランを変更したらどうなる?
○ A: Stripe が日割り計算を行って次回請求情報を更新
● Q: Stripe の月額はいくら?
○ A: 月額の利用料はナシだが、決済成立ごとに 3.6% の手数
料がかかる
22
#WESEEK_tech
実際に課金してみる
太郎さんは現在フリープランなので有料プランに変更してみます
● 課金が発生しない (0円課金) プランの場合は、支払い方法を登
録する必要は無い
● テスト版アカウントでは、ダミーのカードを使用できる
● 支払いに失敗した場合を確認するためのダミーカードもある
23
#WESEEK_tech
SDK & ドキュメント
24
#WESEEK_tech
SDK & ドキュメント
Stripe では、様々な種類の開発者ツールが提供されています
● CLI
● Node.js ライブラリ
● VisualStudio Code の拡張機能
● REST API
25
#WESEEK_tech
SDK & ドキュメント
Stripe では、様々な種類の開発者ツールが提供されています
● CLI
● Node.js ライブラリ
● VisualStudio Code の拡張機能
● REST API
26
#WESEEK_tech
SDK & ドキュメント
ドキュメントも充実
● API ドキュメントをはじめ、仕様に関するドキュメントが充実
● 日本語版が現在整備されつつあるが、基本は英語版
● 翻訳が未対応の箇所や言語による若干の表現の差もある
● ドキュメントを読んで不明点があれば、サポートへ質問できる
○ 日本語はメールで翌営業日に回答、英語ならチャット可
27
#WESEEK_tech
GROWI.cloudでの導入事例
28
#WESEEK_tech
GROWI.cloudでの導入事例
GROWI.cloud で実際に使っている例をご紹介
● GROWI.cloud では、Stripe が提供している Node.js
のライブラリ、Stripe React Element という外部コ
ンポーネントを使用しています
● プランごとの料金設定をマイグレーション用ファイ
ルにまとめている
● 変更が発生した際にはマイグレーションを実行
29
プランのマイグレーションファイル
#WESEEK_tech
GROWI.cloudでの導入事例
GROWI.cloud で実際に使っている例をご紹介
GROWI.cloud では顧客、サブスクリプション、インボイスをどう扱っている
のか?
1. アカウント登録時に Stripe 上の顧客情報を作成
2. 同時に課金額0円の料金プランでサブスクリプションを作成
3. 登録完了後、ユーザーの任意のタイミングでプラン変更
4. 支払い情報が未登録の場合は、登録完了後にプラン変更が可能
30
#WESEEK_tech
GROWI.cloudでの導入事例
GROWI.cloud で実際に使っている例をご紹介
1. アカウント登録時に Stripe 上の顧客情報を作成
const attachStripeCustomer = async(customer, option) => {
const stripeCustomer = await stripe.customers.create({
email: customer.email,
description: `Customer ID: ${customer.id}`,
});
await customer.update({ stripeCustomerId: stripeCustomer.id }, option);
};
31
#WESEEK_tech
GROWI.cloudでの導入事例
GROWI.cloud で実際に使っている例をご紹介
2. 同時に課金額0円の料金プランでサブスクリプションを作成
const attachStripeSubscription = async(customer, plan, options) => {
return stripe.subscriptions.create({
customer: customer.id,
items: [{ plan: plan.id }],
expand: ['latest_invoice.payment_intent'],
...options,
});
};
32
#WESEEK_tech
GROWI.cloudでの導入事例
GROWI.cloud で実際に使っている例をご紹介
3. 登録完了後、ユーザーの任意のタイミングでプラン変更
const changeSubscription = async(subscriptionId, subscriptionItems, options) => {
await stripe.subscriptions.update(subscriptionId, {
items: subscriptionItems,
expand: ['latest_invoice.payment_intent'],
...options,
});
};
33
#WESEEK_tech
GROWI.cloudでの導入事例
GROWI.cloud で実際に使っている例をご紹介
4. 支払い情報が未登録の場合は、登録完了後にプラン変更が可能
34
Stripe React Element
コンポーネントを利用
#WESEEK_tech
Stripeの便利機能PickUp
35
#WESEEK_tech
Stripeの便利機能PickUp
● ダッシュボード
○ Stripe が自動集計してくれる様々なデータを閲覧可能
36
#WESEEK_tech
Stripeの便利機能PickUp
● MRR (月間標準収益)
○ ダッシュボードから確認可能
○ サブスクリプションが継続している契約全体の収益見込み
サブスクリプションサービスを提供する場合、継続が見込める月
間の収益は売り上げと直結するのでサービス戦略を考える指標と
しても非常に重要
37
#WESEEK_tech
Stripeの便利機能PickUp
クーポン
● 特定の支払いに対して割引を行なえる
● 割引率が MRR に影響しない (正規の金額通り MRR に反映される)
○ 例) 600 円/月 プランに 50% 割引クーポンを適用した場合
→ 顧客の支払金額は 300 円/月
→ MRR の変動は 600 円
38
#WESEEK_tech
Stripeの便利機能PickUp
トライアル
● 期限を設けて、期限まで割引した額で請求を行なえる
● トライアル中のサブスクリプションは MRR に影響しない
○ 例) 600 円/月 プランを50%割引でトライアルした場合
→ 顧客の支払金額は 300 円/月
→ MRR の変動は 0 円
39
#WESEEK_tech
失敗談と対策
40
#WESEEK_tech
失敗談と対策
初月無料キャンペーンにおける失敗
1. 支払い失敗が連発してしまう
2. MRR の数値に悪影響が出てしまった
41
#WESEEK_tech
失敗談と対策 (初月無料キャンペーン失敗編)
突貫実装による考慮不足で、支払い失敗が連発してしまう
● 他サービスで当たり前となっている「初回〇〇無料!」
● 社内から強い要望があり、優先して実装することに
● Stripe のドキュメントを調べたところクーポンという機能があ
ることを知る
42
#WESEEK_tech
失敗談と対策 (初月無料キャンペーン失敗編)
突貫実装による考慮不足で、支払い失敗が連発してしまう
● 100%オフクーポンを使うことで、支払い方法の登録なしのま
ま有料プランを設定できることも判明
● 初月無料キャンペーンの実装も完了し意気揚々とプレスリリー
スを打つ
● 徐々にユーザーが増えてきた・・・が、そこで事件が起こる
43
#WESEEK_tech
失敗談と対策 (初月無料キャンペーン失敗編)
突貫実装による考慮不足で、支払い失敗が連発してしまう
● 1か月が経過した初月無料キャンペーン適用ユーザーの支払い
が (ほぼ) 全て失敗してしまうという現象が発生
● 支払い情報の登録を行わず、100%オフクーポンを使うことで、
本来であれば有料であるプランを契約してしまったことが原因
● 2回目の請求を行った際に支払い方法が無いため失敗していた
44
#WESEEK_tech
失敗談と対策 (初月無料キャンペーン失敗編)
MRR の数値に悪影響が出てしまった
● 「クーポンは MRR に影響しない」という関係性を正しく理解
していなかった
○ MRR には 割引を適用しない 金額が加算される
● つまり、初月無料期間だけお試しのみの顧客が見込み顧客とし
て扱われるため、本来の課金額が高いプランを利用したユーザ
ーが居れば居るほどプランで MRR が乱高下した
45
#WESEEK_tech
失敗談と対策 (初月無料キャンペーン対策編)
トライアルという機能があり、そちらが適切だと気づく
● トライアルを利用するよう再度仕様を練り直す
● クーポンを利用した「初月無料キャンペーン」から、「1か月
無料トライアル」に乗り換えることに
46
#WESEEK_tech
失敗談と対策 (初月無料キャンペーン対策編)
トライアルという機能があり、そちらが適切だと気づく
● 内部の実装は大きく変わらず実現できた
await stripe.subscriptions.update(subscriptionId, { items: subscriptionItems, coupon: “COUPON_CODE_XXX” });
↓ ↓ ↓
await stripe.subscriptions.update(subscriptionId, { items: subscriptionItems, trial_end: addMonths(new Date(), 1) });
● トライアルにすることで、サブスクリプションそのものが
MRR に影響しなくなった!
47
#WESEEK_tech
さいごに
● Stripe は、現在勢いのあるオンライン決済サービス
● 導入が簡単
● 素早く柔軟に変更可能
● 正しく理解して使えばとても便利
ぜひ利用を検討してみてはいかがでしょうか
48
質疑応答
49
#WESEEK_tech
お知らせ 次回のWESEEK Tech Conf
50
イベントへのご参加ありがとうございました。
アンケートへのご協力をお願いいたします。
WESEEK Tech Conference #15

More Related Content

PDF
Windowsコンテナ入門
PDF
インメモリーデータグリッドの選択肢
PDF
20191115-PGconf.Japan
ODP
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
PDF
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
PDF
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
PPTX
FIWARE 概要 - FIWARE WednesdayWebinars
Windowsコンテナ入門
インメモリーデータグリッドの選択肢
20191115-PGconf.Japan
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
FIWARE 概要 - FIWARE WednesdayWebinars

What's hot (20)

PDF
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
PDF
SolrとElasticsearchを比べてみよう
PDF
Pythonでパケット解析
PDF
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
PDF
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
PDF
すごい constexpr たのしくレイトレ!
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.7.0対応)
PPTX
明日からはじめられる Docker + さくらvpsを使った開発環境構築
PDF
Goでかんたんソースコードの静的解析
PDF
AllwinnerタブレットのOSを作ってみる (途中版)
PDF
Dockerからcontainerdへの移行
PDF
Apache OpenWhiskで実現するプライベートFaaS環境 #tjdev
PDF
kube-system落としてみました
PDF
Parser combinatorってなんなのさ
PDF
Prophet入門【Python編】Facebookの時系列予測ツール
PDF
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
PDF
広告配信のための高速疎ベクトル検索エンジンの開発@WebDBフォーラム2015 #webdbf2015
PDF
PFI会社案内
PDF
Constexprとtemplateでコンパイル時にfizz buzz
PDF
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
SolrとElasticsearchを比べてみよう
Pythonでパケット解析
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
すごい constexpr たのしくレイトレ!
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.7.0対応)
明日からはじめられる Docker + さくらvpsを使った開発環境構築
Goでかんたんソースコードの静的解析
AllwinnerタブレットのOSを作ってみる (途中版)
Dockerからcontainerdへの移行
Apache OpenWhiskで実現するプライベートFaaS環境 #tjdev
kube-system落としてみました
Parser combinatorってなんなのさ
Prophet入門【Python編】Facebookの時系列予測ツール
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
広告配信のための高速疎ベクトル検索エンジンの開発@WebDBフォーラム2015 #webdbf2015
PFI会社案内
Constexprとtemplateでコンパイル時にfizz buzz
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
Ad

Similar to Stripeを使った簡単なサブスク型課金サービスの作り方【WESEEK Tech Conf #15】 (20)

PDF
Scale Your Business without Servers
PPTX
クラウドサービスを運営する上で活用している可視化のためのサービス・ツール
PDF
Watson.assistant chat bot-20200117
PDF
MicrosoftのDID/VC実装概要
PDF
GoAzure 2015:IoTなどの大量データをStream Analyticsでリアルタイムデータ分析してみよう
PDF
[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築
PDF
IBM STARTUP MEETUP!(スタートアップカフェ大阪)
PDF
新規プロダクトで 爆速開発を実現するために意識したこと
PPTX
【kintone hive 上海】ウィングアーク上海講演資料_160918
PPTX
30%のMAU増加と78%のコスト削減を両立する方法.pptx
PDF
Elastic on-microsoft-azure-0630-webinar-no-video
PDF
Smart Store Map
PPTX
受託開発をやりながらboardを軌道に乗せるまで
PDF
Windows Phone / iOS / Android アプリ同時開発のススメ
PDF
Smarthome dev overview
PDF
[Cloud OnAir] Talks by DevRel Vol. 1 インフラストラクチャ 2020年7月30日 放送
PDF
AWS初心者向けWebinar AWSではじめよう、IoTシステム構築(リピート開催用)
PDF
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
PDF
JAWS-UG東京 - 2019-09-26 - Gateway祭
PDF
[AC04] 『シン・ブロックチェーン』第 2 形態 ~進化する BaaS を体感せよ!
Scale Your Business without Servers
クラウドサービスを運営する上で活用している可視化のためのサービス・ツール
Watson.assistant chat bot-20200117
MicrosoftのDID/VC実装概要
GoAzure 2015:IoTなどの大量データをStream Analyticsでリアルタイムデータ分析してみよう
[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築
IBM STARTUP MEETUP!(スタートアップカフェ大阪)
新規プロダクトで 爆速開発を実現するために意識したこと
【kintone hive 上海】ウィングアーク上海講演資料_160918
30%のMAU増加と78%のコスト削減を両立する方法.pptx
Elastic on-microsoft-azure-0630-webinar-no-video
Smart Store Map
受託開発をやりながらboardを軌道に乗せるまで
Windows Phone / iOS / Android アプリ同時開発のススメ
Smarthome dev overview
[Cloud OnAir] Talks by DevRel Vol. 1 インフラストラクチャ 2020年7月30日 放送
AWS初心者向けWebinar AWSではじめよう、IoTシステム構築(リピート開催用)
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
JAWS-UG東京 - 2019-09-26 - Gateway祭
[AC04] 『シン・ブロックチェーン』第 2 形態 ~進化する BaaS を体感せよ!
Ad

More from WESEEKWESEEK (16)

PPTX
GROWI Users Meetup #2
PPTX
激白!GROWI.cloudの可用性向上の取り組み【WESEEK Tech Conf #16】
PPTX
あなたもできる!GASで勤怠入力Slack App構築【WESEEK Tech Conf #14】 (pert2)
PPTX
あなたもできる!GASで勤怠入力Slack App構築【WESEEK Tech Conf #14】 (pert1)
PPTX
既存RailsアプリをSSO化して、本番環境で活用した話【WESEEK Tech Conf #12】
PPTX
React でフォームをスマートに実装する【weseek tech conf #11】
PPTX
Rails×React×TS で作るwebアプリ入門【weseek tech conf #10】
PDF
SVG今昔物語『画像ファイル、なんでもよくないですか?』【WESEEK Tech Conf #9】
PPTX
企業を超えたアジャイル+Railsを利用した開発の成功事例【WESEEK Tech Conf #8】
PPTX
実践Node.jsパフォーマンスアップ~Stream編~【WESEEK Tech Conf #7】
PPTX
SaaS運用での大障害の思い出と対策の共有(大噴火編)【WESEEK Tech Conf #6】
PDF
普遍的そして実践的! ノンデザイナーのためのデザイン原論 【WESEEK Tech Conf #5】
PPTX
SaaS運用での大障害の思い出と対策の共有(中噴火編)【WESEEK Tech Conf #4】
PPTX
もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】
PPTX
コスト8割減!k8s本番サービス環境の運用ノウハウ【WESEEK Tech Conf #2】
PPTX
ラズパイでデバイスを自作して社内のシンクロ率を上げる【WESEEK Tech Conf #1】
GROWI Users Meetup #2
激白!GROWI.cloudの可用性向上の取り組み【WESEEK Tech Conf #16】
あなたもできる!GASで勤怠入力Slack App構築【WESEEK Tech Conf #14】 (pert2)
あなたもできる!GASで勤怠入力Slack App構築【WESEEK Tech Conf #14】 (pert1)
既存RailsアプリをSSO化して、本番環境で活用した話【WESEEK Tech Conf #12】
React でフォームをスマートに実装する【weseek tech conf #11】
Rails×React×TS で作るwebアプリ入門【weseek tech conf #10】
SVG今昔物語『画像ファイル、なんでもよくないですか?』【WESEEK Tech Conf #9】
企業を超えたアジャイル+Railsを利用した開発の成功事例【WESEEK Tech Conf #8】
実践Node.jsパフォーマンスアップ~Stream編~【WESEEK Tech Conf #7】
SaaS運用での大障害の思い出と対策の共有(大噴火編)【WESEEK Tech Conf #6】
普遍的そして実践的! ノンデザイナーのためのデザイン原論 【WESEEK Tech Conf #5】
SaaS運用での大障害の思い出と対策の共有(中噴火編)【WESEEK Tech Conf #4】
もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】
コスト8割減!k8s本番サービス環境の運用ノウハウ【WESEEK Tech Conf #2】
ラズパイでデバイスを自作して社内のシンクロ率を上げる【WESEEK Tech Conf #1】

Stripeを使った簡単なサブスク型課金サービスの作り方【WESEEK Tech Conf #15】