Slide 1

Slide 1 text

Stripeでコンビニ決済実装したけど ある理由で直前でリリースをやめた話 #JP_Stripes Sapporo vol. 8

Slide 2

Slide 2 text

自己紹介 三浦一樹 北海道テレビ放送株式会社 社内のシステム作ってます スクラムマスターの真似事しながら 企画あげるところから、リリースまで 最近は React/TypeScript でフロント書いたり 最近はマーケティングも?

Slide 3

Slide 3 text

この2年くらいで作ったサービス 動画配信 EC ライブコマース

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

この2年くらいで作ったサービス 動画配信 EC ライブコマース

Slide 6

Slide 6 text

Stripe で 使ってみた サービスたち カスタマイズ可能な決済UI サブスクリプションの管理 Elements Billing コンビニ決済も

Slide 7

Slide 7 text

DEMO

Slide 8

Slide 8 text

ドキュメントがすごい

Slide 9

Slide 9 text

コンビニ決済を実装してみた

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

コンビニ決済! 動画配信

Slide 12

Slide 12 text

コンビニ決済! 動画配信 セコマ使える!!

Slide 13

Slide 13 text

詳しくは西山さんのブログを!

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

No content

Slide 19

Slide 19 text

あれあれ

Slide 20

Slide 20 text

おやおや、、

Slide 21

Slide 21 text

手数料考えてなかった! 売上の 半分以上 手数料!!

Slide 22

Slide 22 text

これってあり?

Slide 23

Slide 23 text

これってあり? まぁ無いよねw

Slide 24

Slide 24 text

これってあり? まぁ無いよねw ですよねーーw

Slide 25

Slide 25 text

リリース前日に入口削除

Slide 26

Slide 26 text

ドキュメントをちゃんと読もう!w

Slide 27

Slide 27 text

仕様はしっかり確認しましょうw

Slide 28

Slide 28 text

コンビニ決済って 元々なんで入れたんだっけ

Slide 29

Slide 29 text

コロナで開催がなくなった音楽ライブ

Slide 30

Slide 30 text

コロナで開催がなくなった音楽ライブ 10代のライブキッズたちに音楽を楽しむ場所を クレジットカード以外の決済方法を ライブのオンライン配信実現の暁には!!

Slide 31

Slide 31 text

ちなみに、コンビニ決済の返金

Slide 32

Slide 32 text

決済確定が遅れて飛んでくるので ECの方が発送までの処理がめんど くさいので、また考えます笑

Slide 33

Slide 33 text

以上!!

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

Stripe の webhook どうやって受け取ってます? (雑談形式) #JP_Stripes Sapporo vol. 8

Slide 36

Slide 36 text

システム設計してて 困ったところがあったので みんなどうやってるのかなー (相談雑談)

Slide 37

Slide 37 text

冪等性 べき とう せい

Slide 38

Slide 38 text

API

Slide 39

Slide 39 text

API 冪等キー

Slide 40

Slide 40 text

Charge API PaymentIntent API

Slide 41

Slide 41 text

何となくわかった

Slide 42

Slide 42 text

webhook

Slide 43

Slide 43 text

webhook 決済成功・失敗

Slide 44

Slide 44 text

webhook 重複あり

Slide 45

Slide 45 text

webhook 重複して届く可能性がある webhook をみなさんどうやって 処理してますか? webhook のイベント全部保存して 毎回なめるの?? 重複あり

Slide 46

Slide 46 text

#JP_Stripes

Slide 47

Slide 47 text

みなさんなら どうやって作ります?

Slide 48

Slide 48 text

webhook 重複あり

Slide 49

Slide 49 text

webhook 重複あり { "id": "evt_2Zj5zzFU3a9abcZ1aYYYaaZ1", "object": "event", "api_version": "2022-11-15", "created": 1633887337, "data": { "object": {...} } 2発目が飛んでくる時間はそんなに遅れてこないので イベントの保存はしておく必要はあるけど 全部が全部保存しておく必要はない (2分間だけとか?) ElastiCache Redis キャッシュにイベント保存しておいて、TTLで消える ようにしておいて Lambdaの前にSQSを入れなさい TTLとか保存期間超えちゃった場合も怖いので 後段の処理で格納した後のDBなんかをチェックして

Slide 50

Slide 50 text

webhook 重複あり PK id: evt_XXXX { "id": "evt_2Zj5zzFU3a9abcZ1aYYYaaZ1", "object": "event", "api_version": "2022-11-15", "created": 1633887337, "data": { "object": {...} } DynamoDB Streams PUT 変更ない分は 飛んでこない?