商户展示码格式
码格式如下所示:
HTTPS://<DOMAIN_NAME>/<STANDARD_IDENTIFIER>/<VERSION>/<GENERAL_PAYLOAD>
在此格式中,包含以下数据元素:
- 域名
- 标准标识符
- 版本
- 通用数据体
域名
域名,也称为网络域,是网络上计算机或计算机组的名称。域名显示为以点分隔的名称字符串。它可用于识别网络资源,例如计算机、网络和服务。
此参数是字符串类型,具有可变长度并且该值由发码方定义。
示例:
以下是域名示例:
QR.SAMPLEDOMAIN.COM
标准标识符
字符串类型。该参数的值定义为MPM,表示该码符合本标准中的格式。
版本
数字类型。此参数表示码格式的版本。
该参数的值定义为3,表示该码符合本标准中的格式版本。
通用数据体
数据体结构
数据体是由 三个数据域构成。第一个域是 数据体标识符,本标准中取值规定为GPLD;第二个域是 长度标识,用来标识第三个域即数据域中的字符数; 数据域是包含了用户展示码中的关键数据元素,是一系列数据对象的组合。
图2.3 数据体的数据结构
每个数据对象都由三个字段组成,其中:
- 第一个字段是4 个字符的标识符,用于标识数据对象。标识符在数据对象中定义。
- 第二个字段是长度字段,它是3位数字类型。它指示此数据对象的值字段中包含的字符数。
- 第三个字段是值字段,其最小长度为一个字符。
数据对象可以是简单数据对象或复杂数据对象。简单数据对象如payload版本PLVS,没有子数据对象。复杂数据对象则有子数据对象。下图是码目录服务数据中CDSD的子数据对象的数据结构:
Figure 2.4 CDSD subdata structure in a payload
图2.4 数据体中CDSD子数据结构
CDSD数据对象的子数据对象 (值字段) 由三个字段组成:
- 第一个字段是一个2位数,数值范围为 01至99,用于标识子数据对象。
- 第二个字段是长度字段,它是一个2位数数字类型,它表示包含在此数据对象的值字段中的字符数。
- 第三个字段是值字段,最小长度为一个字符,最大长度为 99 个字符。
数据标识要求
数据体中的数据表示要求描述如下:
a)数据体中编码的数据对象的值有数字类型、字母数字类型和字符串类型。
b)为了将字符转换为二进制表示形式,此标准使用Unicode标准定义的UTF-8编码。
c)数据体的长度不应超过 512 个字母数字字符。
d)通用数据体应转换为base64,URL的特殊字符正斜杠 (/) 、加号 (+) 和等号 (=)应分别编码为“% 2F",“% 2B"和”% 3D"。
数据对象
本标准中的数据对象如表 2.1.1所示:
表2.1.1 已定义的数据对象
数据对象ID | 类型 | 描述 | 是否必填 |
PLVS | 简单数据对象 | Payload 版本 当前值: 01 | 必填 |
CDSD | 复杂数据对象 | 码目录服务数据 | 有条件的 至少包含CDSD和CIRD数据对象中的一个 |
CIRD | 复杂数据对象 | 发码方参考数据 | |
TSVD | 复杂数据对象 | 交易金额数据 | 可选 |
AMAD | 复杂数据对象 | 其他商户账户数据 | 可选 |
OADD | 复杂数据对象 | 其他附加数据 | 可选 |
码目录服务数据
数据对象ID CDSD表示可由多个数字钱包使用的码目录服务数据,以从CDS平台获取商户的收单信息。它包括表 2.1.2 中定义的子数据对象。
商户可以在CDS平台上注册,并由平台分配商户索引号,该索引号表示在平台上存储商户支持的收单信息记录。如果数据对象存在于通用Payload中,则CDS平台标识符和商户索引号应包含在此数据对象中。详细信息请参见下表:
表2.1.2 码目录服务数据结构
数据对象ID | 长度 | 格式 | 描述 | 是否必填 | ||
CDSD | Var. | 码目录服务数据 |
| |||
| 01 | Var. 长达16 | AN | CDS平台标识符 | 必填 | |
02 | Var. 长达32 | AN | CDS平台上的商户索引编号 该值由CDS平台分配 | 必填 | ||
03 | Var. 长达32 | S | 码目录服务平台URL | 选填 | ||
04 | Var. 长达32 | AN | 商户收单信息隐私保护密钥的密钥推导参数 | 选填 | ||
05 | 02 | N | 密钥推导函数算法标识符 当前值: 01:NIST SP 800-108 02:SM3 | 有条件的 当子数据对象04存在时必填 | ||
06 | 02 | N | 商户收单信息加密算法标识符 当前值: 01: AES-256 02: SM4 | |||
07-89 | 保留以备将来使用 | |||||
| 90-99 | 保留供CDS平台私人使用 | ||||
在CDS平台上,子数据对象 04 ~ 06 用于收单信息的隐私保护。
发码方参考数据
数据对象ID CIRD 表示发码方使用的参考数据,包括子数据对象。
表2.1.3 发码方参考数据结构
业务类型的值在表 2.1.4 中定义如下:
表 2.1.4业务类型标识符的枚举定义
Numeric Value (Range) | Description | Remark |
00 |
| 保留以备将来使用 |
01 | 转账 | 资金转移方案的码。 |
02 - 03 |
| Reserved for future use |
04 | 订单码 (收单场景) | 在获取场景中用于订单支付的码。 |
05 | 店铺码 | 用于标识商店或商家的码。在店内付款方案中,可以使用此码发起付款。 |
06 |
| 用于在社交网络场景中加入组的码。 |
07 | 朋友码 | 用于在社交网络场景中添加朋友/联系人的码。 |
08 | 红包码 | 用于红包场景的码。 |
09 | 订单码 (转账场景) | 资金转移场景中用于订单支付的码。 |
10 |
| 用于引导用户进入协议页面以完成注册过程的码。 |
11 | 充值码 | 用于向用户帐户充值的码。 |
12 | 小程序 | 扫描码后,用户会在用户应用程序中调用一个小程序。 |
13 | 营销 | 用于营销活动的营销码。 |
14 | 游戏 | 用于游戏场景的码。 |
15 | B类转账 | 展示该码后,向用户发起B类资金收款。 |
16 - 99 | RFU | 保留以备将来使用。 |
交易值数据
数据对象IDTSVD指示交易的值信息,包括表 2.1.5 中定义的子数据对象:
表 2.1.5交易价值数据
数据对象ID | 长度 | 格式 | 描述 | 是否必填 | ||
TSVD | Var. | 交易值数据 |
| |||
| 01 | Var., 长达16 | S | 交易金额 该值表示由subdata对象定义的货币单位中的交易金额02。例如,如果子数据对象中的货币码02代表美元, 值100.05意味着交易金额为 100.05 美元。 | 必选 | |
02 | 03 | AN | 交易货币码 ISO 4217 -2008 中定义的字母码或数字码。 | 必选 | ||
03 | Var., 长达 16 | S | 折扣金额 该值表示由子数据对象 02 定义的货币单位中的折扣金额。例如,如果子数据对象 02 中的货币码代表美元,则该字段中的值 3.05 ”表示该交易的折扣金额为 3.05 美元。 | 可选 | ||
04-99 | 保留以备将来使用 | |||||
其他商户账户数据
数据对象IDAMAD表示商户的其他身份信息,可由发码方的合作伙伴识别商户。每个子数据对象的值代表商户的合作伙伴,其格式由发码方或合作伙伴定义,以供私人使用。
表 2.1.6 AMAD dAta
数据对象ID | 长度 | 格式 | 描述 | 是否必填 | ||
AMAD | Var. | 其他商户账户数据 |
| |||
| 01-99 | Var., up to 99 | S | 商户账户信息的其他代表可由合作伙伴发码方。 每个子数据对象的值符合表 2.1.7 中定义的模板。 | 如果该数据对象存在,则至少应存在一个子数据对象 | |
表 2.1.7 AMAD子数据对象模板
AMAD SubData Object ID | Length | Format | Meaning | Presence | ||
01~99 | Var., 长达 99 |
|
| |||
| 01 | 2位数字类型 Var., 长达 16 | S | 发码方合作伙伴标识符 此标识符表示发码方合作伙伴,标识符值在发码方ID列表中。 | 必选 | |
| 02 | 2位数字类型Var. | S | 发码方和合作伙伴可以用来直接识别商户的商户身份信息。 | 必选 | |
例如,如果码发行人同意将商户的标识信息 (例如商户标识符) 放入码中,则它可以使用AMAD记录在案。
其他附加数据
数据对象IDOADD指不包含在其他数据对象中的其他数据,包括表 2.1.8 中定义的子数据对象。
表 2.1.8 其他额外数据
数据对象ID | 长度 | 格式 | 描述 | 是否必填 | ||
OADD | Var. | 其他附加数据 |
| |||
| 99 | 04 | S | CRC 对通用payload中包含的所有数据对象校验和。 | 可选 | |
| 01-98 | 保留以备将来使用 |
更多信息
更多参考资料详见: