$30 off During Our Annual Pro Sale. View Details »

カンムとGo

pongzu
April 24, 2021

 カンムとGo

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

    View Slide

  2. Copyright Kanmu, Inc. All right reserved. 2
    田中 悠(ぽんず)
    @pongzu
    @_pongzu
    自己紹介

    View Slide

  3. Copyright Kanmu, Inc. All right reserved.
    バンドルカードを作ってます

    View Slide

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

    View Slide

  5. バンドルカードのバックエンド
    1

    View Slide

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

    View Slide

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

    View Slide

  8. オーソリゼーションとISO8583
    2

    View Slide

  9. Copyright Kanmu, Inc. All right reserved.
    売上データ
    購入OK/NG
    売上データ
    購入OK/NG
    Processor
    オーソリゼーション
    オーソリゼーションとISO8583

    ● 決済をするとお店から売上データがVisaNetを経由して飛んでくる
    ● 売上データはISO8583というプロトコルで定義された電文
    ● Processorは電文を受けて売上データを通して良いのか判断

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. Copyright Kanmu, Inc. All right reserved.
    プロセッシングシステムを作る
    3
    Visaのサーバに対してTCPのコネクションを張って電文を読み書きする

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. 失敗談
    4

    View Slide

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

    View Slide

  23. Copyright Kanmu, Inc. All right reserved.
    ● MessageType=100は通常売上を意味する
    ● 通常売上が来た場合、決済手段によって見るべきフィールドが異なる
    例)非対面の場合はセキュリティコードをチェック、対面決済の場合は暗証番号をチェック、
    ● とはいえ、大まかな処理は共通している
    例)有効期限チェック、残高チェック...etc
    分岐が多いメソッドを定義してしまった
    共通化できるところは共通化し
    たほうが良いのでは...?
    4 失敗談

    View Slide

  24. Copyright Kanmu, Inc. All right reserved.
    最終的にどう書いたか
    4 失敗談

    View Slide

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

    View Slide

  26. 最後に

    View Slide

  27. Copyright Kanmu, Inc. All right reserved.
    We are hiring!
    まだまだやりたいことはたくさん!
    一緒に決済システムをつくりませんか!

    View Slide

  28. Copyright Kanmu, Inc. All right reserved.
    Remo でオフィスアワーやります!
    1. Goプログラムのバイナリを解析して
      秘密のメッセージを見つけよう!
    2. カンム CTO x COO が語る障害/失敗の振り返り
    3. COO achiku が答えるプロダクトや組織の質問タイム
    ぜひ遊びに来てくださいね 😌

    View Slide

  29. Thank you!

    View Slide