$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Stripeでよかった
Search
nof
December 15, 2018
Technology
0
140
Stripeでよかった
JP_Stripes (Stripe ユーザーグループ)in 岡山 キックオフ
WebPayから乗り換えた話・仮売上の例
nof
December 15, 2018
Tweet
Share
More Decks by nof
See All by nof
オープンセミナー2020@広島 発表資料
nof
1
1.1k
Rails使いのNuxt.js入門 - 銀座Rails#12
nof
1
2.2k
Other Decks in Technology
See All in Technology
非CUDAの悲哀 〜Claude Code と挑んだ image to 3D “Hunyuan3D”を EVO-X2(Ryzen AI Max+395)で動作させるチャレンジ〜
hawkymisc
1
170
Challenging Hardware Contests with Zephyr and Lessons Learned
iotengineer22
0
180
今からでも間に合う!速習Devin入門とその活用方法
ismk
1
640
形式手法特論:CEGAR を用いたモデル検査の状態空間削減 #kernelvm / Kernel VM Study Hokuriku Part 8
ytaka23
2
450
re:Invent 2025 ~何をする者であり、どこへいくのか~
tetutetu214
0
210
re:Invent2025 コンテナ系アップデート振り返り(+CloudWatchログのアップデート紹介)
masukawa
0
340
[JAWS-UG 横浜支部 #91]DevOps Agent vs CloudWatch Investigations -比較と実践-
sh_fk2
1
250
Lambdaの常識はどう変わる?!re:Invent 2025 before after
iwatatomoya
1
450
法人支出管理領域におけるソフトウェアアーキテクチャに基づいたテスト戦略の実践
ogugu9
1
220
研究開発×プロダクトマネジメントへの挑戦 / ly_mlpm_meetup
sansan_randd
0
110
エンジニアとPMのドメイン知識の溝をなくす、 AIネイティブな開発プロセス
applism118
4
1.2k
AWS re:Invent 2025で見たGrafana最新機能の紹介
hamadakoji
0
320
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
97
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Typedesign – Prime Four
hannesfritz
42
2.9k
The Language of Interfaces
destraynor
162
25k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
4 Signs Your Business is Dying
shpigford
186
22k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.6k
Code Reviewing Like a Champion
maltzj
527
40k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Transcript
StripeͰΑ͔ͬͨ ࣮ྫΛަ͑ͯྑ͔ͬͨ͜ͱΛհ SonicGarden ࡔխढ़
୭Ͱ͔͢ • ౡ͔Βདྷ·ͨ͠ • ࡔխढ़ ʮ͔͞ʯ ͱݺΕ͍ͯ·͢ • Ԭࢁͷษڧձʹͨ·ʹདྷ·͢ •
גࣜձࣾιχοΫΨʔσϯ ϓϩάϥϚ • Rails͍ͬͯ·͢
͢͜ͱ • Webpay ͔Β Γ͑ͨ • Ծച্ͷྫ • ࠓͷʹͰͨ Stripe
API
WebPay͔ΒΓ͑ͨ
WebPayαʔϏεऴྃ (Stripeͱͷग़ձ͍) • 2016/10/31 Ξφϯε • 2017/04/30 ՝ۚػೳఀࢭ • ͞Εͨ࣌ؒ
6ϲ݄ WebPayͰ՝ۚॲཧΛ࣮͍ͯ͠Δ αʔϏε͕͋ͬͨͷͰҠߦ͕ඞཁ
Ҡߦઌͷબఆɿ Stripe ʹܾΊͨཧ༝ • ࠓճҠߦ͕ඞཁʹͳͬͨαʔϏεͰ͍ͬͯͨ͜ͱ • ձඅɿఆظ՝ۚ • دۚɿ՝ۚ •
ޓੑ͕ߴ͍ • Charge, Customer جຊతͳΦϒδΣΫτͲ͏ΒҰॹͷߏ • Χʔυձࣾͷ࠶৹ࠪෆཁ • ళࢠػೳ (Stripe Connect) ʹڵຯ
ͬͨ͜ͱ • ϓϩάϥϜमਖ਼ • ςετ • CustomerσʔλҠɾఆظ՝ۚҾ͖ܧ͗ • WebPayΞΧϯτ͕Ұ্ͭͩͬͨؔɺҠͷࡍʹ͓٬͞ΜΛ ަ͑ͨΩϟονϘʔϧΛ
• Ҡ࡞ۀͪ 10/31 12݄ 1݄ 3݄ WebPayऴྃΞφϯε બఆ मਖ਼ ςετ 2݄ 3݄ Stripe՝ۚରԠϦϦʔε CustomerσʔλҠߦ ఆظ՝ۚҾ͖ܧ͗
ϓϩάϥϜमਖ਼ (৽نͷ՝ۚॲཧΛStripeʹ͚Δ) • charge_key ɺܾࡁΛҰҙʹ͢ΔΩʔΛσʔλϕʔεʹΧϥϜՃ • WebPay API ͍ͬͯΔͱ͜ΖΛ Stripe
API ͏Α͏ʹΤϯυϙΠ ϯτมߋ • WebHook ॲཧՃ ఆظ՝ۚ༻ʹStripeͱWebPayΛಉ࣌ར༻ • Stripeಛ༗ͷॲཧՃ ఆظ՝ۚ༻ʹPlanͱ͍͏֓೦ొ
ςετ • stripe-ruby-mock gem • mockαʔόʔͰͳ͘ɺstripe-ruby ͷAPIίʔϧ෦Λmock
σʔλҠ • ᶃ WebPay - Stripe ސ٬ใɾΧʔυใҠ • WebPay -
Stripe ؒͰސ٬ใҠ (PCI DSS४ڌ͍ͯ͠ΔͨΊՄೳ) • StripeଆͰ৽͘͠࡞ΒΕͨCustomerใΛJSONͰఏڙ͍͖ͨͩɺγεςϜͷUserใͱඥ͚ • ᶄ ఆظ՝ۚ༻σʔλ࡞ • Plan ࡞ • WebPayͷRecursionΛఀࢭɺ৽͘͠StripeଆʹSubscriptionΛ࡞Δ (trial_end ʹ͍Εͯɺ͔ͦ͜Β։ ࢝)
ײ • Stripe αϙʔτ͞Μʹ૬ஊ͠ͳ͕Β࣮ࢪͰ͖ͨ • ಙӬ͞ΜʹΑΖ͓͑͘͠Լ͍͞ • σʔλߏ΄΅ಉͩͬͨ͡ͷͰɺॿ͔ͬͨ • WebPayΞΧϯτ͕ҰͭͳͷͰɺҠͷࡍʹ͓٬͞ΜΛަ͑ͨ
ΩϟονϘʔϧΛΔ͜ͱʹɻStripeෳΞΧϯτΛඥ͚ΒΕ ΔͷͰྑ͍ • StripeͰΑ͔ͬͨ
Ծച্ͷྫ
Ծച্ • ·ܾͩࡁ͠ͳ͍͚Ͳ༩৴͚ͩ֬อ • ͋ͱ͔ΒܾࡁͰ͖Δ • τϨʔχϯάͷ༧γεςϜͰ͍·ͨ͠
• capture: false Ͱ Charge ͢Δ͚ͩ • ޙɺCharge.capture Ͱܾࡁྃ
ߟྀ࿙Ε • ༩৴ͷ֬อظݶ7ؒ • 7ؒΑΓઌͷ༧Λͱͬͯ͠·ͬͨ • τϨʔχϯάʹΤϥʔɻܾࡁͰ͖ͳ͍ • ྉۚΛ͔͘ɺޙৼࠐΈ͔ɻɻɻ •
େৎͩͬͨʂ • Stripe͔ͬͯͨΒେৎͩͬͨʂ
͔Β͘Γ • Stripe Ͱސ٬ใΛཧͯ͘͠ΕΔ Customer Λ࡞͍ͬͯͨ • Customer ʹΫϨδοτΧʔυใؚ·ΕΔ •
৽͘͠ Charge Λ࡞ܾͬͯࡁޭ • StripeͰΑ͔ͬͨ • ॿ͔ͬͨͱಉ࣌ʹɺCustomerใݫॏʹѻΘͶͱ࠶ೝࣝ • ͖ͳ͚ܾͩࡁͰ͖ͪΌ͏ʁ
ࠓͷʹग़ͨ Stripe API
Customer (͓٬͞Μ) • ՝ۚͰ͋Ε࡞Βͳͯ͘ྑ͍͚Ͳɺ࡞ͬͯ͋Δͱ Customer Λ࣠ʹ ߦಈΛัଊͰ͖ͯศར • γεςϜͷϢʔβʔͱඥ͚·͢ •
ΫϨδοτΧʔυͷใͱඥ͍͍ͯ·͢
Charge (ܾࡁ) • ྉۚΛઃఆͯ͠create͢Ε՝ۚͰ͖·͢ • Customerͱඥ͚Մೳ • ࡞Δͱ͖ʹ࣮ച্ɺԾച্Λ੍ޚͰ͖·͢ (capture =
true/false)
Refund (ฦۚ) • ฦۚ͠·͢ • Ծച্ʹͨ͠ChargeͷऔΓফ͜͠ͷAPIͰΓ·͢
Plan (ఆظ՝ۚͷϓϥϯ) • ఆظ՝ۚͷϧʔϧͰ͢ • ྉۚɺΠϯλʔόϧ(ɺिɺ݄ɺ)ΛܾΊ·͢
Subscription (ఆظॲཧ) • Customer͝ͱͷఆظॲཧϧʔϧ • PlanʹैͬͯChargeΛ࡞ͬͯ͘Ε·͢ • ։࢝ɾऴྃΛઃఆͨ͠Γ • τϥΠΞϧظؒޙɺఆظॲཧ։࢝
Έ͍ͨͳ͜ͱͰ͖·͢
ଞʹ • ֤ΦϒδΣΫτʹmetadataΛೖΕ͓͚ͯɺμογϡϘʔυͰݕࡧ Ͱ͖ͨΓ • ΤϯδχΞ͚ʹΘ͔Γ͍͢υΩϡϝϯταϯϓϧ • ૉΒ͍͠ Stripe ίϛϡχςΟ
• StripeͰΑ͔ͬͨ
͓ΘΓ