Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
JP_Stripes Connect 2019 登壇資料
Search
Yausufmi Nishiyama
March 21, 2019
1
1.5k
JP_Stripes Connect 2019 登壇資料
昨年夏の「10年間使い続けているPayPalからStripeへ? 〜 あるウェブディレクターの軌跡 〜」には実は続編があった?
Yausufmi Nishiyama
March 21, 2019
Tweet
Share
More Decks by Yausufmi Nishiyama
See All by Yausufmi Nishiyama
ECサイト構築にもう1つの選択肢を
nishi_yama
0
8
はじめてのMovable Type 〜ゼロからの始め方・選び方〜
nishi_yama
0
150
Movable Typeで理解する「CMS選びのポイント」
nishi_yama
1
84
Movable Type で育てるウェブサイトエコシステム
nishi_yama
0
38
手軽さや自由度のメリットだけじゃない、SaaS型CMSで作る「クライアントから支持されるウェブサイト」
nishi_yama
0
29
カスタムブロック作成手順のベタープラクティス
nishi_yama
0
4.3k
SaaS型のMovable Typeを選択するウェブサイト制作会社の思考
nishi_yama
0
79
Movable Type対応カート SKELETON CART でStripe決済に対応した話
nishi_yama
0
100
ウェブサイト運営が楽しくなる!MovableType.netを利用したストレスフリーなウェブサイト構築
nishi_yama
1
87
Featured
See All Featured
From Idea to $5000 a Month in 5 Months
shpigford
377
45k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
115
18k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
119
38k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
5
1.5k
Docker and Python
trallard
33
2.7k
Making Projects Easy
brettharned
108
5.5k
Building Effective Engineering Teams - LeadDev
addyosmani
27
1.8k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
9
8.3k
Large-scale JavaScript Application Architecture
addyosmani
503
110k
Why You Should Never Use an ORM
jnunemaker
PRO
50
8.6k
Reflections from 52 weeks, 52 projects
jeffersonlam
344
19k
Atom: Resistance is Futile
akmur
258
25k
Transcript
͍ؒଓ͚͍ͯΔ 1BZ1BM͔Β4USJQFʁ ʙ͋ΔΣϒσΟϨΫλʔͷيʙ +1@4USJQFT$POOFDU BUΤϜΦʔςοΫεגࣜձࣾ
ϋογϡλάɹ+14$ ࣗݾհ
ϋογϡλάɹ+14$ ࡾͷ൧ΑΓ৯Δ͜ͱɺҿΉ͜ͱ͕͖ ࢁɹହ࢙ʢʹ͠·ɹ͢;Έʣ גࣜձࣾδϟΫελϙδγϣϯɹදऔకʗσΟϨΫλʔ ݄ۀɺ݄๏ਓԽʢ๏ਓظʣ .PWBCMF5ZQFΛϓϥοτϑΥʔϜʹΣϒαΠτΛߏங ɹ1SP/FUʢγοΫεɾΞύʔτࣾύʔτφʔʣՃໍ ɹ.5՜ҔΛελʔτ ɹ.5%%$.FFUVQ)0,,"*%0։࠵ ɹΣϒσΟϨΫγϣϯݚڀձʢԾশʣΛελʔτ
ɹ.5%%$.FFUVQ)0,,"*%0։࠵
ϋογϡλάɹ+14$ ւಓࡳຈࢢ͔Βདྷ·ͨ͠
ϋογϡλάɹ+14$ ͓ؾʹೖΓͷॴ େऺञԶྲྀ ϏʔϧʢαοϙϩΫϥγοΫʣ ഋԁʢ੫ผʣ ݄ͷൢച ͓Αͦ ഋʢళฮʣ
ϋογϡλάɹ+14$ ͓ؾʹೖΓͷॴ େऺञԶྲྀ ݩβϯΪˍ৽βϯΪ
ϋογϡλάɹ+14$ δϟΫελϙδγϣϯ
ϋογϡλάɹ+14$ σΟϨΫλʔɹ໊ σβΠφʔʢ)5.-$44ΤϯδχΞʣ໊ .5ςϯϓϨʔτΤϯδχΞɹ໊ ओͳۀ ɾΣϒαΠτߏஙʗΣϒίϯαϧςΟϯά ɾࣗࣾ։ൃൢച ɾΣϒγεςϜ։ൃ ɾҹσβΠϯ΄͔ IUUQTXXXMBUODPN
ϋογϡλάɹ+14$ ຊΠϕϯτͷը૾ܥσβΠϯΛ୲
ϋογϡλάɹ+14$ ࣗࣾϓϩμΫτ4,&-&50/$"35ͷ։ൃɾൢച
ϋογϡλάɹ+14$ 4,&-&50/$"35 w ݄ϦϦʔε w )5.-ςϯϓϨʔτࣜͷγϣοϐϯάΧʔτ w ओʹΣϒσβΠφʔ͞ΜΣϒ੍࡞ձ͚ࣾ w ϓϥάΠϯػߏʹΑΔ֦ுੑ
w ൢച૯͓Αͦຊ
ϋογϡλάɹ+14$ %ZOBNJD1SFWJFX *NBHF6QMPBE6UJMJUZ .PWBCMF5ZQF༻ϓϥάΠϯͷ։ൃɾൢച
ϋογϡλάɹ+14$ *NBHF6QMPBE6UJMJUZ w ݄ϦϦʔε w .PWBCMF5ZQFͷը૾ΞοϓϩʔυػೳΛڧԽ w ݸਓແঈ൛ɺ௨ৗ൛ͱ1SP൛Λఏڙ w ൢച૯͓Αͦຊ
ϋογϡλάɹ+14$ %ZOBNJD1SFWJFX w ݄ϦϦʔε w .PWBCMF5ZQFͷϓϨϏϡʔػೳΛڧԽ w ௨ৗ൛ͱ1SP൛Λఏڙ w ൢച૯͓Αͦຊ
ϋογϡλάɹ+14$ ࠓɺօ͞Μʹ͓͢Δ͜ͱ
ϋογϡλάɹ+14$ 4USJQFΛར༻͢Δ͜ͱͰɺ ϊϯϓϩάϥϚʔͳϫλγͰ ࢥ͍ͬͯͨΑΓͣͬͱ؆୯ʹ Γ͔ͨͬͨ͜ͱ͕࣮ݱͰ͖ͨ
ϋογϡλάɹ+14$ ͜Ε·Ͱར༻͖ܾͯͨ͠ࡁαʔϏε
ϋογϡλάɹ+14$
ϋογϡλάɹ+14$ 1BZ1BM w ɺ·ͩݸਓࣄۀओ w &$αΠτߏஙͷґཔ͕૿͖͑ͯͨ w Ͱ͖Δ͚ͩܦඅ͔͚ͨ͘ͳ͍ w ςετڥʢ4BOECPYʣ͕ར༻Ͱ͖ͨ
w "1*Ͱ͍Ζ͍ΖͰ͖ͦ͏
ϋογϡλάɹ+14$
ϋογϡλάɹ+14$ Ϋϩωί8&#ίϨΫτ w ओʹΫϥΠΞϯτͷ&$αΠτͰಋೖ w ֹ݄ҡ࣋අ͕͔͔Βͳ͍ w ૹ·ͰҰ؏Ͱ͖Δ w Ҿ͖ͰΫϨδοτΧʔυܾࡁ͕ར༻Ͱ͖Δ
w Ϋϩωίͱ͍͏҆৺ײ
ϋογϡλάɹ+14$ 4USJQFΛͬͯΈΑ͏ͱࢥͬͨཧ༝
ϋογϡλάɹ+14$ 1BZ1BMޱ࠲ͷ 4USJQFΛͬͯΈΑ͏ͱࢥͬͨཧ༝ᶃ
ϋογϡλάɹ+14$ 1BZ1BMޱ࠲ʹೖۚ һି ๏ਓޱ࠲ৼସ
ϋογϡλάɹ+14$ 1BZ1BMձһొͷ 4USJQFΛͬͯΈΑ͏ͱࢥͬͨཧ༝ᶄ
ϋογϡλάɹ+14$ 1BZ1BMձһొ͕ඞཁ 1BZ1BMձһ͡Όͳ͍ ۜߦৼࠐͰࢧ͍͍ͨ
ϋογϡλάɹ+14$ 1BZ1BMखྉͷ 4USJQFΛͬͯΈΑ͏ͱࢥͬͨཧ༝ᶅ
ϋογϡλάɹ+14$ *NBHF6QMPBE6UJMJUZ1SP͕ചΕͨ߹ ച্ खྉ ʢ݄ؒച্ສԁະຬʣ Ҿग़खྉ ʢສԁະຬʣ ࠩҾऩೖ 1BZ1BM
ԁ ԁ ʢ ԁʣ ԁ ԁ 4USJQF ԁ ԁ ʢʣ ԁ ͋ͨΓͷֹࠩԁʂ
ϋογϡλάɹ+14$ ࠓ·ͰʹऔΓ͜΅ͯ͠͠·ͬͨ૯ֹ ԁҎ্ʂ
ϋογϡλάɹ+14$ େऺञԶྲྀͷ ੜϏʔϧʢΫϥγοΫʣ ഋҎ্
ϋογϡλάɹ+14$ Ϋϩωί8&#ίϨΫτͷॏେͳ 4USJQFΛͬͯΈΑ͏ͱࢥͬͨཧ༝ᶆ
ϋογϡλάɹ+14$ ͋ΔɺΫϥΠΞϯτ͔Βಧ͍ͨϝʔϧ 'BDFCPPL-*/&ʹషΓ͚ͨ ฐࣾ63-͔ΒϦϯΫ͢ΔͱΫϨδοτΧʔυ͍͕ ͓ࢧ͍खଓ͖Τϥʔͱදࣔ͞Ε·͢ɻ Ͳ͏ʹ͔ͳΓ·ͤΜͰ͠ΐ͏͔ʁ
ϋογϡλάɹ+14$
ϋογϡλάɹ+14$
ϋογϡλάɹ+14$ ϠϚτϑΟφϯγϟϧ͍߹Θͤͨ Ұ෦εϚʔτϑΥϯͷ༷ʹΑΓ (PPHMFΞϓϦʗ:BIPPΞϓϦʹͯ৽نΟϯυΛ։͘ߏஙʹ͓ͯ͠Γ·͢ͱ ඞཁใʢύϥϝʔλʣ͕ൈ͚མͪͯ͠·͏ࣄ͕֬ೝ͞Ε͓ͯΓ·͢ɻ ղܾࡦͱக͠·ͯ͠ɺ৽نΟϯυΛ্ཱͪ͛ͳ͍Α͏ͳߏஙʹ มߋ͍͖ͨͩ·͢ͱɺ্هࣄൃੜ͠ͳ͘ͳΔͱͷࢥΘΕ·͢ɻ
ϋογϡλάɹ+14$ ࣗࣾʮμϯϩʔυൢചʯͷઓ 4USJQFΛͬͯΈΑ͏ͱࢥͬͨཧ༝ᶇ
ϋογϡλάɹ+14$ w ೖۚ֬ೝޙʹσʔλΛૹ͢Δʁ ٳΈͷରԠʁ தରԠʁ ग़ுதରԠʁ w ͕ͦͦࣗར༻ऀଆͩͬͨΒʁ w ෆਖ਼ར༻ͷՄೳੑͱͷτϨʔυΦϑ
ϋογϡλάɹ+14$ 1BZ1BMͰઓʂ
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-synch'; $tx_token = $_GET['tx']; $auth_token = "* αΠτͰൃߦ͞ΕΔIDτʔΫϯΛ͜͜ʹషΓ͚Δ *"; $req .= "&tx=$tx_token&at=$auth_token"; // post back to PayPal system to validate $header .= "POST /cgi-bin/webscr HTTP/1.0\r\n"; $header .= "Content-Type: application/x-www-form-urlencoded\r\n $header .= "Content-Length: " . strlen($req) . "\r\n\r\n"; $fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, // $fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30); // $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errst // Ͱ͖Ε HTTPS ʹͨ͠ํ͕ɺηΩϡϦςΟ͕ߴ·Δ. if (!$fp) { // HTTP ERROR echo "ERROR: HTTP error, [" . $errno . "] " . $errstr . "\n exit(1); } fputs ($fp, $header . $req); // read the body data $res = ''; $headerdone = false; while (!feof($fp)) { $line = fgets ($fp, 1024); if (strcmp($line, "\r\n") == 0) { // read the header $headerdone = true; } else if ($headerdone) { // header has been read. now read the contents $res .= $line; ϋογϡλάɹ+14$
ϋογϡλάɹ+14$ 1BZ1BMͰͷ࠳ં 1%5ʜ ɹ*1/ʜ ɹͳʹͦΕඒຯ͍͠ͷʁ
ϋογϡλάɹ+14$ 4USJQFͳΒͰ͖Δʁ ϚχϡΞϧӳޠ͚ͩͲɺʢ(PPHMFઌੜͷ͓͔͛ͰʣΘ͔Γ͍͢ײ৮Λಘͨ
ϋογϡλάɹ+14$ ॻ͍ͯΈͨɻ w DPOpHQIQΛಡΈࠐΉ w ໊ͱՁ֨Λ)5.-͔Β 1045Ͱड͚औΔ w ϥΠηϯε൪߸Λੜ w
ܾࡁྃޙɺϝʔϧΛૹ৴ w μϯϩʔυը໘ϔࣗಈసૹ ʢ50,&/ɺ*%Λ͢ʣ w μϯϩʔυը໘Ͱ*%Ͱ 63-Λදࣔʢ50,&/Ͱذʣ
ϋογϡλάɹ+14$ Ͱ͖ͨʂ IUUQTXXXKVYUBQPTJUJPOKQJNBHFVQMPBEVUJMJUZ
ϋογϡλάɹ+14$ ͱࢥͬͨΒʜ 4USJQFʹνϟʔδͰ͖͍ͯͳ͍͜ͱ͕໌ ʢςετڥͰͳ͘Ͱ͖͍ͯͨʣ
ϋογϡλάɹ+14$ αϙʔτʹ͍߹ΘͤͯΈΔ τʔΫϯ࡞͞Ε͍ͯ·͕͢ɺ νϟʔδ͕࡞͞Ε͍ͯͳ͍ͨΊɺࢧ͍͕͓ྃͯ͠Γ·ͤΜɻ "1*ʹͯऔಘ͞ΕͨτʔΫϯΛར༻͞Ε·͢ͱɺ νϟʔδ͢Δ͜ͱ͕Ͱ͖·͢ɻ νϟʔδΛ࡞͢Δύϥϝʔλʹ͖ͭ·ͯ͠ɺ ͪ͜ΒΛ͝ࢀর͍ͩ͘͞ IUUQTTUSJQFDPNEPDTBQJDSFBUF@DIBSHF
τʔΫϯ࡞͞Ε͍ͯ·͕͢ɺ νϟʔδ͕࡞͞Ε͍ͯͳ͍ͨΊɺࢧ͍͕͓ྃͯ͠Γ·ͤΜɻ "1*ʹͯऔಘ͞ΕͨτʔΫϯΛར༻͞Ε·͢ͱɺ νϟʔδ͢Δ͜ͱ͕Ͱ͖·͢ɻ νϟʔδΛ࡞͢Δύϥϝʔλʹ͖ͭ·ͯ͠ɺ ͪ͜ΒΛ͝ࢀর͍ͩ͘͞ IUUQTTUSJQFDPNEPDTBQJDSFBUF@DIBSHF ϋογϡλάɹ+14$ αϙʔτʹ͍߹ΘͤͯΈΔ ͪΐͬͱͳʹݴͬͯΔ͔Θ͔Μͳ͍
ϋογϡλάɹ+14$ Α͘ݟΔͱ ؊৺ͳ෦͕ ͬͦ͝Γൈ͚͍ͯͨ ʢͲͷλΠϛϯά͔ෆ໌ʣ ސ٬Λ࡞ DVTUPNFSa4USJQFa$VTUPNFSDSFBUF BSSBZ FNBJMFNBJM
TPVSDFUPLFO νϟʔδΛ࡞ DIBSHFa4USJQFa$IBSHFDSFBUF BSSBZ EFTDSJQUJPOQSPEVDU DVTUPNFSDVTUPNFSJE BNPVOUQSJDF DVSSFODZKQZ
ϋογϡλάɹ+14$ ࣮ࡍʹͬͨ͜ͱ μογϡϘʔυͷʮ։ൃऀʯϝχϡʔͷʮϩάʯ͔Β֘ͷUPLFOTΛ։͘ $IFDLPVUKT͔Βͷ1045ʹର͠Ԡͨ͠༰ʹ͋ΔʮJEUPL@IPHFIPHF ʯΛݟ͚ͭɺ UPL@IPHFIPHF෦Λίϐʔ DIBSHFQIQͷʮސ٬Λ࡞ʯʹ͋ΔTPVSDFʹͦΕΛهೖ
ʢ1045༰ʹ͋ΔϝʔϧΞυϨεFNBJMʹهೖʣ ʮνϟʔδΛ࡞ʯͷEFTDSJQUJPOͱBNPVOUʹهೖ ϝʔϧૹ৴ͳͲෆཁͳ෦আ DIBSHFQIQΛDIBSHF@GVHBQIQͳͲͱϦωʔϜͯ͠Ξοϓϩʔυ ϒϥβ͔ΒDIBSHF@GVHBQIQʹΞΫηε ʢࢲ͜͜Ͱྃը໘ϦμΠϨΫτ͢ΔΑ͏ʹ͠·ͨ͠ʣ
ϋογϡλάɹ+14$ ࣮ࡍʹͬͨ͜ͱ μογϡϘʔυͷʮ։ൃऀʯϝχϡʔͷʮϩάʯ͔Β֘ͷUPLFOTΛ։͘ $IFDLPVUKT͔Βͷ1045ʹର͠Ԡͨ͠༰ʹ͋ΔʮJEUPL@IPHFIPHF ʯΛݟ͚ͭɺ UPL@IPHFIPHF෦Λίϐʔ DIBSHFQIQͷʮސ٬Λ࡞ʯʹ͋ΔTPVSDFʹͦΕΛهೖ
ʢ1045༰ʹ͋ΔϝʔϧΞυϨεFNBJMʹهೖʣ ʮνϟʔδΛ࡞ʯͷEFTDSJQUJPOͱBNPVOUʹهೖ ϝʔϧૹ৴ͳͲෆཁͳ෦আ DIBSHFQIQΛDIBSHF@GVHBQIQͳͲͱϦωʔϜͯ͠Ξοϓϩʔυ ϒϥβ͔ΒDIBSHF@GVHBQIQʹΞΫηε ʢࢲ͜͜Ͱྃը໘ϦμΠϨΫτ͢ΔΑ͏ʹ͠·ͨ͠ʣ Θ͔Δ·Ͱαϙʔτʹ࿈བྷ ϚχϡΞϧΛ܁Γฦ͠ಡΉ ͱʹ͔͘ςετڥͰ֬ೝ
ϋογϡλάɹ+14$ ࣮ࡍɺͲ͏ͩͬͨͷ͔
ϋογϡλάɹ+14$ w ࢥ͍ͬͯͨΑΓ؆୯ɺ͔ࣗ͠༝ʹͰ͖ͨ w ͨͩɺ+BWB4DSJQUͰ؆୯ಋೖʂͳهࣄ͕ଟ͗͢ w DIBSHFQIQ͚ͩͰࢥ͍ͷ··ʹΧελϚΠζ w ςετϞʔυ͔ΒͷΓସ͑؆୯ͩͬͨ w
αϙʔτʢਗ਼͞Μʣʹͱ͓ͯੈʹͳͬͨ
ϋογϡλάɹ+14$ 4MBDLʹ௨͕དྷΔΑ͏ʹͯ͠Έͨ
ϋογϡλάɹ+14$ ͱʹָ͔͍͘͠ʂ
ϋογϡλάɹ+14$ ͍ؒଓ͚͍ͯΔ1BZ1BM͔Β4USJQFʁ ʙ͋ΔΣϒσΟϨΫλʔͷيʙ גࣜձࣾδϟΫελϙδγϣϯɹࢁɹହ࢙ Let’s TRY!