CPU卡电子现金qPBOC交易流程记录

步骤1:选非接触式支付系统环境(PPSE)

选PPSE(使用文件名称“2PAY.SYS.DDF01”来选择PPSE) 00 A4 04 00(04 00代表使用DF名称选择) + 长度LC(0E) + “2PAY.SYS.DDF01”

00a4 0400 0e 325041592e5359532e4444463031(2PAY.SYS.DDF01的16进制ascii码)

返回数据
6F30840E325041592E5359532E4444463031A51EBF0C1B61194F08A000000333010101500A50424F432044454249548701019000

TLV格式 标签、长度、值(Tag Length Value)
标签第一个字节后5个bit都为1时,标签为2个字节

6F 30 “FCI模板”
84 0E 325041592E5359532E4444463031 “DF名(专用文件名):2PAY.SYS.DDF01”
A5 1E “FCI(File Control Information)专用模板”
BF0C 1B “FCI发卡行自定义数据”
61 19 “目录入口”
4F 08 A000000333010101 “DF名(AID)”
50 0A 50424F43204445424954 “应用标签:PBOC DEBIT”
87 01 01 “应用优先指示器”
90 00 指令执行成功

注:AID解析:
a0 00 00 03 33 // 注册的应用提供商标识(RID)长度为5字节,唯一地表示应用提供商,根据GB/T 16649.5分配
01 01 01 // 最长为11字节的可选域,由应用提供商定义。

步骤2:选AID

根据上面的应答 a000000333010101
发送应用选择命令 00a4040008a000000333010101

返回数据
6F438408A000000333010101A537500A50424F432044454249548701019F38189F66049F02069F03069F1A0295055F2A029A039C019F37045F2D027A68BF0C059F4D020B0A9000

6F 43 “FCI模板”

84 08 A000000333010101 “DF名(专用文件名):A000000333010101”
A5 37 “FCI(File Control Information)专用模板”
50 0A 50424F43204445424954 “应用标签:PBOC DEBIT”
87 01 01 “应用优先指示器”
9F38 18 “PDOL:处理选项数据对象列表”
9F66 04 “终端交易属性”
9F02 06 “授权金额”
9F03 06 “其它金额”
9F1A 02 “终端国家代码”
95 05 “终端验证结果(TVR)”
5F2A 02 “交易货币代码”
9A 03 “交易日期”
9C 01 “交易类型”
9F37 04 “不可预知数”

5F2D 02 7A68 “首选语言”
BF0C 05 “FCI发卡行自定义数据”
9F4D 02 0B0A “记录入口:提供交易记录的SFI(短文件标识符)”

9000 指令执行成功

步骤3:读钱包余额

指令:80ca9f7900

返回数据
9F79060000000007979000

9F79 06 000000000797 “电子现金余额:7.97元”

9000 执行成功

步骤4:应用初始化(GPO:Get Processing Options获取处理选项)

80a80000238321
后面为填充PDOL的数据

28000000 “04终端交易属性”
000000000001 “06授权金额”
000000000000 “06其它金额”
0156 “02终端国家代码”
0000000000 “05终端验证结果(TVR)”
0156 “02交易货币代码”
140315 “03交易日期”
00 “01交易类型”
5f2d027a “04不可预知数”

80a8000023832128000000000000000001000000000000015600000000000156140315005f2d027a

返回数据
775682027C00940C1005080118010200200202009F360200509F2608304D8792EC199BD19F101307080103900000010A01000000079606CC14AE57136228480018200564971D23112217903030000F5F3401009F6C0220009000

77 56 “模板”
82 02 7C00 “AIP:应用交互特征Application Interchange Profile”
94 0C 100508011801020020020200 “AFL:应用文件定位器Application File Locator”
9F36 02 0050 “ATC:应用交易计数器Application Transaction Counter”
9F26 08 304D8792EC199BD1 “应用密文”
9F10 13 07080103900000010A01000000079606CC14AE “发卡行应用数据”
57 13 6228480018200564971D23112217903030000F “2磁道等价数据”
5F34 01 00 “应用PAN序列号”
9F6C 02 2000 “卡片交易属性”

9000 执行成功

