Slide 1

Slide 1 text

ྑ͍Developer ExperienceΛ ఏڙ͢ΔυΩϡϝϯτͷTIPS Yasuhiko Tokunaga, User Operations D E V L R E L M E E T U P

Slide 2

Slide 2 text

ಙӬ ߁඙ • User Operations @ Stripe • @y_toku

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

ྑ͍Developer ExperienceΛ ఏڙ͢ΔυΩϡϝϯτͷTIPS Yasuhiko Tokunaga, User Operations D E V L R E L M E E T U P

Slide 5

Slide 5 text

HTTP R. F!e"d!ng UC Irv!ne J. Gettys Compaq/W3C J. Mogu" Compaq H. Frystyk W3C/MIT L. Mas!nter Xerox P. Leach M!crosoft T. Berners-Lee W3C/MIT June 1999 Network Work!ng Group Request for Comments: 2616 Obso"etes: 2068 Category: Standards Track Hypertext Transfer Protoco! -- HTTP/1.1 Status of th!s Memo Th!s document spec!f!es an Internet standards track protoco" for the Internet commun!ty, and requests d!scuss!on and suggest!ons for !mprovements. P"ease refer to the current ed!t!on of the "Internet Off!c!a" Protoco" Standards" (STD 1) for the standard!zat!on state and status of th!s protoco". D!str!but!on of th!s memo !s un"!m!ted. Copyr!ght Not!ce Copyr!ght (C) The Internet Soc!ety (1999). A"" R!ghts Reserved.

Slide 6

Slide 6 text

HTTP 404 Not Found

Slide 7

Slide 7 text

HTTP The requested resource could not be found but may be available again in the future. 403 Forbidden

Slide 8

Slide 8 text

HTTP 402 Payment Required Reserved for future use.

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

const stripe = require('stripe') ('sk_test_BQokikJOvBiI2HlWgH4olfQ2'); const charge = await stripe.charges.create({ amount: 1980, currency: 'jpy', source: 'tok_visa', description: 'Payment', statement_descriptor: 'Rocket Rides', destination: { amount: 800, account: 'driver_account_id' } }); 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Slide 13

Slide 13 text

Engagement
 ਝ଎ͳಋೖ T I P # 1

Slide 14

Slide 14 text

਺ඵͰࢼͤΔ

Slide 15

Slide 15 text

਺ඵͰࢼͤΔ

Slide 16

Slide 16 text

਺ඵͰࢼͤΔ

Slide 17

Slide 17 text

਺ඵͰࢼͤΔ

Slide 18

Slide 18 text

਺ඵͰࢼͤΔ

Slide 19

Slide 19 text

ϓϩάϥϛϯάݴޠ ΑΓଟ͘ͷݴޠΛαϙʔτ T I P # 2

Slide 20

Slide 20 text

ͦΕͧΕͷݴޠͰ εχϖοτΛ༻ҙ

On your server, grab the Stripe token in
 the POST parameters submitted by your form. From there, it’s one simple API call to charge the card:

<% code_tutorial :tutorial_charge_create %>

Slide 21

Slide 21 text

υΩϡϝϯτ ύʔιφϥΠζԽ͔ͭಈత T I P # 3

Slide 22

Slide 22 text

J A M E S Y U , C O - F O U N D E R O F PA R S E The way to a developer’s heart is great documentation.” “

Slide 23

Slide 23 text

υΩϡϝϯτͷύʔιφϥΠζԽ Personalizing the documentatio

Slide 24

Slide 24 text

υΩϡϝϯτͷύʔιφϥΠζԽ Personalizing the documentatio

Slide 25

Slide 25 text

υΩϡϝϯτͷύʔιφϥΠζԽ Personalizing the documentatio

Slide 26

Slide 26 text

࣮ࡍʹମݧͰ͖Δ Demo

Slide 27

Slide 27 text

࣮ࡍʹମݧͰ͖Δ Demo

Slide 28

Slide 28 text

ϢʔβσʔλΛ༻͍ͨಈతυΩϡϝϯτ

Slide 29

Slide 29 text

ϢʔβσʔλΛ༻͍ͨಈతυΩϡϝϯτ

Slide 30

Slide 30 text

ιʔείʔυ͔Β API ϦϑΝϨϯεΛੜ੒ class ChargeAPIResource < AbstractAPIResource required :amount, Integer required :currency, String … document :amount, 'A positive integer in the…' document :currency, 'Three-letter ISO currency…' … end

Slide 31

Slide 31 text

Τϥʔίʔυͱϝοηʔδ
 ຊ౰ʹ໾ʹཱͭ΋ͷΛઃܭ͢Δ T I P # 4

Slide 32

Slide 32 text

ߴ౓ͳΤϥʔϝοηʔδ >> Stripe::Customer.create Stripe::AuthenticationError: No API key provided. Set your API key using "Stripe.api_key = ". You can generate API keys from the Stripe web interface. See https://stripe.com/api for details, or email [email protected] if you have any questions.

Slide 33

Slide 33 text

ߴ౓ͳΤϥʔϝοηʔδ >> Stripe.api_key = "BQokikJOvBiI2HlWgH4olfQ2"
 >> Stripe::Charge.retrieve("ch_17SOe5QQ2exd2S") Stripe::InvalidRequestError: (Status 404)
 No such charge: ch_17SOe5QQ2exd2S; a similar object exists in live mode, but a test mode key was used to make this request.

Slide 34

Slide 34 text

ϦΫΤετϩάΛશͯ࢒͢

Slide 35

Slide 35 text

Support T I P # 5

Slide 36

Slide 36 text

ςΫχΧϧαϙʔτΛదٓߦ͏

Slide 37

Slide 37 text

API ͷΞοϓσʔτ
 όʔδϣϯΞοϓ͞Εͯ΋ ϢʔβͷίʔυΛյ͞ͳ͍ T I P # 6

Slide 38

Slide 38 text

API όʔδϣϯͷޓ׵ੑ

Slide 39

Slide 39 text

API Ξοϓσʔτ࣌ͷ Gate ͷ׆༻ :versions: - :version: 2016-07-06 :new_gates: - :gate: hide_canceled_subscriptions :description: >- You can now view canceled subscriptions
 by specifying `status=canceled` or `status=all` when listing subscriptions. In addition, you can now retrieve a canceled subscription by its ID.

Slide 40

Slide 40 text

API ͷΞοϓάϨʔυʹؔ͢Δϒϩά

Slide 41

Slide 41 text

Think bigger
 Developer Success Λ໨ࢦ͢ T I P # 7

Slide 42

Slide 42 text

RunKit Λ࢖ͬͯ΋ͬͱγϯϓϧʹ

Slide 43

Slide 43 text

RunKit Λ࢖ͬͯ΋ͬͱγϯϓϧʹ

Slide 44

Slide 44 text

Thank you! Yasuhiko Tokunaga, User Operations