手机支付协议规范商用版 V15.docx

上传人:b****5 文档编号:29352635 上传时间:2023-07-22 格式:DOCX 页数:71 大小:463.25KB
下载 相关 举报
手机支付协议规范商用版 V15.docx_第1页
第1页 / 共71页
手机支付协议规范商用版 V15.docx_第2页
第2页 / 共71页
手机支付协议规范商用版 V15.docx_第3页
第3页 / 共71页
手机支付协议规范商用版 V15.docx_第4页
第4页 / 共71页
手机支付协议规范商用版 V15.docx_第5页
第5页 / 共71页
点击查看更多>>
下载资源
资源描述

手机支付协议规范商用版 V15.docx

《手机支付协议规范商用版 V15.docx》由会员分享,可在线阅读,更多相关《手机支付协议规范商用版 V15.docx(71页珍藏版)》请在冰豆网上搜索。

手机支付协议规范商用版 V15.docx

手机支付协议规范商用版V15

 

手机支付协议规范

(商用版)

 

V1.4

2009-10-10

陈君

 

目录:

1概述3

2文件结构概要图3

3操作流程4

3.1银行卡交易流程及协议4

3.1.1刷卡交易流程图4

3.1.2步骤说明6

3.1.3指令集7

3.2电子钱包交易流程及协议14

3.2.1电子钱包圈存交易流程图14

3.2.2圈存交易步骤说明16

3.2.3圈存交易指令集17

3.2.4电子钱包消费交易流程图24

3.2.5消费交易步骤说明25

3.2.6消费交易指令集26

3.3电子票据交互流程及协议33

3.3.1电子票据读取部分33

3.3.2电子票据写入部分36

3.3.3指令集38

3.4身份识别交互流程及协议46

3.4.1身份识别交互流程图46

3.4.2步骤说明47

3.4.3指令集48

3.5卡片公共信息交互流程及协议54

3.5.1交互流程图54

3.5.2步骤说明56

3.5.3指令集57

4安全机制62

4.1加解密算法62

4.2密钥管理63

4.2.1共存应用63

4.2.2密钥的独立性63

4.2.3密钥的属性63

4.2.4密钥的使用64

4.2.5过程密钥的产生64

1概述

本文档讲述了手机支付在POS终端机上应用时,交易流程及接口协议,供开发人员使用。

本规范定义POS机与SEIMMA卡之间的通讯规范及协议。

本规范中定义的四种应用类型,允许相互嵌套使用。

2文件结构概要图

图-2.0文件结构图

3操作流程

下图为设备使用示意图:

图-3.0设备使用示意图

3.1银行卡交易流程及协议

POS机与SEIMMA卡交互过程中,使用下述交易指令,实现刷卡操作。

POS机与SEIMMA卡交互时,将使用SEIMMA卡的手机放置于距离读写器10cm范围内。

 

3.1.1刷卡交易流程图

下图为SEIMMA卡刷卡交易流程图,POS机通过以下流程,与SEIMMA卡进行刷卡交易。

图-3.1.0刷卡交易流程

3.1.2步骤说明

(1)POS机上支付类别选择:

收银员在POS机上将支付类别选为“手机银行卡消费”,并且在“手机消费选择”菜单中选择“银行卡消费”。

效果图参考《手机支付在POS机终端上的应用》中“银行卡刷卡应用”。

(2)POS机发送寻找手机指令:

POS机发送CONNECT指令,此时读写器会通过无线通道寻找周围可用于支付的SEIMMA卡,并返回找寻结果。

 

(3)POS机发送刷卡交易初始化指令:

POS机发送InitMC命令,SEIMMA卡收到后给出响应。

POS机校验MAC1值,若MAC1正确,且手机响应为“执行正常”信息,则进入步骤4;

若MAC1校验错误,或响应为错误信息或没有收到SEIMMA卡响应,则发送DISCONNECT命令,终止连接,POS机提示相关错误信息。

(4)POS机发送读取磁道信息指令:

POS机发送ReadMC命令,SEIMMA卡收到命令后校验POS机给出MAC2值是否正确,若MAC2正确,则SEIMMA卡回复磁道信息数据;若MAC2错误,则SEIMMA卡回复MAC2校验错误信息。

POS机判断SEIMMA卡响应为“执行正常”信息时,则进入步骤5;若SEIMMA卡响应为错误信息或没有收到SEIMMA卡响应,则发送DISCONNECT命令,终止连接,POS机提示相关错误信息。

(5)POS机输入交易金额:

收银员在POS机上输入交易金额后进入步骤6。

