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

More Decks by pongzu

Other Decks in Technology

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!