Slide 1

Slide 1 text

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 Ω ο Ϋ Φ ϑ

Slide 2

Slide 2 text

· ͱ Ί • StripeͷϝλσʔλΛ࢖͏͜ͱͰɺϓϥϯ৘ใΛҰݩ؅ཧ • webhook΍API͕๛෋ͳͷͰɺඞཁʹԠͯ͡֎෦DB࿈ܞ΋Ͱ͖Δ • StripeΛ࢖͍ࠐΜͰɺαʔϏεӡӦ؅ཧΛָʹ͍ͯ͜͠͏

Slide 3

Slide 3 text

H i d e t a k a O k a m o t o • AMIMOTO / Shifter • WordBenchKyoto • WordCamp Kyoto 2017

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

S h i f t e r ͷ ܾ ࡁ ؅ ཧ • Ϣʔβʔ৘ใ͸Amazon Cognito User PoolsͰ؅ཧ • ར༻ྉۚ͸StripeͷSubscriptionΛར༻ • ϓϥϯ੍ݶͳͲͷ৘ใ͸͢΂ͯStripeͷplans_metadataʹू໿

Slide 6

Slide 6 text

S h i f t e r ͷ ϓ ϥ ϯ ੍ ݶ ʢ Ұ ෦ ʣ • ϓϩδΣΫτʢαΠτʣ࡞੒਺ • ಠࣗυϝΠϯઃఆͷՄ൱ • ֎෦αʔϏε࿈ܞ • etc…

Slide 7

Slide 7 text

ϓ ϥ ϯ ৘ ใ Λ Ͳ ͜ Ͱ ؅ ཧ ͢΂ ͖ ͔ʁ

Slide 8

Slide 8 text

ϓ ϥ ϯ ৘ ใ ؅ ཧ ͷ ΞΠ σΟΞ • ΫϥΠΞϯτΞϓϦʹϋʔυίʔσΟϯά • APIόοΫΤϯυʹϋʔυίʔσΟϯά • ઐ༻ͷDBΛ࡞੒ͯ͠؅ཧ • ʁʁʁ

Slide 9

Slide 9 text

ϓ ϥ ϯ ৘ ใ ؅ ཧ ͷ ΞΠ σΟΞ • ΫϥΠΞϯτΞϓϦʹϋʔυίʔσΟϯά • APIόοΫΤϯυʹϋʔυίʔσΟϯά • ઐ༻ͷDBΛ࡞੒ͯ͠؅ཧ • SaaSΛ࢖͏

Slide 10

Slide 10 text

A P I ό ο Ϋ Τ ϯ υ ʹ ϋʔ υ ί ʔ σΟ ϯ ά • APIॲཧ෦෼ʹJSON / arrayͰϋʔυίʔσΟϯά • APIଆͰϓϥϯ੍ݶͷ൑ఆΛ͔͚΍͍͢ • APIԽ͓͚ͯ͠͹ϑϩϯτͰ΋࢖͑Δ • ϝϯςφϯεੑ࠷ѱ • ࠷ऴखஈɾԠٸॲஔతͳରԠ

Slide 11

Slide 11 text

ઐ ༻ D B Λ ࡞ ੒ ͢ Δ • webΞϓϦͷఆੴ͸ͨͿΜ͜Ε • RDBͰ͋Ε͹Ϣʔβ৘ใͳͲͱͷϦϨʔγϣϯ΋૊ΊΔ • ϓϥϯ৘ใͳͲ΁ͷݕࡧ΋؆୯ • ϝϯςφϯεɾ؅ཧίετ͕૿͕͑ͪͳͷ͕τϨʔυΦϑ

Slide 12

Slide 12 text

ϓ ϥ ϯ ৘ ใ ؅ ཧ ͷ ΞΠ σΟΞ • ΫϥΠΞϯτΞϓϦʹϋʔυίʔσΟϯά • APIόοΫΤϯυʹϋʔυίʔσΟϯά • ઐ༻ͷDBΛ࡞੒ͯ͠؅ཧ • SaaSΛ࢖͏

Slide 13

Slide 13 text

S a a S Ͱ ϓ ϥ ϯ ৘ ใ ؅ ཧ • σʔλ؅ཧʹ࢖͑Δ֎෦αʔϏε͕ଟ਺͋Δ • ݕࡧ༏ઌͳΒ͹AlgoriaɺϫʔΫϑϩʔॏࢹͳΒkintoneͳͲɻɻɻ • ʮܾࡁʹStripe࢖͍ͬͯΔͳΒɺܾࡁपΓ͸·ͱΊͯ؅ཧ͠Α͏ʯ

Slide 14

Slide 14 text

S t r i p e ͷ ϝλ σ ʔ λ Λ ࢖ ͏

Slide 15

Slide 15 text