注:
AIP:
7C = 0x0111 1100
字节1:
位8:1=RFU
位7:1=支持SDA—支持
位6:1=支持DDA—支持
位5:1=支持持卡人认证—支持
位4:1=执行终端风险管理—支持
位3:1=支持发卡行认证—支持
位2:RFU(0)
位1:1=支持CDA—不支持
字节2:RFU(“00”)

AFL:
10 05 08 01
18 01 02 00
20 02 02 00
文件的短文件标识符(SFI) + 第1个和最后一个要读取记录的记录号 + 用于保存SDA和DDA数据的记录个数

步骤5:读取AFL指定的记录

00b2051400

返回数据
Send APDU = 0x0000 run time = 21
para1 = 80
para2 = 704C5F25030001015F24032311285A0A6228480018200564971F5F3401009F0702FF008E0C00000000000000001E031F009F0D05D8603CA8009F0E0500108000009F0F05D8683CF8005F280201569000

70
4C “长度”
5F25 03 000101 “生效日期:00年01月01日”
5F24 03 231128 “失效日期:23年11月28日”
5A 0A 6228480018200564971F “标签:持卡人有效卡号”
5F34 01 00 “卡中使用同一个账号的不同应用”
9F07 02 FF00 “标签:应用用途控制. 含义如下:标明发卡行指定的卡片应用上的一些限制,包括地域使用和服务类型等。”
字节1:
位8:1=国内现金交易有效
位7:1=国际现金交易有效
位6:1=国内商品有效
位5:1=国际商品有效
位4:1=国内服务有效
位3:1=国际服务有效
位2:1=ATM 有效
位1:1=除ATM 外的终端有效
字节2:
位8:1=允许国内返现
位7:1=允许国际返现
位6–1:RFU(000000)
JR/T 0025 限制:字节1 中,位4,6 值相同;位3,5 值相同
8E 0C “标签:持卡人验证方法(CVM)列表”
00000000000000001E031F00
含义如下:按照优先顺序列出卡片应用支持的所有持卡人验证方法
注:一个应用中可以有多个CVM 列表,例如一个用于国内交易,一个用于国际交易
字节1–4:金额X(二进制)
字节5–8:金额Y(二进制)
字节9(CVM Code):
位 8:0=只有符合此规范的取值(如果为1,说明有自定义的值)
位 7:1=如果此CVM 失败,应用后续的;0 = 如果此CVM 失败,则持卡人验证失败
位 6–1(CVM Type):
000000=CVM 失败处理
000001=卡片执行明文PIN 核对
000010=联机加密PIN 验证
000011=卡片执行明文PIN 核对+签名(纸上)
000100=保留
000101=保留
011110=签名(纸上)
011111=无需CVM
000110–011101=保留给加入的支付系统
100000–101111=保留给各自独立的支付系统
110000–111110=保留给发卡行
111111=RFU
JR/T0025 定义:
100000 =持卡人证件出示
字节10(CVM Condition Code):
00=总是
01=如果是ATM 现金交易
02=如果不是ATM 现金或有人值守现金或返现交易
03=如果终端支持这个CVM
04=如果是人工值守现金交易
05=如果是返现交易
06=如果交易货币等于应用货币代码而且小于X值
07=如果交易货币等于应用货币代码而且大于X值
08 =如果交易货币等于应用货币代码而且小于Y值
09=如果交易货币等于应用货币代码而且大于Y值
0A–7F:RFU
80–FF:RFU 保留给各个支付系统下一个CVM 用另两个CVM 码和CVM 条件字节表示
9F0D 05 D8603CA800 “标签:发卡行行为代码(缺省)含义:指定当交易请求联机但是终端不能完成练级上送的交易拒绝的条件”
9F0E 05 0010800000 “标签:发卡行行为代码(拒绝)”
9F0F 05 D8683CF800 “标签:发卡行行为代码(练级)”
5F28 02 0156 “标签:发卡行国家代码。0156”
9000

00b2061400

