2019年8月29〜31日に開催された「builderscon tokyo 2019」のセッション「クレジットカードの通信プロトコル ISO8583 と戦う」で、カード決済システムを自社開発したエンジニアがISO8583の中身を明かした。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
キャッシュレス決済の一環として、クレジットカード決済の利用がまた広がっている。その裏でやりとりされるデータは、多くの人が想像するJSONやXMLではなく「ISO8583」という規格にのっとって行われている。1980年代に策定されたこの標準規格、扱いはなかなか一筋縄ではいかないようだ。
Go言語でISO8583のパーサーを書いたというカンムのバックエンドエンジニアである佐野裕章氏は、2019年8月29〜31日に開催された「builderscon tokyo 2019」のセッション「クレジットカードの通信プロトコル ISO8583 と戦う」で、その過程で得られた知見を紹介した。
クレジットカードというと「Visa」「Mastercard」といった「ブランド」のイメージが強いが、決済処理にはもっと多くの登場人物が関わっている。加盟店、いうなれば「使う場所」を増やす「アクワイアラー」と、利用者を増やす「イシュアー」があり、それぞれがブランドの間で通信を行っている。
例えば店舗で何らかの買い物を行う際には、実売り上げが発生する前に仮売り上げの形で「オーソリゼーション」という処理が走り、有効期限や限度額のチェックなどが行われる。
佐野氏が所属するカンムはイシュアーとして事業を展開してきた。「これまではブランドとの間に決済代行業者を挟み、そこがISO8583の通信を処理して結果のみを受け取る形だったが、事業拡大に伴って内製化に取り組み、直接ブランドに接続してISO8583を処理しようと試みたことが、今回の話の背景にある」という。
「国際標準で、しかもTCPでやりとりされるものだから、パーサーくらいGitHubにあるだろうと思っていたら、各社が独自に拡張を加えていたり、エンコーディングが異なっていたりで、それをそのまま使うわけにはいかなかった。そこで@moriyoshi(GitHubアカウント)さんの協力を得ながら、Go言語でパーサーを書いていった」(佐野氏)
続けて佐野氏は、ISO8583のデータの例を挙げながら、構造を説明していった。
Copyright © ITmedia, Inc. All Rights Reserved.