1. 程式人生 > 實用技巧 >新加坡EMVCo支付二維碼解析

新加坡EMVCo支付二維碼解析

一:EMVCo 簡介

2017年7月15日,國際晶片卡及支付技術標準組織(EMVCo)在其官網正式面向全球釋出《EMVCo使用者出示二維碼模式技術規範1.0版》,為二維碼支付的全球推廣與應用打造了一套各參與方權責明晰、交易風險合理分散、具有全球實施可行性的技術解決方案,彌補了全球統一二維碼技術規範的空白。

二:新加坡EMVCo碼格式解析

目前新加坡支付的二維碼大部分採用EMVCo格式,如下面所列二維碼:

可以通過支付寶或者二維碼掃碼工具獲得其中的內容:

emvcoStr:

00020101021126560014A00000076200010109sg.lq.www02154000161000000000302015204581253037025802SG5911SG Merchant6009Singapore61060000006304854B

那麼所謂EMVCo的資料格式是什麼呢?

其實字串使用的是TLV資料結構,即tag、length和value

如上面字串所示,tag由兩位組成,之後X位(N)代表value長度,後面N位代表value的值

新加坡地區的支付二維碼,預設“00”開頭,X為2,由此可以對該字串進行解析,結果如下:

TAG:

Tag:00 Length:2 Value:01
Tag:01 Length:2 Value:11
Tag:52 Length:4 Value:5812
Tag:53 Length:3 Value:702
Tag:26 Length:56 Value:0014A00000076200010109sg.lq.www0215400016100000000030201

Tag:58 Length:2 Value:SG
Tag:59 Length:11 Value:SG Merchant
Tag:60 Length:9 Value:Singapore
Tag:61 Length:6 Value:000000
Tag:63 Length:4 Value:854B

subTag:

Tag:26 Length:56 Value:0014A00000076200010109sg.lq.www0215400016100000000030201
Tag:00 Length:14 Value:A0000007620001
Tag:01 Length:9 Value:sg.lq.www
Tag:02 Length:15 Value:400016100000000

Tag:03 Length:2 Value:01

其中subTag代表的是如果某段的value值也符合TLV格式,那麼可以拆分為子tag。

三:含義解析

EMV® 釋出的《QR Code Specification for Payment Systems (EMV QRCPS)》 文件分為

Consumer-Presented Mode 和Merchant-Presented Mode

如果使用者去新加坡地區掃商家端的碼會用到“商戶呈現模式”的EMV碼

根據文件說明,由兩位組成的碼tag從00-99,value最大長度也為99,如截圖所示。

其中每個tag有自己的含義,這類似於國內銀聯8583協議,具體含義如下截圖(部分):

格式解析:ans - Alphanumeric Special 即數字或特殊符號 N -Numeric 數字

tag = “62”下的解析:

所以一個Merchant-PresentedEMVCo二維碼包含了支付所需商家、金額、幣種和必要的附加資訊