返回数据
Send APDU = 0x0000 run time = 34
para1 = 185
para2 = 7081B49F4681B0E7D93795CB88C70328EF5ACE68D16411A130611A3741C9DA9011F79B1CB6E009A7552816484334F74371018F21F98BFA3AF09B336E4D9B0ACF43F10B6C5358EBF3F121E05172534F61999A998722625F75291ADC456EAE5AE8EF33693716E4BBDA64679EF732D1AE845D76B8845BD8A6C537023A7FEFE23FDF25CAC3896CBED47FB290E0FB6FB370FA003B565B63A8D1FD3FE8330F0E6DF2D828A65918CE322EB16D53DFDD9551B3CF16DA75A4F988979000

70
81B4
9F4681B0 “9F46发卡行认证过的IC卡公钥”
E7D93795CB88C70328EF
5ACE68D16411A130611A
3741C9DA9011F79B1CB6
E009A7552816484334F7
4371018F21F98BFA3AF0
9B336E4D9B0ACF43F10B
6C5358EBF3F121E05172
534F61999A998722625F
75291ADC456EAE5AE8EF
33693716E4BBDA64679E

F732D1AE845D76B8845B
D8A6C537023A7FEFE23F
DF25CAC3896CBED47FB2
90E0FB6FB370FA003B56
5B63A8D1FD3FE8330F0E
6DF2D828A65918CE322E
B16D53DFDD9551B3CF16
DA75A4F98897
9000

00b2071400

返回数据
Send APDU = 0x0000 run time = 11
para1 = 21
para2 = 70119F4701039F480A8EBA4C29823E07D6618D9000

70
11
9F470103 “IC卡公钥指数,IC卡公钥指数用于验证签名的动态应用数据”
9F480A8EBA4C29823E07D6618D “IC卡公钥余数,没有放入IC卡公钥证书的IC卡公钥部分”
9000

00b2081400

返回数据
Send APDU = 0x0000 run time = 35
para1 = 197
para2 = 7081C09381B0CB5004E7D453F024ADC1E09E18BAB57C34D50F5D4BDA95CAD06D18D7F9738F80C719E8ACF34D9AF1DCAA018D879C69DC2CB2DD203E5BF0A9763C5796551C349DA2262133104FDCCEB94D9544AD172151BBFB438430AB947D2A13B18C10D95B1F7E3214EA90A4C29005B733EC9F6B6EAD3C940364C6B4F5A9B60B772581B4808B64555015C1216E4EAA5F2BAA48B456775180415616F825C32E9B48BFBC8BFF904D248517B61D5FFAA55705CF60566B589F4A01829F74064543433030319000

7081C0 “发卡行签名的数据签名。用卡片内的指定数据生成。在SDA过程中由终端验证。”
9381B0
CB5004E7D453F024ADC1
E09E18BAB57C34D50F5D
4BDA95CAD06D18D7F973
8F80C719E8ACF34D9AF1
DCAA018D879C69DC2CB2
DD203E5BF0A9763C5796
551C349DA2262133104F
DCCEB94D9544AD172151
BBFB438430AB947D2A13
B18C10D95B1F7E3214EA

90A4C29005B733EC9F6B
6EAD3C940364C6B4F5A9
B60B772581B4808B6455
5015C1216E4EAA5F2BAA
48B456775180415616F8

25C32E9B48BFBC8BFF90
4D248517B61D5FFAA557
05CF60566B58
9F4A0182 “列出基本数据对象标签,标签的值包括在签名的静态应用数据中或IC卡公钥证书中”
9F7406454343303031 电子现金发卡行授权码“ECC001”
9000

00b2011c00

返回数据
Send APDU = 0x0000 run time = 34
para1 = 184
para2 = 7081B39081B065012046010DF6718050311B695E48E07380FCBBFBE0E6922F37C8E2BB5A02B3C76707D786E1BE47E6BDF4DD9AF032BA0426519E88A10C6AD4240F513A47077E07B4F1BCD51DD6BB57E63692C989A7B195EACA662D0E8729596E623A0CE82C4A1AC54122A7C008604929E3527DCD9AA6192AB80B667B6E503824C222BEA8939AF192D05042E22777746638CD513EB382E72FE8124D52ECABD92FE153E989CE8C3D3862520DD013C19D4A796FCCE5FE489000