目前单笔刷卡消费最大金额为9999.99。

(6)用户输入交易密码:

密码输入环节支持两种方式:

(一)用户在密码键盘上输入6位密码后,POS将数据发送到银行端,银行反馈正常,则进入步骤7;否则,POS机显示“帐户或密码错误”或者其他相关错误信息,然后发送DISCONNECT命令,交易结束。

(二)POS机上设置一个功能键,按一下直接跳过密码输入环节,进入步骤7。

(方式二暂预留)

(7)POS机打印交易明细,并保存记录:

POS机打印出交易明细,并且将此次交易记录保存在POS机内,供当天对帐时查阅、打印。

进入步骤8。

(8)POS机将交易记录返回给手机:

POS机发送Transmit_Consume_Note命令,SEIMMA卡收到后给出响应。

若SEIMMA卡响应为“执行正常”时,则进入步骤9。

若SEIMMA卡响应为错误信息或没有收到SEIMMA卡响应,则由POS机根据实际情况,决定是否需要重发该命令。

若不再发送该命令,则进入步骤9。

(9)POS机发送读取签名信息指令:

若在步骤3,InitMC命令的应答数据中,表示签名字节长度2个字节为“00H00H”,则POS提示“无签名图片”,并且跳过该步骤,发送DISCONNECT命令,交易完成。

否则,POS机重复发送Read_Share_Sign命令(见3.5.3.4),直到签名数据读取完毕,每次SEIMMA卡收到命令后给出响应。

POS机判断每次响应是否为“执行正常”信息,若全部为“执行正常”则显示签名图片,然后发送DISCONNECT命令,交易完成。

若响应为错误信息或没有收到SEIMMA卡响应,可考虑重发,或者发送DISCONNECT命令,终止连接,POS机提示“读取签名失败”信息。

 

3.1.3指令集

3.1.3.1CONNECT(寻找手机)

功能:

CONNECT命令用于建立读写器与使用SEIMMA卡手机之间的连接。

具体指令格式请参考《读写器(POPmate)上位机通信协议1.7》文档中“找卡”章节

 

3.1.3.2InitMC(刷卡交易初始化)

3.1.3.2.1定义和范围

POS机发送该命令,初始化银行卡卡消费,把POS终端机编号和密钥索引号传给SEIMMA卡,并从SEIMMA卡中获取ReadMC命令的响应数据长度,签名字节数,SEIMMA卡的ID号,4字节随机数和MAC1值。

POS机通过验证MAC1值,可以辨别SEIMMA卡的真伪。

3.1.3.2.2命令报文

代码

值(16进制表示)

CLA

80

INS

11

P1

00

P2

00

Lc

07

DATA

见表2

Le

13

表1-InitMC命令报文

3.1.3.2.3命令报文数据域

InitMC命令的数据内容如下:

说明

长度(字节)

终端机编号(POS机)

6

密钥索引

1

表2-InitMC命令报文数据域

 

3.1.3.2.4响应报文数据域

响应报文的数据内容如下:

说明

长度(字节)

ReadMC指令响应数据长度

1

签名字节长度

2

SEIMMA卡的ID号

8

伪随机数

4

MAC1

4

表3-InitMC命令的响应报文数据域

计算MAC1的过程密钥由密钥标识符指定的银行卡消费子密钥分别对(4字节伪随机数+终端机编号的前4位)加密生成过程密钥的左8位。

再对(终端机编号的后2位+800000000000)加密生成过程密钥的右8位。

MAC1由卡中过程密钥对(1字节ReadMC指令响应数据长度+2字节签名字节长度+8字节SEIMMA卡的ID号+4字节伪随机数)进行MAC计算生成,计算过程中的初始向量为“0000000000000000”。

3.1.3.2.5响应报文状态码

此命令正常执行返回表4所描述的数据域和状态码’6113’

具体状态码的含义如下表所示:

SW1SW2

意义

6113

命令执行正常,有19个字节的响应数据。

可用GetResponse命令取回响应数据。

6700

Lc长度不正确

6982

不满足安全条件(不满足密钥访问条件)

6983

认证方式已被锁定

6A82

文件未找到

6A86

P1,P2参数不正确

6A88

未知道密钥文件

6E00

命令类型CLA错

9403

密钥索引不支持

表4-InitMC命令的响应报文状态

3.1.3.3ReadMC(读银行卡信息指令)

3.1.3.3.1定义和范围

该命令用于将银行卡的磁道信息从SEIMMA卡中读出。

3.1.3.3.2命令报文

ReadMC命令报文如下:

