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
860
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
460
コミュニティ運営から 中の人に変わって感じたこと
hideokamoto
0
53
Developerが Developer Advocateになった話 / dev-rel-meetup-tokyo-71
hideokamoto
0
270
Jamstack開発者のための App Runner入門
hideokamoto
1
420
WordPressでの webサイト制作2022 / ngk2022s
hideokamoto
0
380
JavaScript(TypeScript)で メディアサイトを インフラから構築する方法 / jsconf-jp-2021
hideokamoto
2
4k
AWS上でStripeを利用したアプリをより安全にデプロイする方法 /jaws-pankration-2021
hideokamoto
1
170
Shifter Headlessと Headless WordPressの紹介
hideokamoto
0
1.6k
Stripe & Next.js + AWS Amplify で会員 + 定期課金機能 / JP_Stripes20210903
hideokamoto
7
3k
Other Decks in Technology
See All in Technology
Terraform CI/CD パイプラインにおける AWS CodeCommit の代替手段
hiyanger
1
240
Flutterによる 効率的なAndroid・iOS・Webアプリケーション開発の事例
recruitengineers
PRO
0
110
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
600
10XにおけるData Contractの導入について: Data Contract事例共有会
10xinc
6
650
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
3
220
Amazon CloudWatch Network Monitor のススメ
yuki_ink
1
210
飲食店データの分析事例とそれを支えるデータ基盤
kimujun
0
100
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
13k
Terraform未経験の御様に対してどの ように導⼊を進めていったか
tkikuchi
2
440
OCI 運用監視サービス 概要
oracle4engineer
PRO
0
4.8k
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.9k
Amplify Gen2 Deep Dive / バックエンドの型をいかにしてフロントエンドへ伝えるか #TSKaigi #TSKaigiKansai #AWSAmplifyJP
tacck
PRO
0
390
Featured
See All Featured
A Philosophy of Restraint
colly
203
16k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Thoughts on Productivity
jonyablonski
67
4.3k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
Designing for humans not robots
tammielis
250
25k
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
The Language of Interfaces
destraynor
154
24k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Designing for Performance
lara
604
68k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Faster Mobile Websites
deanohume
305
30k
Site-Speed That Sticks
csswizardry
0
26
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 ” ͱ ͔ ʹ ॻ ͖ ͑ͯ ͓ ͜͏