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
1.9k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
カンムとGo
pongzu
April 24, 2021
More Decks by pongzu
See All by pongzu
Goで実装するブランドネットワークとの接続ポイント
pongzu
2
3.6k
外部コマンドの実行を含む関数のテスト
pongzu
0
3.2k
SQLFormatter written in Go
pongzu
2
3.2k
Other Decks in Technology
See All in Technology
JAWS-UG初心者支部#88わいわい初心塾(夏休みの宿題やったかGit編)
otsuki
0
150
Nav2、Nav3 ... はたまた自作?〜 作って理解する Nav3 の設計意図 〜 / Nav2, Nav3 ... or Build Your Own? — Understanding Nav3's design intent by building it from scratch
yanzm
0
250
20260906 「AWS運用入門」著者が教える、運用業務への生成AI活用入門
masaruogura
0
240
その指示、Bobにしっかり伝わってる?初心者でも即実践できる プロンプト/コンテキスト設計のコツ
muehara
1
200
AI活用の現在地、 ちゃんと見えてますか?/XPfest-2026
visional_engineering_and_design
0
160
Autonomous AI Databaseサービス・アップデート(FY27)/ adb-service-update-jp-fy27
oracle4engineer
PRO
0
130
多摩川(.dev)ランニング入門 / Tamagawa.dev#3
fujiwara3
3
390
推論の観測、できていますか? 〜 Google Cloud Gemini Enterprise Agent Platformで 3つの Gemini モデルを実測して踏んだ、評価の罠 〜
shukob
PRO
0
160
なぜSRE・セキュリティは評価されないのか?守りの組織を事業成長エンジンに変えた実践
cscengineer
PRO
3
2.3k
AndroidでHDRメディアを「壊さずに」扱う
chigichan24
0
410
IoTハンズオンの舞台裏
shirouz
2
150
Sony-DroidKaigi2026
sony
1
320
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
ラッコキーワード サービス紹介資料
rakko
1
4.8M
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Building the Perfect Custom Keyboard
takai
2
860
Joys of Absence: A Defence of Solitary Play
codingconduct
1
480
Test your architecture with Archunit
thirion
2
2.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Music & Morning Musume
bryan
47
7.4k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
450
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
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!