7081B3 “发卡行公钥证书,CA认证过的发卡行公钥。用于脱机数据认证。”
9081B0
65012046010DF6718050
311B695E48E07380FCBB
FBE0E6922F37C8E2BB5A
02B3C76707D786E1BE47
E6BDF4DD9AF032BA0426
519E88A10C6AD4240F51
3A47077E07B4F1BCD51D
D6BB57E63692C989A7B1
95EACA662D0E8729596E
623A0CE82C4A1AC54122
A7C008604929E3527DCD
9AA6192AB80B667B6E50
3824C222BEA8939AF192
D05042E22777746638CD
513EB382E72FE8124D52
ECABD92FE153E989CE8C
3D3862520DD013C19D4A
796FCCE5FE48
9000

00b2021c00

返回数据
Send APDU = 0x0000 run time = 15
para1 = 55
para2 = 70339F49039F37049F3201039224339533AD3FBCC98B0780873146ECC8FEFFBB3CE540B4CE74B6BCE9BD255BEBE3AE9B647B8F01039000

7033
9F49039F3704 “动态数据认证数据对象列表。在内部认证命令中需要终端送到卡片中的数据列表,包括数据对象的标签和长度”
9F320103 “发卡行公钥指数,用来验证签名的静态应用数据和IC卡公钥证书”
9224339533AD3FBCC98B0780873146ECC8FEFFBB3CE540B4CE74B6BCE9BD255BEBE3AE9B647B
“发卡行公钥余数,没有方式发卡行公钥证书中的发卡行公钥部分”
8F0103 “在SDA和DDA过程中和RID一起使用,用来表示CA公钥(CA公钥索引PKI)”
9000

00b2022400

返回数据
Send APDU = 0x0000 run time = 38
para1 = 162
para2 = 70819D9F4B81909029617DC820D6F890609E3C3671DB5828C73E19ED00155D02D5CEEC0D210EC94AC0584589C1C3149AD2E016F5F1CDC1CE07F02208B7468D87520D11F9F7D82B2D2C6547E03FA7CB4691B5255A337830059C85FF62D40ED3CE853A2BB17617C4E1C6440D8BEC9031112540C6D3BCCDF8B536FFE777AF621800F8C5E288A9ED80A3DD9B8A2A6A45C8D33E998B936F0AC99F5D060000000007969000

70819D “签名的动态应用数据,卡片生成的动态数据签名。在DDA过程中有终端验证”
9F4B8190
9029617DC820D6F89060
9E3C3671DB5828C73E19
ED00155D02D5CEEC0D21
0EC94AC0584589C1C314
9AD2E016F5F1CDC1CE07
F02208B7468D87520D11
F9F7D82B2D2C6547E03F
A7CB4691B5255A337830
059C85FF62D40ED3CE85
3A2BB17617C4E1C6440D

8BEC9031112540C6D3BC
CDF8B536FFE777AF6218
00F8C5E288A9ED80A3DD
9B8A2A6A45C8D33E998B
936F0AC9
9F5D06000000000796
9000

注:
获取交易日志:
交易日志的推荐值为0x0B(短文件标识符SFI)
5
00b2015c00
00b2025c00

返回数据
Send APDU = 0x0000 run time = 13
para1 = 47
para2 = 131222092330000000000600000000000000015601564142435F5445524D494E414C000000000000000060000E9000
para2 = 131222091834000000000200000000000000015601564142435F5445524D494E414C000000000000000060000B9000

131222 交易日期
092330 交易时间
000000000600 授权金额
000000000000 其它金额
0156 终端国家代码
0156 交易货币代码
4142435F5445524D494E414C0000000000000000 商户名称ABC_TERMIDAL
60 交易类型
000E 应用交易计数器(ATC)
9000

131222
091834
000000000200
000000000000
0156
0156
4142435F5445524D494E414C0000000000000000
60
000B
9000

总结:选ppse,进入非接支付环境——根据返回的AID选择应用——查询初始余额——根据返回的APDU,填充好GPO指令后发送,其中扣款金额
为9F02授权金额——GPO返回AFL,tag为94,4字节一组,根据返回的AFL读取卡片指定的文件——查询扣款后余额,成功的话余额会变化

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值