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
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
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
260
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
740
コミュニティ運営から 中の人に変わって感じたこと
hideokamoto
0
160
Developerが Developer Advocateになった話 / dev-rel-meetup-tokyo-71
hideokamoto
0
410
Jamstack開発者のための App Runner入門
hideokamoto
1
570
WordPressでの webサイト制作2022 / ngk2022s
hideokamoto
0
510
JavaScript(TypeScript)で メディアサイトを インフラから構築する方法 / jsconf-jp-2021
hideokamoto
2
4.5k
AWS上でStripeを利用したアプリをより安全にデプロイする方法 /jaws-pankration-2021
hideokamoto
1
260
Shifter Headlessと Headless WordPressの紹介
hideokamoto
0
2.3k
Stripe & Next.js + AWS Amplify で会員 + 定期課金機能 / JP_Stripes20210903
hideokamoto
7
3.3k
Other Decks in Technology
See All in Technology
IoTとは〜? 数字で見るSORACOM UG【SORACOM UG Explorer 2026】
soracom
PRO
0
190
E2Eってつらくないですか?E2Eの管理コストを下げる手段とその実践
akaboshinit
6
3k
並列度を下げたら速くなった — go build の重複コンパイルを実測で見る
tomoaki25
0
110
[dbts2026]数十PBの超巨大データ×AI活用を支えるSnowflakeの実力〜大規模環境におけるアーキテクチャと運用のリアル〜
y_matsubara
0
100
"AWSはちょっと苦手"でも大丈夫。AWS Blocks で手軽に作る Flutter のバックエンド #FlutterKaigi
tacck
PRO
0
160
Claude Codeで作ったアプリを安全に公開する/Built with Claude Japan 2026
yoshidashingo
0
180
公共分野での生成AI活用
toru_kubota
1
240
AI AgentによるEmbedded SREの取り組み
tgidgd
1
350
SLOを阻む不安
sraku2159
0
230
複雑な業務システムを高速でつくるため、チーム全員をつくれる人へ
ayakurabuchi
0
140
AIコーディングはじめました
miso
0
150
Active Directory と Entra ID のむむむな関係
murachiakira
PRO
3
1.6k
Featured
See All Featured
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
60k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
320
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
350
Documentation Writing (for coders)
carmenintech
77
5.6k
Visualization
eitanlees
153
17k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1.1k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
510
Music & Morning Musume
bryan
48
7.5k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Designing Experiences People Love
moore
143
24k
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