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
カンムとGo
Search
pongzu
April 24, 2021
Technology
2
1.7k
カンムとGo
pongzu
April 24, 2021
Tweet
Share
More Decks by pongzu
See All by pongzu
Goで実装するブランドネットワークとの接続ポイント
pongzu
2
3.3k
外部コマンドの実行を含む関数のテスト
pongzu
0
2.9k
SQLFormatter written in Go
pongzu
2
3k
Other Decks in Technology
See All in Technology
バクラクによるコーポレート業務の自動運転 #BetAIDay
layerx
PRO
1
940
o11yツールを乗り換えた話
tak0x00
2
1k
アカデミーキャンプ 2025 SuuuuuuMMeR「燃えろ!!ロボコン」 / Academy Camp 2025 SuuuuuuMMeR "Burn the Spirit, Robocon!!" DAY 1
ks91
PRO
0
140
Strands Agents & Bedrock AgentCoreを1分でおさらい
minorun365
PRO
7
320
Segment Anything Modelの最新動向:SAM2とその発展系
tenten0727
0
730
ZOZOTOWNの大規模マーケティングメール配信を支えるアーキテクチャ
zozotech
PRO
0
250
마라톤 끝의 단거리 스퍼트: 2025년의 AI
inureyes
PRO
1
740
オブザーバビリティプラットフォーム開発におけるオブザーバビリティとの向き合い / Hatena Engineer Seminar #34 オブザーバビリティの実現と運用編
arthur1
0
380
【CEDEC2025】『Shadowverse: Worlds Beyond』二度目のDCG開発でゲームをリデザインする~遊びやすさと競技性の両立~
cygames
PRO
1
360
「Roblox」の開発環境とその効率化 ~DAU9700万人超の巨大プラットフォームの開発 事始め~
keitatanji
0
120
Eval-Centric AI: Agent 開発におけるベストプラクティスの探求
asei
0
120
生成AIによるソフトウェア開発の収束地点 - Hack Fes 2025
vaaaaanquish
21
10k
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
51
8.8k
Building an army of robots
kneath
306
45k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Mobile First: as difficult as doing things right
swwweet
223
9.9k
Making Projects Easy
brettharned
117
6.3k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
283
13k
The Straight Up "How To Draw Better" Workshop
denniskardys
235
140k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
A Tale of Four Properties
chriscoyier
160
23k
RailsConf 2023
tenderlove
30
1.2k
Transcript
カンムとGo Yu Tanaka Kanmu, Inc. Go Conference 2021 Spring April
24,2021
Copyright Kanmu, Inc. All right reserved. 2 田中 悠(ぽんず) @pongzu
@_pongzu 自己紹介
Copyright Kanmu, Inc. All right reserved. バンドルカードを作ってます
Copyright Kanmu, Inc. All right reserved. 4 バンドルカードのバックエンド オーソリゼーションとISO8583 プロセッシングシステムを作る
失敗談 1 2 3 目次 4
バンドルカードのバックエンド 1
Copyright Kanmu, Inc. All right reserved. バンドルカードのバックエンド 6 1 データ/お金の流れ
Processor API カンム 売上データ 購入OK/NG • カード作成 • カード利用履歴 • ユーザ情報 • チャージリクエスト 通知 売上データ 購入OK/NG
Copyright Kanmu, Inc. All right reserved. バンドルカードのバックエンド 7 1 データ/お金の流れ
Processor API カンム 売上データ 購入OK/NG • カード作成 • カード利用履歴 • ユーザ情報 • チャージリクエスト 通知 売上データ 購入OK/NG Go Go
オーソリゼーションとISO8583 2
Copyright Kanmu, Inc. All right reserved. 売上データ 購入OK/NG 売上データ 購入OK/NG
Processor オーソリゼーション オーソリゼーションとISO8583 2 • 決済をするとお店から売上データがVisaNetを経由して飛んでくる • 売上データはISO8583というプロトコルで定義された電文 • Processorは電文を受けて売上データを通して良いのか判断
Copyright Kanmu, Inc. All right reserved. Processor ISO8583 ISO8583 ISO8583
• オーソリゼーションを行う為の共通フォーマット • 通信はTCPで行われる • 既にParserがありそうだが、ない オーソリゼーションとISO8583 2
Copyright Kanmu, Inc. All right reserved. 11 オーソリゼーションとISO8583 2
Copyright Kanmu, Inc. All right reserved. 12 オーソリゼーションとISO8583 2
Copyright Kanmu, Inc. All right reserved. オーソリゼーションとISO8583 2
プロセッシングシステムを作る 3
Copyright Kanmu, Inc. All right reserved. 売上データ OK/NG プロセッシングシステムを作る 3
プロセッシングシステムとは • Visaのサーバに対してTCPのコネクションを張って電文を読み書きする • ISO8583でフォーマットされた電文をParseする • Parseしたデータを見て、決済を通すか判断する Visa Server Processor 売上データ OK/NG
Copyright Kanmu, Inc. All right reserved. プロセッシングシステムを作る 3 Visaのサーバに対してTCPのコネクションを張って電文を読み書きする
Copyright Kanmu, Inc. All right reserved. プロセッシングシステムを作る 3 ISO8583でフォーマットされた電文をParseし、Goの構造体に落とし込む
Copyright Kanmu, Inc. All right reserved. プロセッシングシステムを作る 3 Parseしたデータを使って決済を通すか判断する
Copyright Kanmu, Inc. All right reserved. プロセッシングシステムを作る 3 Parseしたデータを使って決済を通すか判断する
Copyright Kanmu, Inc. All right reserved. プロセッシングシステムを作る 3 Parse後のデータを使って決済を通すか判断する(のテスト)
失敗談 4
Copyright Kanmu, Inc. All right reserved. 4 失敗談 分岐が多いメソッドを定義してしまった
Copyright Kanmu, Inc. All right reserved. • MessageType=100は通常売上を意味する • 通常売上が来た場合、決済手段によって見るべきフィールドが異なる
例)非対面の場合はセキュリティコードをチェック、対面決済の場合は暗証番号をチェック、 • とはいえ、大まかな処理は共通している 例)有効期限チェック、残高チェック...etc 分岐が多いメソッドを定義してしまった 共通化できるところは共通化し たほうが良いのでは...? 4 失敗談
Copyright Kanmu, Inc. All right reserved. 最終的にどう書いたか 4 失敗談
Copyright Kanmu, Inc. All right reserved. 決済の手段別に細かく処理を分けた 4 失敗談
最後に
Copyright Kanmu, Inc. All right reserved. We are hiring! まだまだやりたいことはたくさん!
一緒に決済システムをつくりませんか!
Copyright Kanmu, Inc. All right reserved. Remo でオフィスアワーやります! 1. Goプログラムのバイナリを解析して
秘密のメッセージを見つけよう! 2. カンム CTO x COO が語る障害/失敗の振り返り 3. COO achiku が答えるプロダクトや組織の質問タイム ぜひ遊びに来てくださいね 😌
Thank you!