コード決済CPMコード データフォーマット

最終更新:2020/2/26

すべてAndroid版で検証

1次元コードと数字列がエンコードされた2次元コードはそれぞれ先頭6桁~10桁程度がサービス毎に固有の番号で固定されているので、サービス自動判別を実装するのは難しくなさそうに見えます。統一QRコード仕様とEMV仕様はサービス識別用のコードがエンコードされています。

統一QRコード仕様については以下を参照。EMV仕様に関しても多少の説明があります。
https://www.paymentsjapan.or.jp/jpqr/

PayPay

1次元コード (Code128)・2次元コードともに同じ数字列がエンコード

9000 8181 88XX XXXX XXXX XXXX

LINE Pay

1次元コード (Code128)・2次元コードともに同じ数字列がエンコード

9000 0000 00XX XXXX XXX

楽天ペイ

1次元コード (Code128)・2次元コードともに同じ数字列がエンコード

9000 01XX XXXX XXXX

d払い

1次元コード (Code128) は数字列がエンコード2次元コードは文字列 (Base64、統一QRコード仕様)

9000 0002 XXXX XXXX XXXX XX

Origami Pay

1次元コード (Code128)・2次元コードともに同じ数字列がエンコード

9000 0001 XXXX XXXX XXXX XX

メルペイ

1次元コード (Code128) は数字列がエンコード2次元コードは文字列 (Base64EMV仕様?)

3158 9900 XXXX XXXX XXX

ゆうちょPay

1次元コード (Code128) は数字列がエンコード2次元コードは文字列 (Base64EMV仕様?)

3158 99YY XXXX XXXX XXX

YYは31,32,33,34,35,36,37,38,39,40のいずれか

au PAY

1次元コード (Code128) は数字列がエンコード2次元コードは文字列 (独自仕様?)

3158 9921 XXXX XXXX XXX

pring

1次元コード (Code128)・2次元コードともに同じ数字列がエンコード

3158 9995 XXXX XXXX XXX

Jcoin、QUOカードPay、Alipay、WeChat Payなどは検証環境がないため未検証