本文主要是介绍在FMCOS CPU卡上建立简单的测试PBOC支付环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本文目的在于快速搭建一个简易的支付环境,方便进行电子钱包的圈存、消费测试。因此省略了许多数据文件及安全机制。
请勿将这个测试支付环境应用在生产系统中,否则可能带来极大的安全隐患。
建立简易的测试PBOC支付环境
在根目录(3F00)下建立应用目录3F01
80 E0 3F 01 0D 38 08 00 F0 F0 95 FF FF 11 22 33 44 55
选择应用目录3F01
00 A4 00 00 02 3F 01 00
建立密钥文件
80 E0 00 00 07 3F 01 8F 95 F0 FF FF
增加外部认证密钥
80 D4 01 00 0D 39 F0 F0 AA FF 11 22 33 44 55 66 77 88
增加消费密钥
80 D4 01 00 15 3E F0 F0 00 01 3E 3E 3E 3E 3E 3E 3E 3E 11 22 33 44 55 66 77 88
增加圈存密钥
80 D4 01 00 15 3F F0 F0 00 01 3F 3F 3F 3F 3F 3F 3F 3F 11 22 33 44 55 66 77 88
增加DTK/TAC密钥
80 D4 01 00 15 34 F0 F0 00 01 34 34 34 34 34 34 34 34 11 22 33 44 55 66 77 88
增加口令密钥(PIN)
80 D4 01 00 07 3A F0 EF AA FF 12 34
建立交易记录文件0018
80 E0 00 18 07 2E 0A 17 F0 EF FF FF
建立电子钱包文件0002
80 E0 00 02 07 2F 02 08 F0 00 FF 18
简易的测试支付环境就此建立完毕。
对电子钱包进行圈存操作
读余额
Rdr: 80 5C 00 02 04
Tag: 00 00 00 00 [90 00] 命令执行成功
可见目前余额为0。
验证口令(PIN)
Rdr: 00 20 00 00 02 12 34
Tag: [90 00] 命令执行成功
对于电子钱包,圈存操作强制验证PIN。 读余额、消费操作可以不验证PIN。
圈存初始化
Rdr: 80 50 00 02 0B 【00】 【00 00 00 10】 【66 66 66 66 66 66】 10
Tag: 【00 00 00 00】 【00 00】 【00】 【01】 【4E 06 65 48】 【0D 39 AD BB】 [90 00] 命令执行成功
读卡器发送的有效数据依次为:圈存密钥标识、交易金额、终端机编号
卡片应答的有效数据依次为:旧余额、联机交易序号、密钥版本、算法标识、随机数、MAC1
过程密钥的计算
将随机数(4E 06 65 48)、联机交易序号(00 00)和填充字节(80 00)组成的完整数据4E 06 65 48 00 00 80 00,使用圈存密钥进行加密,得到“过程密钥”:3B 75 C7 9C FA 8C 23 27
MAC1的计算
将旧余额(00 00 00 00)、交易金额(00 00 00 10)、交易类型(02)和终端机编号(66 66 66 66 66 66)组成的完整数据00 00 00 00 00 00 00 10 02 66 66 66 66 66 66,使用“过程密钥”计算MAC,得到MAC1:0D 39 AD BB。
注:交易类型02表示电子钱包;01则表示电子存折。
圈存
Rdr: 80 52 00 00 0B 【20 24 04 11】 【21 21 21】 【09 7E 98 FE】 04
Tag: 【A8 02 86 3E】 [90 00] 命令执行成功
读卡器发送的有效数据依次为:交易日期、交易时间、MAC2
卡片应答的有效数据为:交易验证码(TAC)
MAC2的计算
将交易金额(00 00 00 10)、交易类型(02)、终端机编号(66 66 66 66 66 66)、交易日期(20 24 04 11)和交易时间(21 21 21)组成的完整数据,00 00 00 10 02 66 66 66 66 66 66 20 24 04 11 21 21 21,使用“过程密钥”计算MAC,得到MAC2:09 7E 98 FE
交易验证码(TAC)的计算
将新余额(旧余额00 00 00 00 + 交易金额00 00 00 10 = 00 00 00 10)、联机交易序号(00 00)、交易金额(00 00 00 10)、交易类型(02)、终端机编号(66 66 66 66 66 66)、交易日期(20 24 04 11)和交易时间(21 21 21)组成完整数据:00 00 00 10 00 00 00 00 00 10 02 66 66 66 66 66 66 20 24 04 11 21 21 21。
将DTK/TAC密钥的左右(高低)8字节进行异或,即34 34 34 34 34 34 34 34与11 22 33 44 55 66 77 88进行异或,得到计算TAC使用的密钥:25160770615243BC。用该密钥对前面得到的完整数据(00 00 00 10 00 00 00 00 00 10 02 66 66 66 66 66 66 20 24 04 11 21 21 21)计算MAC,得到TAC:A8 02 86 3E
再次读余额
Rdr: 80 5C 00 02 04
Tag: 00 00 00 10 [90 00] 命令执行成功
读交易记录
Rdr: 00 B2 01 C4 00
Tag: 00 01 00 00 00 00 00 00 10 02 66 66 66 66 66 66 20 24 04 11 21 21 21 [90 00] 命令执行成功
这篇关于在FMCOS CPU卡上建立简单的测试PBOC支付环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!