代码

值(16进制表示)

CLA

80

INS

13

P1

00

P2

00

Lc

04

DATA

见表6

Le

XX—表示所要返回的数据长度

表5-ReadMC命令报文

 

3.1.3.3.3命令报文数据域

ReadMC命令的数据内容如下:

说明

长度(字节)

MC2

4

表6-ReadMC命令报文数据域

MAC2由终端中过程密钥对(6字节POS终端机编号+4字节伪随机数)进行MAC计算生成,计算过程中的初始向量为“0000000000000000”,其中过程密钥与计算MAC1时的过程密钥相同。

MAC2的过程密钥计算方法与MAC1的过程密钥一致。

见3.1.3.2.4章节,关于MAC1过程密钥计算部分内容。

3.1.3.3.4响应报文数据域

ReadMC命令响应报文数据域说明:

说明

字节

磁道数据

Le

表7-ReadMC响应报文数据域

磁道数据用Tag(标签),Len(长度),Val(值)表示,第一磁道的Tag=0x01;第二磁道Tag=0x02;第三磁道Tag=0x03.例如:

第一磁道在SEIMMA卡中的值为:

0x11,22,33.第二磁道在SEIMMA卡中的值为:

0xaa,0xbb.第三磁道在SEIMMA卡中的值为:

0x77,0x88则返回的磁道数据表示为:

0x010x030x110x220x330x020x020xaa0xbb0x030x020x770x88.

以上磁道数据用十六进制数表示,第一磁道最大长度为79个字节,第二磁道最大长度为40个字节,第三磁道最大长度为107个字节。

磁道数据格式请参考《银行磁条卡磁道格式和使用规范》。

 

3.1.3.3.5响应报文状态码

状态字节的含义如下表所示:

SW1SW2

意义

61XX

命令执行正常,有’XX’个字节的响应数据。

可用GetResponse命令取回响应数据。

6700

Lc长度不正确

6901

交易不连贯

6988

MAC不正确

6A86

P1,P2参数不正确

6E00

命令类型(CLA)错

表8-ReadMC命令响应报文状态码

 

3.1.3.4Transmit_Consume_Note(返回消费记录指令)

3.1.3.4.1定义和范围

POS终端机用该命令将消费信息返回给SEIMMA卡。

3.1.3.4.2命令报文

Transmit_Consume_Note命令报文:

代码

值(16进制表示)

CLA

84

INS

15

P1

00

P2

00

Lc

4F

DATA

消费记录信息+MAC3,见表10

Le

不存在

表9-Transmit_Consume_Note命令的命令报文

3.1.3.4.3命令报文数据域

Transmit_Consume_Note命令的命令报文数据域

说明

字节

商户名称(国标码,不足20字节补空格)

20

商家号(ASCII码)

15

终端编号(ASCII码)

4

交易类型(字节码)

1

卡号长度(BCD码)

1

卡号内容(BCD码,不足10字节补0x00)

10

交易金额(BCD码,整数4个字节,小数2个字节)

6

批次号(BCD码)

3

流水号(BCD码)

3

系统参考号

6

日期(终端)(BCD码)

3

时间(终端)(BCD码)

3

MAC3

4

表10-Transmit_Consume_Note命令的命令报文数据域

MAC3由卡中过程密钥对(商户名称+商家号+终端编号+交易类型+卡号长度+卡号内容+交易金额+批次号+流水号+系统参考号+日期(终端)+时间(终端))进行MAC计算生成,计算过程中的初始向量为“0000000000000000”。

MAC3的过程密钥计算方法与MAC1的过程密钥一致。

见3.1.3.2.4章节,关于MAC1过程密钥计算部分内容。

3.1.3.4.4响应报文数据域

响应报文的数据域不存在。

3.1.3.4.5响应报文状态码

正常执行返回‘9000’

状态字节的含义如下表所示:

SW1SW2

意义

9000

命令正确执行

6581

写EEPROM不成功

6700

Lc长度不正确

6901

交易不连贯

6982

不满足密钥使用条件

6983

认证方式被锁定

6988

MAC值不正确

6A82

文件未找到

6A86

P1,P2不正确

6A88

未找到密钥文件

6E00

不正确的CLA

表11-Transmit_Consume_Note命令的响应报文状态码

3.1.3.5DISCONNECT(中断连接)

功能:

DISCONNECT命令用于结束读写器与SEIMMA卡之间的连接。

具体指令格式请参考《读写器(POPmate)上位机通信协议1.7》文档中“结束数据传输”章节。

 

3.2电子钱包交易流程及协议