S t r i p e ϝλ σ ʔ λ Λ ࢖ ͬ ͨ ཧ ༝ • ੍ݶ஋ͷมߋ΍ϓϥϯ௥ՃͳͲ΁ͷରԠ଎౓Λ༏ઌ͔ͨͬͨ͠ • ݕࡧ͸ߟྀ͠ͳ͍σʔλ͹͔Γͩͬͨ • ݕࡧ͠ͳ͍ͳΒɺDBͰ͋Δඞཁ͸ͳ͍ • StripeͰ؅ཧ͢Ε͹ɺϓϥϯपΓ͕̍ՕॴͰ؅ཧͰ͖Δ

Slide 16

Slide 16 text

Ϋ ϥ Π Ξ ϯ τΞ ϓ Ϧ Ͱ ͷ Φϖ Ϩ ʔ γ ϣ ϯ • API͔ΒStripeͷϓϥϯҰཡΛऔಘʢGET /v1/plans ʣ • API಺ͰϨεϙϯε͔Βෆཁͳ஋Λ࡟আ • ϓϥϯҰཡͷσʔλΛϑϩϯτʹදࣔ • customer_id / plan_idͰsubscriptionΛߋ৽

Slide 17

Slide 17 text

࣮ ࡍ ͷ ද ࣔ 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

Slide 18

Slide 18 text

A P I ό ο Ϋ Τ ϯ υ Ͱ ͷ Φϖ Ϩ ʔ γ ϣ ϯ • Cognito User Pools͔ΒStripeͷcustomer idΛऔಘ • ΧελϚʔ৘ใऔಘ(GET /v1/customers/{customer_id} • ΧελϚʔ৘ใ͔ΒϓϥϯϝλσʔλΛऔಘ • ϝλσʔλͷ஋Λ΋ͱʹɺϦΫΤετͷ࣮ߦՄ൱Λ൑அ

Slide 19

Slide 19 text

T i p s ʢ ΍ Β ͔ ͠ ͨ ͜ ͱ ɾ ஫ ҙ ఺ ͳ Ͳ ʣ

Slide 20

Slide 20 text

ϝλ σ ʔ λ ͷ ࣋ ͪ ํ ʹ ͭ ͍ͯ • Key - ValueܗࣜͰσʔλΛอ࣋͢Δ • Value͸͔ͳΒͣStringܕͰอଘ͞ΕΔ • true / falseͰ൑ఆ͢Δ࣌΋StringܕͰ൑ఆ͠Α͏

Slide 21

Slide 21 text

A W S C o g n i t o U s e r P o o l s ͱ ͷ ૊ Έ ߹ Θ ͤ • Stripe plan΋AWS Cognito User Pools΋ϝλσʔλͰݕࡧͰ͖ͳ͍ • StripeʹCognito ͷUser ID , CognitoʹStripeͷCustomer IDΛอଘ • Ϣʔβʔऔಘ -> ΧελϜଐੑऔಘ -> Customerऔಘͱ͍͏खଓ͖ʹ

Slide 22

Slide 22 text

A P I ͷ ύ ϑ Υ ʔϚ ϯε • GET v1/customer/{customer_id}ͷϨεϙϯε͸େ͖Ί • ϓϥϯϝλσʔλΛඞཁͱ͢Δ৔ॴ͕ଟ͍৔߹ɺ౎౓APIίʔϧ͸ඇޮ཰ • ඞཁʹԠͯ͡CognitoͷΧελϜଐੑ΍ઐ༻DB΁ͷΠϯσοΫε΋ݕ౼ • Ұݩ؅ཧ͢Δʹ͸Stripe APIΛ࢖ͬͨμογϡϘʔυ͕͋Δͱศར͔΋

Slide 23

Slide 23 text

ϓ ϥ ϯ ϝλ σ ʔ λ Λ ݕ ࡧ ͠ ͨ ͍ ৔ ߹ • ݕࡧʹ͸ରԠ͍ͯ͠ͳ͍ • Sigmaʹplans_metadata͕͋Δ • ϑϩϯτ͔Β͸ఘΊΔʢผDBԽʣ

Slide 24

Slide 24 text

· ͱ Ί • StripeͷϝλσʔλΛ࢖͏͜ͱͰɺϓϥϯ৘ใΛҰݩ؅ཧ • webhook΍API͕๛෋ͳͷͰɺඞཁʹԠͯ͡֎෦DB࿈ܞ΋Ͱ͖Δ • StripeΛ࢖͍ࠐΜͰɺαʔϏεӡӦ؅ཧΛָʹ͍ͯ͜͠͏

Slide 25

Slide 25 text

༨ ஊ

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

ϒϩ ά ΍ Q i i t a ʹ ॻ ͘ ͱ ͖ ͸ ɺ “ s k _ t e s t _ X X X X ” ͱ ͔ ʹ ॻ ͖ ׵ ͑ͯ ͓ ͜͏