クレジットカード処理を担う「ISO8583」とは? Go言語でパーサーを開発したエンジニアが中身と苦労を明かす謎の「業界の通例」があるカード決済の仕組み

2019年8月29〜31日に開催された「builderscon tokyo 2019」のセッション「クレジットカードの通信プロトコル ISO8583 と戦う」で、カード決済システムを自社開発したエンジニアがISO8583の中身を明かした。

» 2019年09月26日 05時00分 公開
[高橋睦美@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

カンム バックエンドエンジニア 佐野裕章氏

 キャッシュレス決済の一環として、クレジットカード決済の利用がまた広がっている。その裏でやりとりされるデータは、多くの人が想像するJSONやXMLではなく「ISO8583」という規格にのっとって行われている。1980年代に策定されたこの標準規格、扱いはなかなか一筋縄ではいかないようだ。

 Go言語でISO8583のパーサーを書いたというカンムのバックエンドエンジニアである佐野裕章氏は、2019年8月29〜31日に開催された「builderscon tokyo 2019」のセッション「クレジットカードの通信プロトコル ISO8583 と戦う」で、その過程で得られた知見を紹介した。

クレジットカード業界のエコシステム

 クレジットカードというと「Visa」「Mastercard」といった「ブランド」のイメージが強いが、決済処理にはもっと多くの登場人物が関わっている。加盟店、いうなれば「使う場所」を増やす「アクワイアラー」と、利用者を増やす「イシュアー」があり、それぞれがブランドの間で通信を行っている。

クレジットカード業界のエコシステム(各登場人物の関係)

 例えば店舗で何らかの買い物を行う際には、実売り上げが発生する前に仮売り上げの形で「オーソリゼーション」という処理が走り、有効期限や限度額のチェックなどが行われる。

クレジットカード業界のエコシステム(データやお金の流れ)

 佐野氏が所属するカンムはイシュアーとして事業を展開してきた。「これまではブランドとの間に決済代行業者を挟み、そこがISO8583の通信を処理して結果のみを受け取る形だったが、事業拡大に伴って内製化に取り組み、直接ブランドに接続してISO8583を処理しようと試みたことが、今回の話の背景にある」という。

クレジットカード業界のエコシステム(ISO8583)

 「国際標準で、しかもTCPでやりとりされるものだから、パーサーくらいGitHubにあるだろうと思っていたら、各社が独自に拡張を加えていたり、エンコーディングが異なっていたりで、それをそのまま使うわけにはいかなかった。そこで@moriyoshi(GitHubアカウント)さんの協力を得ながら、Go言語でパーサーを書いていった」(佐野氏)

データの種類によってフォーマットが異なったり、入れ子だったり……ISO8583との格闘

 続けて佐野氏は、ISO8583のデータの例を挙げながら、構造を説明していった。

ISO8583のデータの16進数記(「0x0100」がMessage Type、赤文字がBitmap、緑文字がData Element)

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。