POS机与SEIMMA卡在电子钱包交互过程中,使用下列交易指令,实现电子钱包交易操作。

POS机与SEIMMA卡交互时,将使用SEIMMA卡的手机放置于距离读写器10cm范围内。

注意:

圈存交易必须在金融终端上联机进行并要求提交个人密码(PIN),现假设POS机作为金融终端机使用。

 

3.2.1电子钱包圈存交易流程图

下图为电子钱包消费交易流程图,POS机通过以下流程,与SEIMMA卡进行电子钱包消费交易。

图-3.2.0电子钱包消费交易流程

 

3.2.2圈存交易步骤说明

(1)POS机上支付类别选择:

操作员在POS机上将应用类别选为“手机电子钱包圈存”。

(2)POS机发送找卡指令:

POS机发送CONNECT指令,此时读写器会通过无线通道寻找周围可用于支付的SEIMMA卡,并返回找寻结果。

若找卡成功,则进入步骤3,否则,提示“未找到电子钱包”信息,中断操作。

(3)POS机发送圈存初始化指令:

POS机发送INITIALIZEFORLOAD命令,SEIMMA卡收到后给出响应。

POS机判断响应为“执行正常”信息时,则验证卡片回复的MAC1是否有效。

若有效,则进入步骤4;若无效,则发送DISCONNECT命令,终止连接,并提示相关错误信息信息。

若响应为错误信息,则发送DISCONNECT命令,终止连接,并提示相关错误信息信息。

若没有收到SEIMMA卡响应,则由POS机判断是否满足重发INITIALIZEFORLOAD命令条件。

若满足,则再次发送该命令。

若不满足,则发送DISCONNECT命令,终止连接,并提示相关错误信息信息。

(4)POS机发送圈存指令:

POS机发送CREDITFORLOAD命令,SEIMMA卡收到后,判断POS机给出的MAC2值是否正确。

若正确,则返回响应报文数据TAC。

若错误,则返回相应错误信息。

POS机判断响应为“执行正常”信息,则进入步骤5;

若响应为错误信息,则发送DISCONNECT命令,终止连接,并提示相关错误信息。

若没有收到SEIMMA卡响应,则由POS机判断是否满足发送GETTRANSACTIONPROVE命令条件。

若满足,进入步骤6。

若不满足,则发送DISCONNECT命令,终止连接,并提示相关错误信息。

(5)POS机验证TAC:

POS机验证TAC值。

若正确,则发送DISCONNECT命令,显示圈存交易成功,并保存交易明细。

若不正确,则发送DISCONNECT命令,显示圈存交易相关错误信息。

(根据PBOC2.0协议,POS机可以不马上验证TAC值)

(6)POS机发送防插拔指令:

POS机发送GETTRANSACTIONPROVE命令,SEIMMA卡收到后给出响应。

POS机判断响应为“执行正常”信息,则进入步骤5。

响应为错误信息,则发送DISCONNECT命令,终止连接,并提示相关错误信息。

若没有收到SEIMMA卡响应,则由POS机判断是否满足再次发送GETTRANSACTIONPROVE命令条件。

若满足,重复步骤6。

若不满足,则发送DISCONNECT命令,终止连接,并提示相关错误信息。

 

3.2.3圈存交易指令集

3.2.3.1CONNECT(找卡)

功能:

CONNECT命令用于建立读写器与SEIMMA卡之间的连接。

具体指令格式请参考《读写器(POPmate)上位机通信协议1.7》文档中“找卡”章节。

 

3.2.3.2INITIALIZEFORLOAD

3.2.3.2.1定义和范围:

INITIALIZEFORLOAD命令用于初始化圈存交易。

3.2.3.2.2命令报文

代码

CLA

80

INS

50

P1

00

P2

可选值:

‘01’或‘02’;

说明:

‘01’用于ED,‘02’用于EP。

其他值保留。

本协议中使用’02’

Lc

0B

DATA

1字节的密钥索引号+4字节的交易金额+6字节的终端机编号

Le

0F

 

3.2.3.2.3响应报文数据:

如果此命令执行成功,有如下表数据作为响应报文数据,同时在报文数据后面有命令成功执行的状态码为“9000”:

说明

长度(字节)

EP余额

4

EP联机交易序号

2

密钥版本号DLK

1

算法标识DLK

1

伪随机数(SEIMMA卡)

4

MAC1

4

 

3.2.3.2.4MAC1的计算过程:

1.由INITIALIZEFORLOAD指定的密钥对下表数据加密产生8字节过程密钥SK。

