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
PRO
June 05, 2017
Technology
1
800
Stripeを使った SaaSサービスでのプラン管理 / stripe_jp_kyoto_vol1
JP_Stripes (Stripe ユーザーグループ)in KYOTO キックオフ
Hidetaka Okamoto
PRO
June 05, 2017
Tweet
Share
More Decks by Hidetaka Okamoto
See All by Hidetaka Okamoto
OpenAI APIで API Changelogを要約してみた話 / chatgpt-osaka-1
hideokamoto
PRO
0
370
コミュニティ運営から 中の人に変わって感じたこと
hideokamoto
PRO
0
45
Shopify / Stripeで 静的サイトでも オンライン決済・物販をはじめよう / shifter-meetu-feb-2022
hideokamoto
PRO
0
690
Developerが Developer Advocateになった話 / dev-rel-meetup-tokyo-71
hideokamoto
PRO
0
210
Stripeでの オンライン決済理解した - エンジニア達の「〇〇完全に理解した」Talk #25
hideokamoto
PRO
0
610
Jamstack開発者のための App Runner入門
hideokamoto
PRO
1
360
WordPressでの webサイト制作2022 / ngk2022s
hideokamoto
PRO
0
360
JavaScript(TypeScript)で メディアサイトを インフラから構築する方法 / jsconf-jp-2021
hideokamoto
PRO
2
3.8k
AWS上でStripeを利用したアプリをより安全にデプロイする方法 /jaws-pankration-2021
hideokamoto
PRO
1
150
Other Decks in Technology
See All in Technology
Compose Compiler Metricsを使った実践的なコードレビュー
tomorrowkey
1
220
プロトタイピングによる不確実性の低減 / Reducing Uncertainty through Prototyping
ohbarye
5
390
require(ESM)とECMAScript仕様
uhyo
3
780
20分で完全に理解するGrafanaダッシュボード
hamadakoji
3
680
生産性向上チームの紹介
cybozuinsideout
PRO
1
870
アクセス制御にまつわる改善 / Improving access control
itkq
0
550
AWSに詳しくない人でも始められるコスト最適化ガイド
yuhta28
1
250
推しは推せるときに推せ! プロダクトにフィードバックしていこう
nakasho
0
320
ServiceNow Knowledge Learning Rise up
manarobot
0
210
FrontDoorとWebAppsを組み合わせた際のリダイレクト処理の注意点
kenichirokimura
1
530
生成AIの変革の時代に、直近1年で直面した課題とその解決策
ktc_wada
0
330
元インフラエンジニアに成る / Human Resources to Human Relations
bobtani
4
930
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
61
6.7k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
9
8.3k
Git: the NoSQL Database
bkeepers
PRO
422
63k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
60
14k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
14
1.5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
25
2.3k
Build your cross-platform service in a week with App Engine
jlugia
225
17k
Optimizing for Happiness
mojombo
370
69k
A Tale of Four Properties
chriscoyier
151
22k
[RailsConf 2023] Rails as a piece of cake
palkan
23
4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
40
4.4k
The Straight Up "How To Draw Better" Workshop
denniskardys
227
130k
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 ” ͱ ͔ ʹ ॻ ͖ ͑ͯ ͓ ͜͏