Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Stripeを使った SaaSサービスでのプラン管理 / stripe_jp_kyoto_vol1
Search
Hidetaka Okamoto
June 05, 2017
Technology
1
890
Stripeを使った SaaSサービスでのプラン管理 / stripe_jp_kyoto_vol1
JP_Stripes (Stripe ユーザーグループ)in KYOTO キックオフ
Hidetaka Okamoto
June 05, 2017
Tweet
Share
More Decks by Hidetaka Okamoto
See All by Hidetaka Okamoto
OpenAI APIで API Changelogを要約してみた話 / chatgpt-osaka-1
hideokamoto
0
590
コミュニティ運営から 中の人に変わって感じたこと
hideokamoto
0
82
Developerが Developer Advocateになった話 / dev-rel-meetup-tokyo-71
hideokamoto
0
330
Jamstack開発者のための App Runner入門
hideokamoto
1
480
WordPressでの webサイト制作2022 / ngk2022s
hideokamoto
0
430
JavaScript(TypeScript)で メディアサイトを インフラから構築する方法 / jsconf-jp-2021
hideokamoto
2
4.2k
AWS上でStripeを利用したアプリをより安全にデプロイする方法 /jaws-pankration-2021
hideokamoto
1
190
Shifter Headlessと Headless WordPressの紹介
hideokamoto
0
1.8k
Stripe & Next.js + AWS Amplify で会員 + 定期課金機能 / JP_Stripes20210903
hideokamoto
7
3.2k
Other Decks in Technology
See All in Technology
機械学習を「社会実装」するということ 2025年夏版 / Social Implementation of Machine Learning July 2025 Version
moepy_stats
1
1.5k
Vision Language Modelと自動運転AIの最前線_20250730
yuyamaguchi
2
810
Datasets for Critical Operations by Dataform
kimujun
0
120
Tiptapで実現する堅牢で柔軟なエディター開発
kirik
1
160
株式会社島津製作所_研究開発(集団協業と知的生産)の現場を支える、OSS知識基盤システムの導入
akahane92
1
1.3k
会社もクラウドも違うけど 通じたコスト削減テクニック/Cost optimization strategies effective regardless of company or cloud provider
aeonpeople
2
400
経験がないことを言い訳にしない、 AI時代の他領域への染み出し方
parayama0625
0
270
少人数でも回る! DevinとPlaybookで支える運用改善
ishikawa_pro
4
1.9k
マルチモーダル基盤モデルに基づく動画と音の解析技術
lycorptech_jp
PRO
2
280
私とAWSとの関わりの歩み~意志あるところに道は開けるかも?~
nagisa53
1
140
ファインディにおける Dataform ブランチ戦略
hiracky16
0
220
alecthomas/kong はいいぞ
fujiwara3
6
1.2k
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
5.7k
Making Projects Easy
brettharned
117
6.3k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
The World Runs on Bad Software
bkeepers
PRO
70
11k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
283
13k
Practical Orchestrator
shlominoach
190
11k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
110
19k
Facilitating Awesome Meetings
lara
54
6.5k
Transcript
S t r i p e Λ ͬ ͨ
S a a S α ʔ Ϗ ε Ͱ ͷ ϓ ϥ ϯ ཧ J P _ S t r i p e s ( S t r i p e Ϣʔ βʔ άϧ ʔϓ ʣ i n K Y O T O Ω ο Ϋ Φ ϑ
· ͱ Ί • StripeͷϝλσʔλΛ͏͜ͱͰɺϓϥϯใΛҰݩཧ • webhookAPI͕๛ͳͷͰɺඞཁʹԠͯ͡֎෦DB࿈ܞͰ͖Δ • StripeΛ͍ࠐΜͰɺαʔϏεӡӦཧΛָʹ͍ͯ͜͠͏
H i d e t a k a O k
a m o t o • AMIMOTO / Shifter • WordBenchKyoto • WordCamp Kyoto 2017
None
S h i f t e r ͷ ܾ ࡁ
ཧ • ϢʔβʔใAmazon Cognito User PoolsͰཧ • ར༻ྉۚStripeͷSubscriptionΛར༻ • ϓϥϯ੍ݶͳͲͷใͯ͢Stripeͷplans_metadataʹू
S h i f t e r ͷ ϓ ϥ
ϯ ੍ ݶ ʢ Ұ ෦ ʣ • ϓϩδΣΫτʢαΠτʣ࡞ • ಠࣗυϝΠϯઃఆͷՄ൱ • ֎෦αʔϏε࿈ܞ • etc…
ϓ ϥ ϯ ใ Λ Ͳ ͜ Ͱ
ཧ ͢ ͖ ͔ʁ
ϓ ϥ ϯ ใ ཧ ͷ ΞΠ σΟΞ
• ΫϥΠΞϯτΞϓϦʹϋʔυίʔσΟϯά • APIόοΫΤϯυʹϋʔυίʔσΟϯά • ઐ༻ͷDBΛ࡞ͯ͠ཧ • ʁʁʁ
ϓ ϥ ϯ ใ ཧ ͷ ΞΠ σΟΞ
• ΫϥΠΞϯτΞϓϦʹϋʔυίʔσΟϯά • APIόοΫΤϯυʹϋʔυίʔσΟϯά • ઐ༻ͷDBΛ࡞ͯ͠ཧ • SaaSΛ͏
A P I ό ο Ϋ Τ ϯ υ ʹ
ϋʔ υ ί ʔ σΟ ϯ ά • APIॲཧ෦ʹJSON / arrayͰϋʔυίʔσΟϯά • APIଆͰϓϥϯ੍ݶͷఆΛ͔͚͍͢ • APIԽ͓͚ͯ͠ϑϩϯτͰ͑Δ • ϝϯςφϯεੑ࠷ѱ • ࠷ऴखஈɾԠٸॲஔతͳରԠ
ઐ ༻ D B Λ ࡞ ͢ Δ •
webΞϓϦͷఆੴͨͿΜ͜Ε • RDBͰ͋ΕϢʔβใͳͲͱͷϦϨʔγϣϯΊΔ • ϓϥϯใͳͲͷݕࡧ؆୯ • ϝϯςφϯεɾཧίετ͕૿͕͑ͪͳͷ͕τϨʔυΦϑ
ϓ ϥ ϯ ใ ཧ ͷ ΞΠ σΟΞ
• ΫϥΠΞϯτΞϓϦʹϋʔυίʔσΟϯά • APIόοΫΤϯυʹϋʔυίʔσΟϯά • ઐ༻ͷDBΛ࡞ͯ͠ཧ • SaaSΛ͏
S a a S Ͱ ϓ ϥ ϯ ใ
ཧ • σʔλཧʹ͑Δ֎෦αʔϏε͕ଟ͋Δ • ݕࡧ༏ઌͳΒAlgoriaɺϫʔΫϑϩʔॏࢹͳΒkintoneͳͲɻɻɻ • ʮܾࡁʹStripe͍ͬͯΔͳΒɺܾࡁपΓ·ͱΊͯཧ͠Α͏ʯ
S t r i p e ͷ ϝλ σ ʔ
λ Λ ͏
S t r i p e ϝλ σ ʔ λ
Λ ͬ ͨ ཧ ༝ • ੍ݶͷมߋϓϥϯՃͳͲͷରԠΛ༏ઌ͔ͨͬͨ͠ • ݕࡧߟྀ͠ͳ͍σʔλ͔Γͩͬͨ • ݕࡧ͠ͳ͍ͳΒɺDBͰ͋Δඞཁͳ͍ • StripeͰཧ͢ΕɺϓϥϯपΓ͕̍ՕॴͰཧͰ͖Δ
Ϋ ϥ Π Ξ ϯ τΞ ϓ Ϧ Ͱ ͷ
Φϖ Ϩ ʔ γ ϣ ϯ • API͔ΒStripeͷϓϥϯҰཡΛऔಘʢGET /v1/plans ʣ • APIͰϨεϙϯε͔ΒෆཁͳΛআ • ϓϥϯҰཡͷσʔλΛϑϩϯτʹදࣔ • customer_id / plan_idͰsubscriptionΛߋ৽
࣮ ࡍ ͷ ද ࣔ h t t p s
: / / g o . g e t s h i f t e r. i o / # a c c o u n t
A P I ό ο Ϋ Τ ϯ υ Ͱ
ͷ Φϖ Ϩ ʔ γ ϣ ϯ • Cognito User Pools͔ΒStripeͷcustomer idΛऔಘ • ΧελϚʔใऔಘ(GET /v1/customers/{customer_id} • ΧελϚʔใ͔ΒϓϥϯϝλσʔλΛऔಘ • ϝλσʔλͷΛͱʹɺϦΫΤετͷ࣮ߦՄ൱Λஅ
T i p s ʢ Β ͔ ͠ ͨ
͜ ͱ ɾ ҙ ͳ Ͳ ʣ
ϝλ σ ʔ λ ͷ ࣋ ͪ ํ ʹ ͭ
͍ͯ • Key - ValueܗࣜͰσʔλΛอ࣋͢Δ • Value͔ͳΒͣStringܕͰอଘ͞ΕΔ • true / falseͰఆ͢Δ࣌StringܕͰఆ͠Α͏
A W S C o g n i t o
U s e r P o o l s ͱ ͷ Έ ߹ Θ ͤ • Stripe planAWS Cognito User PoolsϝλσʔλͰݕࡧͰ͖ͳ͍ • StripeʹCognito ͷUser ID , CognitoʹStripeͷCustomer IDΛอଘ • Ϣʔβʔऔಘ -> ΧελϜଐੑऔಘ -> Customerऔಘͱ͍͏खଓ͖ʹ
A P I ͷ ύ ϑ Υ ʔϚ ϯε •
GET v1/customer/{customer_id}ͷϨεϙϯεେ͖Ί • ϓϥϯϝλσʔλΛඞཁͱ͢Δॴ͕ଟ͍߹ɺAPIίʔϧඇޮ • ඞཁʹԠͯ͡CognitoͷΧελϜଐੑઐ༻DBͷΠϯσοΫεݕ౼ • Ұݩཧ͢ΔʹStripe APIΛͬͨμογϡϘʔυ͕͋Δͱศར͔
ϓ ϥ ϯ ϝλ σ ʔ λ Λ ݕ ࡧ
͠ ͨ ͍ ߹ • ݕࡧʹରԠ͍ͯ͠ͳ͍ • Sigmaʹplans_metadata͕͋Δ • ϑϩϯτ͔ΒఘΊΔʢผDBԽʣ
· ͱ Ί • StripeͷϝλσʔλΛ͏͜ͱͰɺϓϥϯใΛҰݩཧ • webhookAPI͕๛ͳͷͰɺඞཁʹԠͯ͡֎෦DB࿈ܞͰ͖Δ • StripeΛ͍ࠐΜͰɺαʔϏεӡӦཧΛָʹ͍ͯ͜͠͏
༨ ஊ
S t r i p e A P I R
e f e re n c e h t t p s : / / s t r i p e . c o m / d o c s / a p i
E x a m p l e R e q
u e s t ͷ ϩ άΠ ϯϢʔ βʔ ͷ h t t p s : / / s t r i p e . c o m / d o c s / a p i
ϒϩ ά Q i i t a ʹ ॻ
͘ ͱ ͖ ɺ “ s k _ t e s t _ X X X X ” ͱ ͔ ʹ ॻ ͖ ͑ͯ ͓ ͜͏