数据

长度(字节)

伪随机数

4

EP联机交易序号

2

8000

2

 

2.MAC1由卡中的过程密钥SK对下表数据按MAC的生成方法生成,初始8字节全为0.

数据

长度(字节)

交易前余额

交易金额

4

4

交易类型标识

1

终端机编号

6

说明:

交易类型标识:

02H圈存06H消费

 

3.2.3.2.5响应报文状态码:

其他情况时,此时不存在之前的报文数据,存在响应报文状态码,其情况如下表:

SW1SW2

意义

9000

命令正确执行

6581

写EEPROM不成功

6700

Lc长度不正确

6985

使用条件不满足

6D00

INS不支持或错误

6A86

参数P1P2不正确

6A81

不支持此功能(卡片被锁定)

6E00

不正确的CLA

61xx

正确执行,xx表示响应数据长度,可用下文的getresponse指令取回数据

9403

密钥索引不支持

 

3.2.3.3CREDITFORLOAD

3.2.3.3.1定义和范围:

CREDITFORLOAD命令用于圈存交易。

3.2.3.3.2命令报文

代码

CLA

80

INS

52

P1

00

P2

00

Lc

0B

DATA

4字节的交易日期(主机)+3字节的交易时间(主机)+4字节的MAC2

Le

04

3.2.3.3.3响应报文数据:

如果此命令执行成功,有如下表数据作为响应报文数据,同时在报文数据后面有命令成功执行的状态码为“9000”:

说明

长度(字节)

TAC

4

 

3.2.3.3.4TAC的计算方法:

TAC的计算不采用过程密钥方式,它用DTK左右8位字节异或运算的结果对以下数据进行加密运算来产生(按所列顺序)。

初始8字节值全为0。

数据

长度(字节)

电子钱包余额(交易后)

4

电子钱包联机交易序号(加1前)

交易金额

交易类型标识

2

4

1

终端机编号

6

交易日期(主机)

4

交易时间(主机)

3

 

3.2.3.3.5MAC2的产生过程:

MAC2由卡中的过程密钥SK对下表数据按MAC计算方法生成的,初始8字节值全为0。

数据

长度(字节)

交易金额

4

交易类型标识

1

终端机编号

6

交易日期

4

交易时间

3

3.2.3.3.6响应报文状态码:

其他情况时,此时不存在之前的报文数据,存在响应报文状态码,其情况如下表:

SW1SW2

意义

9000

命令正确执行

6581

写EEPROM不成功

6700

Lc长度不正确

6985

使用条件不满足

6D00

INS不支持或错误

6A86

参数P1P2不正确

6A81

不支持此功能(卡片被锁定)

6E00

不正确的CLA

61xx

正确执行,xx表示响应数据长度,可用下文的getresponse指令取回数据

9302

MAC无效

 

3.2.3.4GETTRANSACTIONPROVE命令

3.2.3.4.1定义和范围

GETTRANSACTIONPROVE命令提供了一种在交易处理过程中拔出并重插卡后卡片的恢复机制。

在POS终端发给SEIMMA卡一个命令以更新电子钱包余额时,卡片总会回送一个交易验证码TAC,以证明更新已经发生。

一旦余额更新成功,可以通过GETTRANSACTIONPROVE命令获得TAC.

如果在命令已经执行结束,而终端还未收到响应之前,卡片被拔出,终端将处于不知卡片是否被更新的不定状态。

在这种情况下,终端可以用GETTRANSACTIONPROVE命令取TAC,如果返回9000,表示卡片更新成功,否则表示失败,要完成此次交易,必须从交易初始化重新开始。

3.2.3.4.2命令报文

GETTRANSACTIONPROVE命令报文

代码

CLA

‘80’

INS

‘5A’

P1

‘00’

P2

要取的MAC或/和TAC所对应的交易类型标识。

(02H圈存06H消费)

Lc

‘02’

Data

要取的MAC或/和TAC所对应的EP联机或脱机交易序号。

长度2字节

Le

‘08’

GETTRANSACTIONPROVE命令报文

 

3.2.3.4.3响应报文数据域

如果命令中指定的交易类型标识和EP联机或脱机交易序号对应的MAC或TAC可用,则响应报文数据域见表22:

说明

长度

MAC

4

TAC

4

注意:

圈存时,GETTRANSACTIONPROVE响应不存在MAC值,该值4字节全部使用默认值00H。

 

3.2.3.4.4响应报文的状态码

此命令执行成功的状态码是’9000’。

下表描述了卡片可能回送的错误状态:

SW1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1