Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
後付けで 従量課金プランの 提供を開始した話 / 20210609-jp_stripes
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Hidetaka Okamoto
June 09, 2021
Technology
250
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
後付けで 従量課金プランの 提供を開始した話 / 20210609-jp_stripes
JP_Stripes Online
Hidetaka Okamoto
June 09, 2021
More Decks by Hidetaka Okamoto
See All by Hidetaka Okamoto
OpenAI APIで API Changelogを要約してみた話 / chatgpt-osaka-1
hideokamoto
0
720
コミュニティ運営から 中の人に変わって感じたこと
hideokamoto
0
150
Developerが Developer Advocateになった話 / dev-rel-meetup-tokyo-71
hideokamoto
0
390
Jamstack開発者のための App Runner入門
hideokamoto
1
560
WordPressでの webサイト制作2022 / ngk2022s
hideokamoto
0
500
JavaScript(TypeScript)で メディアサイトを インフラから構築する方法 / jsconf-jp-2021
hideokamoto
2
4.4k
AWS上でStripeを利用したアプリをより安全にデプロイする方法 /jaws-pankration-2021
hideokamoto
1
250
Shifter Headlessと Headless WordPressの紹介
hideokamoto
0
2.2k
Stripe & Next.js + AWS Amplify で会員 + 定期課金機能 / JP_Stripes20210903
hideokamoto
7
3.3k
Other Decks in Technology
See All in Technology
コーディングエージェントでM5Stack系の開発を少し試した時の話 / M5 Japan Tour 2026 Autumn 東京
you
PRO
0
110
Webとヘルスデータ
yukukotani
1
200
Adaptive Warehouse を今すぐ導入すべき理由と迷ったときの判断基準
__allllllllez__
0
130
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
230
AI時代に、プロダクトの数だけ積み上がる所有コストをどうエンジニアリングするか / Engineering the Cost of Ownership
kzkmaeda
1
1.1k
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
3
210
10分で知る最近のOmarchy
komagata
0
200
Driving AI Adoption Using In-House GPUs to Serve Qwen
po3rin
2
470
AI活用の現在地、 ちゃんと見えてますか?/XPfest-2026
visional_engineering_and_design
0
170
From Vanilla Kubernetes to a Batteries-Included Platform: Developer Experience at 1,300+ Clusters
yosshi_
0
660
2026/09/10 Spring_Bootから_Jakarta_EE_MicroProfileへの移行
megascus
0
280
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
PRO
1
330
Featured
See All Featured
Mind Mapping
helmedeiros
1
350
Darren the Foodie - Storyboard
khoart
PRO
3
3.9k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
530
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
320
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
840
Claude Code のすすめ
schroneko
67
230k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
310
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
520
First, design no harm
axbom
PRO
2
1.3k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Building Adaptive Systems
keathley
44
3.2k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
340
Transcript
ޙ͚Ͱ ैྔ՝ۚϓϥϯͷ ఏڙΛ։࢝ͨ͠ JP_Stripes Online Hidetaka Okamoto #JP_Stripes
TL;DR • StripeͰैྔ՝ۚϓϥϯͷఏڙͱͯ؆୯ • / ྉۚͷొͱɺSubscriptionͷ࡞ɺ͋ͱ༻ྔͷొ • ෳͷIntervalʢظؒʣΛఏڙ͢Δ߹ɺैྔ՝ۚͷճऩ࣌ظʹҙ •
Stripe BillingͷྉۚλΠϓ͕෯͍ͷͰɺϏδωεاըʹ͍͔ͦ͏ #JP_Stripes
Agenda • ैྔ՝ۚͰͷΦϓγϣϯαʔϏεͷఏڙ։࢝ • ैྔ՝ۚϓϥϯΛఏڙ͢ΔͨΊʹͬͨ͜ͱ • Ϗδωε্ͷஅͰSubscriptionମܥΛม͑ͨ • ʢؾ͔ͮ͵ؒʹʣStripe Billingͷྉۚମܥ͕૿͑ͯͨ
#JP_Stripes
Agenda • ैྔ՝ۚͰͷΦϓγϣϯαʔϏεͷఏڙ։࢝ • ैྔ՝ۚϓϥϯΛఏڙ͢ΔͨΊʹͬͨ͜ͱ • Ϗδωε্ͷஅͰSubscriptionମܥΛม͑ͨ • ʢؾ͔ͮ͵ؒʹʣStripe Billingͷྉۚମܥ͕૿͑ͯͨ
#JP_Stripes
CDNసૹྔͷ ैྔ՝ۚΦϓγϣϯఏڙ։࢝ #JP_Stripes https://www.getshifter.io/ja/cdn-pay-as- you-go-option-is-available/
#JP_Stripes • ֹ݄Ͱͷٻ • 1GB͋ͨΓ0.18 USD • UIͰʮΦϯɾΦϑʯͷΈ
ͳͥैྔ՝ۚʁ • σʔλసૹྔແݶʹ૿͑ΔՄೳੑ͕͋Δ • ࠷্Ґϓϥϯͷར༻Ͱա͢ΔϢʔβʔ͕ొ • ͜Ε·ͰʮXGB = $YʯͷΑ͏ͳݸผܾࡁΛ݄ຖʹ͍ͬͯͨ •
ʮͲΕ͚ͩফඅ͢Δ͔ʯͷ༧ଌ͕Ϣʔβʔʹඞཁ • ʮ͔͑ͯΒܖʯͰαΠτμϯ͕Ұ࣌తͰൃੜ͢Δ • ʮ͚ͬͨͩٻʯͷΦϓγϣϯͰɺ ༧ଌͷखؒͱμϯϦεΫΛճආ #JP_Stripes
શ෦ैྔ՝ۚʹ͠ͳ͍ͷʁ • Shifterᴈ໌ظɺैྔ՝ۚͩͬͨ • Stripe Billing͕ैྔ՝ۚରԠલͷྗٕ࣮ • ʮͲΕ͚ͩٻ͞ΕΔ͔Θ͔Βͳ͍ʯ͕ʮબΕͳ͍ཧ༝ʯʹ • ʮ݄16υϧɺແྉϓϥϯ͋Γʯͷํ͕ΘΔࢢʹ͍ͨ
• ैྔ՝ۚ => ύοέʔδՁ֨ => ύοέʔδ + ैྔ՝ۚ #JP_Stripes
Agenda • ैྔ՝ۚͰͷΦϓγϣϯαʔϏεͷఏڙ։࢝ • ैྔ՝ۚϓϥϯΛఏڙ͢ΔͨΊʹͬͨ͜ͱ • Ϗδωε্ͷஅͰSubscriptionମܥΛม͑ͨ • ʢؾ͔ͮ͵ؒʹʣStripe Billingͷྉۚମܥ͕૿͑ͯͨ
#JP_Stripes
#JP_Stripes • plan(price)Ͱొ • 1୯Ґ = 1GBʹઃఆ • ૯ܭʮ࠷େʯΛར༻
Subscriptionͷૢ࡞ී௨ͷPriceͱશ͘ಉ͡ const subscription = await stripe.subscriptions.create({ customer: 'cus_XXXXX', items: [
{price: 'price_XXXXXXXX'}, ], }); const subscription = await stripe.subscriptions.update(‘sub_xxxx’, { items: [ {price: 'price_XXXXXXXX'}, ], }); #JP_Stripes
ैྔ՝ۚ Subscription create/update ͚ͩͰ1ԁٻͰ͖ͳ͍ #JP_Stripes
createUsageRecordͰʮͬͨྔʯΛొ͢Δ const usageRecord = await stripe.subscriptionItems .createUsageRecord( ‘si_XXXXX', { quantity:
100, timestamp: 1571252444, action: ‘set’ } ); #JP_Stripes
setͩͱ૯ྔɺincrementͩͱՃࢉͰॲཧ͞ΕΔ const usageRecord = await stripe.subscriptionItems .createUsageRecord( ‘si_XXXXX', { quantity:
100, timestamp: 1571252444, action: ‘set’ } ); #JP_Stripes
༻ྔͷूܭํ๏ 1. Amazon EventBridgeͰAWS StepFunctionsΛݺͼग़͢Πϕϯτ࡞ 2. ରͷpriceΛؚΉSubscriptionΛશऔಘ 3. subscriptionຖʹฒྻͰूܭॲཧΛ࣮ࢪ 4.
ूܭ݁ՌΛAWS DynamoDBʹอଘ 5. StripeͷUsageRecords APIʹར༻ྔΛొ #JP_Stripes
Price IDΛ͑ʮରsubscriptionʯ͚ͩҾ͚Δ const subscriptions = await stripe.subscriptions .list({ price: ‘price_xxx’
}); #JP_Stripes
100݅͑ΔͷͰɺ࣮ࡍʹ࠶ؼతͳ࣮ʹ async listSubscriptionRecuecive(priceId, items = [], startingAfter) { const {data:
subscriptions} = await stripe.subscriptions .list({ starting_after: startingAfter, price: priceId, }) const mergedSubscriptions = [...items, ...subscriptions] if (subscriptions.length < 1) { return mergedSubscriptions } const lastSubscriptionId = subscriptions[subscriptions.length - 1].id return listSubscriptionRecuecive(planId, mergedSubscriptions, lastSubscriptionId) } #JP_Stripes
༻ྔGBͰϢʔβʔʹදࣔ • ʮϕʔεϓϥϯͷ༻ྔΛ͍͑ͯΔ࣌ʯ͚ͩٻ͞ΕΔੑ࣭ • ʮԿGB͍ͬͯΔ͔ʯ͕Φϓγϣϯͷٻൃੜલ͔ΒॏཁʹͳΔ • ୯Ձมߋෳྉۚͷఏڙ༧ఆͳ͍ͨΊɺ subscriptionItems.listUsageRecordSummaries͍ͬͯͳ͍ • DynamoDBʹهͨ͠༻ྔGBΛදࣔ͠ɺ
ඞཁͳΒ$0.18/GBΛϑϩϯτͰܭࢉ #JP_Stripes
Agenda • ैྔ՝ۚͰͷΦϓγϣϯαʔϏεͷఏڙ։࢝ • ैྔ՝ۚϓϥϯΛఏڙ͢ΔͨΊʹͬͨ͜ͱ • Ϗδωε্ͷஅͰSubscriptionମܥΛม͑ͨ • ʢؾ͔ͮ͵ؒʹʣStripe Billingͷྉۚମܥ͕૿͑ͯͨ
#JP_Stripes
ैྔ՝ۚΦϓγϣϯɺ ϗεςΟϯάͷSubscriptionͱ ผʹSubscriptionΛ࡞ #JP_Stripes
ैྔ՝ۚͩΖ͏͕Stripe BillingͰͷѻ͍ಉ͡ const subscription = await stripe.subscriptions.create({ customer: 'cus_XXXXX', items:
[ {price: 'price_XXXXXXXX'}, ], }); const subscription = await stripe.subscriptions.update(‘sub_xxxx’, { items: [ {price: 'price_XXXXXXXX'}, ], }); #JP_Stripes
ͨͩ͠ɺ Intervalʢظؒʣͱ Currencyʢ௨՟ʣ ౷Ұ͠ͳ͍ͱμϝ #JP_Stripes
FYI: ଟ௨՟Subscription͔͢͠Δͱɾɾɾʁ https://stripe.com/docs/invoicing/additional-features/multiple-currencies
ෳͷInterval͕ొ͢ΔͨΊɺ༷ͱͯ͠ಠཱ • ຊདྷͳΒɺ1 Subscriptionʹ·ͱΊͨํָ͕ • ֹ݄ͨͩ͠ <-> ֹͷΓସ͕͑͘͠ͳΔ • ֹͷैྔ՝ۚΦϓγϣϯग़ͨ͘͠ͳ͔ͬͨ
• ಠཱͨ͠Subscriptionʹ͢Δ͜ͱͰɺInterval ( Currency )ڝ߹Λճආ • DynamoDBʹattributeΛ1͚ͭͨͩ͠Ͱղܾ #JP_Stripes
ٻλΠϛϯάΛἧ͑ΔͨΊͷ billing_cycle_anchor await stripe.subscriptions.create({ customer: customerId, items: [{ price: priceId,
}], billing_cycle_anchor: moment().add(1, ‘month’) .startOf('month').unix() }) #JP_Stripes
ࠓఏڙ͍ͯ͠ΔSubscriptionʹ ैྔ՝ۚΛՃ͢Δʹ • Currency / Interval͕1ͭͳΒͦͷ··subscriptionʹՃָ͕ • ෳ͋Δ߹ɺʮैྔ՝ۚͰग़͢currency / intervalʯΛܾΊΑ͏
• ରԠͨ͠PriceΛશͯἧ͑ͳ͍ͳΒɺಠཱͨ͠Subscription͕ແ • ٻλΠϛϯάಉ͡λΠϛϯάʹἧ͓͑ͯ͘ͷ͕ • ɾɾɾͱ͍͏͜ͱ͕͋ΔͷͰɺbilling_cycle_anchor͓ͬͯ͜͏ #JP_Stripes
Agenda • ैྔ՝ۚͰͷΦϓγϣϯαʔϏεͷఏڙ։࢝ • ैྔ՝ۚϓϥϯΛఏڙ͢ΔͨΊʹͬͨ͜ͱ • Ϗδωε্ͷஅͰSubscriptionମܥΛม͑ͨ • ʢؾ͔ͮ͵ؒʹʣStripe Billingͷྉۚମܥ͕૿͑
ͯͨ #JP_Stripes
ஈ֊తͳՁ֨ઃఆ
ྔϕʔεͷՁ֨ઃఆ
ύοέʔδ୯Ґͷྉۚମܥ 10Ϣχοτ·Ͱ$10 #JP_Stripes
࡞ΕΔྉۚମܥͷ छྨ͕૿͍͑ͯΔ ↓ ఏڙͰ͖ΔϏδωεͷछྨ͕ ૿ͤΔΑ͏ʹͳΔ
ϝʔϧͰߋ৽ใΛ ͬ͟ͱݟͰ͖Δ Developer Digest #JP_Stripes
https://stripe.dev/
StripeΛཧղ͢Δ StripeΛ͍͜ͳ͢ ↓ ఏҊɾ࣮Ͱ͖Δ ΦϯϥΠϯϏδωεͷ෯͕͕Δ
[એ] 6/26 WordCamp Japan 2021ͰWP with SaaS https://japan.wordcamp.org/2021/session/autumn02/
Thanks! • StripeͰैྔ՝ۚϓϥϯͷఏڙͱͯ؆୯ • / ྉۚͷొͱɺSubscriptionͷ࡞ɺ͋ͱ༻ྔͷొ • ෳͷIntervalʢظؒʣΛఏڙ͢Δ߹ɺैྔ՝ۚͷճऩ࣌ظʹҙ •
Stripe BillingͷྉۚλΠϓ͕෯͍ͷͰɺϏδωεاըʹ͍͔ͦ͏ #JP_Stripes