Upgrade to Pro — share decks privately, control downloads, hide ads and more …

カンムとGo

E10d51de51c08e913216385be87dc1ca?s=47 pongzu
April 24, 2021

 カンムとGo

E10d51de51c08e913216385be87dc1ca?s=128

pongzu

April 24, 2021
Tweet

Transcript

  1. カンムとGo Yu Tanaka Kanmu, Inc. Go Conference 2021 Spring April

    24,2021
  2. Copyright Kanmu, Inc. All right reserved. 2 田中 悠(ぽんず) @pongzu

    @_pongzu 自己紹介
  3. Copyright Kanmu, Inc. All right reserved. バンドルカードを作ってます

  4. Copyright Kanmu, Inc. All right reserved. 4 バンドルカードのバックエンド オーソリゼーションとISO8583 プロセッシングシステムを作る

    失敗談 1 2 3 目次 4
  5. バンドルカードのバックエンド 1

  6. Copyright Kanmu, Inc. All right reserved. バンドルカードのバックエンド 6 1 データ/お金の流れ

    Processor API  カンム 売上データ 購入OK/NG • カード作成 • カード利用履歴 • ユーザ情報 • チャージリクエスト 通知 売上データ 購入OK/NG
  7. Copyright Kanmu, Inc. All right reserved. バンドルカードのバックエンド 7 1 データ/お金の流れ

    Processor API  カンム 売上データ 購入OK/NG • カード作成 • カード利用履歴 • ユーザ情報 • チャージリクエスト 通知 売上データ 購入OK/NG Go Go
  8. オーソリゼーションとISO8583 2

  9. Copyright Kanmu, Inc. All right reserved. 売上データ 購入OK/NG 売上データ 購入OK/NG

    Processor オーソリゼーション オーソリゼーションとISO8583 2 • 決済をするとお店から売上データがVisaNetを経由して飛んでくる • 売上データはISO8583というプロトコルで定義された電文 • Processorは電文を受けて売上データを通して良いのか判断
  10. Copyright Kanmu, Inc. All right reserved. Processor ISO8583 ISO8583 ISO8583

    • オーソリゼーションを行う為の共通フォーマット • 通信はTCPで行われる • 既にParserがありそうだが、ない オーソリゼーションとISO8583 2
  11. Copyright Kanmu, Inc. All right reserved. 11 オーソリゼーションとISO8583 2

  12. Copyright Kanmu, Inc. All right reserved. 12 オーソリゼーションとISO8583 2

  13. Copyright Kanmu, Inc. All right reserved. オーソリゼーションとISO8583 2

  14. プロセッシングシステムを作る 3

  15. Copyright Kanmu, Inc. All right reserved. 売上データ OK/NG プロセッシングシステムを作る 3

    プロセッシングシステムとは • Visaのサーバに対してTCPのコネクションを張って電文を読み書きする • ISO8583でフォーマットされた電文をParseする • Parseしたデータを見て、決済を通すか判断する Visa Server Processor 売上データ OK/NG
  16. Copyright Kanmu, Inc. All right reserved. プロセッシングシステムを作る 3 Visaのサーバに対してTCPのコネクションを張って電文を読み書きする

  17. Copyright Kanmu, Inc. All right reserved. プロセッシングシステムを作る 3 ISO8583でフォーマットされた電文をParseし、Goの構造体に落とし込む

  18. Copyright Kanmu, Inc. All right reserved. プロセッシングシステムを作る 3 Parseしたデータを使って決済を通すか判断する

  19. Copyright Kanmu, Inc. All right reserved. プロセッシングシステムを作る 3 Parseしたデータを使って決済を通すか判断する

  20. Copyright Kanmu, Inc. All right reserved. プロセッシングシステムを作る 3 Parse後のデータを使って決済を通すか判断する(のテスト)

  21. 失敗談 4

  22. Copyright Kanmu, Inc. All right reserved. 4 失敗談 分岐が多いメソッドを定義してしまった

  23. Copyright Kanmu, Inc. All right reserved. • MessageType=100は通常売上を意味する • 通常売上が来た場合、決済手段によって見るべきフィールドが異なる

    例)非対面の場合はセキュリティコードをチェック、対面決済の場合は暗証番号をチェック、 • とはいえ、大まかな処理は共通している 例)有効期限チェック、残高チェック...etc 分岐が多いメソッドを定義してしまった 共通化できるところは共通化し たほうが良いのでは...? 4 失敗談
  24. Copyright Kanmu, Inc. All right reserved. 最終的にどう書いたか 4 失敗談

  25. Copyright Kanmu, Inc. All right reserved. 決済の手段別に細かく処理を分けた 4 失敗談

  26. 最後に

  27. Copyright Kanmu, Inc. All right reserved. We are hiring! まだまだやりたいことはたくさん!

    一緒に決済システムをつくりませんか!
  28. Copyright Kanmu, Inc. All right reserved. Remo でオフィスアワーやります! 1. Goプログラムのバイナリを解析して

      秘密のメッセージを見つけよう! 2. カンム CTO x COO が語る障害/失敗の振り返り 3. COO achiku が答えるプロダクトや組織の質問タイム ぜひ遊びに来てくださいね 😌
  29. Thank you!