CN104091259B - 一种可解析流程代码的支付终端及其工作方法 - Google Patents
一种可解析流程代码的支付终端及其工作方法 Download PDFInfo
- Publication number
- CN104091259B CN104091259B CN201410318520.7A CN201410318520A CN104091259B CN 104091259 B CN104091259 B CN 104091259B CN 201410318520 A CN201410318520 A CN 201410318520A CN 104091259 B CN104091259 B CN 104091259B
- Authority
- CN
- China
- Prior art keywords
- code
- data
- current process
- length
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/08—Payment architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Engineering & Computer Science (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Control Of Vending Devices And Auxiliary Devices For Vending Devices (AREA)
Abstract
本发明公开了一种可解析流程代码的支付终端及其工作方法,属于信息安全领域。本发明采用的方法包括:当支付终端接收到选择菜单功能指令时,根据选择菜单功能指令从支付终端内部获取流程代码数据和流程代码数量;当支付终端接收到接收数据指令时,从接收数据指令中获取流程代码数据和流程代码数量;支付终端根据流程代码数量从流程代码数据中逐条获取流程代码,并执行相应操作,从操作结果中获取有效数据,当执行完流程代码数据中的最后一条流程代码时,将有效数据发送给上位机。采用本方法,节省了对支付终端进行维护所产生的成本,并且节约了在维护支付终端时所需要耗费的时间。
Description
技术领域
本发明涉及信息安全领域,特别涉及一种可解析流程代码的支付终端及其工作方法。
背景技术
随着科技的发展,支付终端产品的应用越来越广泛,发明人发现:传统支付终端的交易业务逻辑都集成在支付终端本身,当业务逻辑发生变化时,需对支付终端内相关的应用程序进行全部的更新,这不仅提高了支付终端的维护成本,耗费了维护支付终端的时间,而且在一定程度上降低了支付终端的使用效率。
发明内容
为了解决现有技术中出现的问题,本发明提出一种可解析流程代码的支付终端的工作方法,包括:
步骤S1:支付终端等待接收来自上位机的指令,当接收到指令时,判断指令类型,如果是选择菜单功能指令,则执行步骤S2;如果是接收数据指令,则执行步骤S8;
步骤S2:所述支付终端根据所述选择菜单功能指令获取自身保存的第一流程代码数据和第一流程代码数量,将所述第一流程代码数据作为当前流程代码数据,将所述第一流程代码数量作为当前流程代码数量,执行步骤S3;
步骤S3:所述支付终端从所述当前流程代码数据中获取第一条流程代码,将其作为当前流程代码;
步骤S4:所述支付终端执行所述当前流程代码对应的操作,得到操作结果,判断所述操作结果中是否存在有效数据,是则执行步骤S5;否则执行步骤S6;
步骤S5:所述支付终端从所述操作结果中获取有效数据,将所述有效数据保存至缓存区中,更新所述当前流程代码数量,执行步骤S6;
步骤S6:所述支付终端根据所述当前流程代码数量判断所述当前流程代码数据中是否存在所述当前流程代码的下一条流程代码,是则从所述当前流程代码数据中获取所述下一条流程代码,将所述下一条流程代码作为更新后的当前流程代码,返回步骤S4;否则执行步骤S7;
步骤S7:所述支付终端判断所述缓存区中是否存在数据,是则将所述缓存区中的数据发送给所述上位机,清空所述缓存区,返回步骤S1;否则所述支付终端向所述上位机发送结束信息,返回步骤S1;
步骤S8:所述支付终端从所述接收数据指令中获取第二流程代码数据和第二流程代码数量,将所述第二流程代码数据作为当前流程代码数据,将所述第二流程代码数量作为当前流程代码数量,返回步骤S3。
所述步骤S1中,所述支付终端在接收指令之后,判断指令类型之前,还包括:
S1-1:所述支付终端判断接收到的指令是否合法,是则执行步骤S1-2;否则向所述上位机发送错误应答信息,返回步骤S1;
步骤S1-2:所述支付终端判断接收到的指令的第一预设字节的值是否为第一预设值,是则执行判断指令类型操作;否则所述支付终端执行相应操作,并将操作结果返回给所述上位机,返回步骤S1。
所述步骤S2,具体为:
所述支付终端从所述选择菜单功能指令中获取菜单级别和交易代码,判断所述支付终端自身是否存在与所述菜单级别和所述交易代码匹配的菜单功能信息,是则从所述菜单功能信息中获取第一流程代码数据和第一流程代码数量,将所述第一流程代码数据作为当前流程代码数据,将所述第一流程代码数量作为当前流程代码数量,执行步骤S3;否则向所述上位机发送错误应答响应,返回步骤S1。
所述支付终端从所述菜单功能信息中获取第一流程代码数据和第一流程代码数量,具体为:
所述支付终端将所述菜单功能信息作为第一流程代码数据,获取所述第一流程代码数据的第一字节,将其作为第一流程代码数量。
所述步骤S3中,所述从所述当前流程代码数据中获取第一条流程代码,具体为:
所述支付终端获取所述当前流程代码数据的第二字节,将其作为当前流程代码长度,从所述当前流程代码数据的第三字节开始获取长度为所述当前流程代码长度的数据,将获取到的数据作为第一条流程代码。
所述支付终端判断所述操作结果中是否存在有效数据,具体包括:
当所述支付终端正确执行当前流程代码时,所述支付终端对所述当前流程代码的类型进行判断,如果所述当前流程代码为读取安全模块序列号或读取终端序列号,则确定所述操作结果中存在有效数据;否则确定所述操作结果中不存在有效数据;
当所述支付终端未正确执行当前流程代码时,向所述上位机发送错误应答信息。
所述步骤S5中,所述从所述操作结果中获取有效数据,具体为:将所述操作结果作为有效数据;
所述更新所述当前流程代码数量,具体为:将所述当前流程代码数量减去预设步长,将得到的结果作为更新后的当前流程代码数量;或者,将所述当前流程代码数量与预设步长相加,将得到的结果作为更新后的当前流程代码数量。
所述根据所述当前流程代码数量判断所述当前流程代码数据中是否存在所述当前流程代码的下一条流程代码,具体为:
判断所述当前流程代码数量是否在预设范围内,是则确定存在所述当前流程代码的下一条流程代码;否则确定不存在所述当前流程代码的下一条流程代码;
所述从所述当前流程代码数据中获取所述下一条流程代码,将所述下一条流程代码作为更新后的当前流程代码,具体为:
获取所述当前流程代码的下一个字节,将其作为下一条流程代码长度,根据所述下一条流程代码长度从所述当前流程代码数据中获取下一条流程代码,将其作为当前流程代码。
所述支付终端接收到接收数据指令之后,执行步骤S8之前,还包括:
判断所述接收数据指令中是否包含第二流程代码数据,是则执行步骤S8;否则向所述上位机发送结束信息,返回步骤S1。
所述判断所述接收数据指令中是否包含第二流程代码数据,具体包括:
获取所述接收数据指令的第五、第六字节,将其作为接收数据指令数据域长度,从所述接收数据指令的第七字节开始获取长度与所述接收数据指令数据域长度匹配的数据,作为接收数据指令数据域,获取所述接收数据指令数据域的第二、第三字节,将其作为通信报文长度,从所述接收数据指令数据域的第四字节开始获取长度与所述通信报文长度匹配的数据,作为通信报文,获取所述通信报文的第四、第五字节,将其作为交易数据长度,从所述通信报文的第六字节开始获取长度与所述交易数据长度匹配的数据,作为交易数据,获取所述交易数据的第一、第二字节,将其作为交易报文长度,从所述交易数据的第三字节开始获取长度与所述交易报文长度匹配的数据,作为交易报文,获取所述交易报文的第十二、第十三字节,将其作为消息内容长度,从所述交易报文的第十四字节开始获取程度与所述消息内容长度匹配的数据,作为消息内容,判断所述消息内容的第三十字节是否大于0,是则确定存在第二流程代码数据;否则确定不存在第二流程代码数据。
所述步骤S8,具体为:
步骤a1:获取所述消息内容的第三十字节,将其作为第二流程代码数量,并将所述第二流程代码数量保存在缓存区中;
步骤a2:获取所述消息内容的第三十一字节,将其作为当前流程代码长度,并将所述当前流程代码长度保存在所述缓存区中;
步骤a3:从所述消息内容中的当前流程代码长度之后开始获取长度与所述当前流程代码长度匹配的数据,将其作为当前流程代码,并将所述当前流程代码保存在所述缓存区中,更新所述第二流程代码数量;
步骤a4:判断所述第二流程代码数量是否在预设范围内,是则获取所述当前流程代码之后的一个字节,将其作为当前流程代码长度,并将所述当前流程代码长度保存在所述缓存区中,执行步骤a3;否则获取所述缓存区中的数据,将其作为第二流程代码数据,清空所述缓存区。
一种可解析流程代码的支付终端包括:
存储模块,用于存储第一流程代码数据和第一流程代码数量;
接收模块,用于接收来自上位机的指令;
第一判断模块,用于判断所述接收模块接收到的指令的类型;
第一获取模块,用于当所述第一判断模块判断接收到的指令是选择菜单功能指令时,根据所述选择菜单功能指令获取所述存储模块中的所述第一流程代码数据和所述第一流程代码数量,将所述第一流程代码数据作为当前流程代码数据,将所述第一流程代码数量作为当前流程代码数量,并触发第二获取模块;
第二获取模块,用于从所述当前流程代码数据中获取第一条流程代码,将所述第一条流程代码作为当前流程代码,并触发第一操作模块;
第一操作模块,用于执行所述当前流程代码对应的操作,得到操作结果;
第二判断模块,用于判断所述第一操作模块得到的所述操作结果中是否存在有效数据;
第二操作模块,用于当所述第二判断模块判断所述操作结果中存在有效数据时,从所述操作结果中获取有效数据,将所述有效数据保存至缓存区中,并触发更新模块;
更新模块,用于更新所述当前流程代码数量,并触发第三判断模块;
第三判断模块,用于当所述第二判断模块判断所述操作结果中不存在有效数据时,根据所述当前流程代码数量判断所述当前流程代码数据中是否存在所述当前流程代码的是否存在下一条流程代码;当所述更新模块更新所述当前流程代码数量之后,根据所述当前流程代码数量判断是否存在下一条流程代码;
第三获取模块,用于当所述第三判断模块判断存在所述当前流程代码的下一条流程代码时,从所述当前流程代码数据中获取下一条流程代码,将所述下一条流程代码作为更新后的当前流程代码,并触发所述第一操作模块;
第四判断模块,用于当所述第三判断模块判断不存在所述当前流程代码的下一条流程代码时,判断所述缓存区中是否存在数据;
第一发送模块,用于当所述第四判断模块判断所述缓存区中存在数据时,将所述缓存区中的数据发送给所述上位机,清空所述缓存区;
第二发送模块,用于当所述第四判断模块判断所述缓存区中不存在数据时,向所述上位机发送结束信息;
第四获取模块,用于当所述第一判断模块判断所述接收模块接收到的指令是接收数据指令时,从所述接收数据指令中获取第二流程代码数据和第二流程代码数量,将所述第二流程代码数据作为当前流程代码数据,将所述第二流程代码数量作为当前流程代码数量,并触发所述第二获取模块。
还包括:
第五判断模块,用于当所述接收模块接收到指令时,判断所述指令是否合法;
第三发送模块,用于当所述第五判断模块判断所述指令不合法时,向所述上位机发送错误应答信息;
第六判断模块,用于当所述第五判断模块判断所述指令合法时,判断所述指令的第一预设字节的值是否为第一预设值;
第三操作模块,用于当所述第六判断模块判断所述指令的第一预设字节的值不为第一预设值时,执行相应操作,并将操作结果返回给所述上位机。
所述存储模块,具体用于存储菜单功能信息,所述菜单功能信息包括第一流程代码数据和第一流程代码数量;
所述第一获取模块,包括:
第一获取子模块,用于从所述选择菜单功能指令中获取菜单级别和交易代码;
第一判断子模块,用于判断所述存储模块中是否存在与所述第一获取子模块获取到的所述菜单级别和所述交易代码匹配的菜单功能信息;
第二获取子模块,用于在所述第一判断子模块判断所述存储模块中存在与所述菜单级别和所述交易代码匹配的菜单功能信息时,从所述菜单功能信息中获取第一流程代码数据和第一流程代码数量,将所述第一流程代码数据作为当前流程代码数据,将所述第一流程代码数量作为当前流程代码数量;
第一发送子模块,用于在所述第一判断子模块判断所述存储模块中不存在与所述菜单级别和所述交易代码匹配的菜单功能信息时,向所述上位机发送错误应答响应。
所述第二获取子模块,具体用于在所述第一判断子模块判断所述存储模块中存在与所述菜单级别和所述交易代码匹配的菜单功能信息时,将所述菜单功能信息作为第一流程代码数据,获取所述第一流程代码数据的第一字节,将其作为第一流程代码数量,将所述第一流程代码数据作为当前流程代码数据,将所述第一流程代码数量作为当前流程代码数量。
所述第二获取模块,具体用于获取所述当前流程代码数据的第二字节,将其作为当前流程代码长度,从所述当前流程代码数据的第三字节开始获取长度为所述当前流程代码长度的数据,将获取到的数据作为第一条流程代码,将所述第一条流程代码作为当前流程代码,并触发第一操作模块。
所述第二判断模块,具体用于判断所述第一操作模块是否正确执行当前流程代码,并在判断出所述第一操作模块正确执行所述当前流程代码时,对所述当前流程代码的类型进行判断,如果所述当前流程代码为读取安全模块序列号或读取终端序列号,则确定所述操作结果中存在有效数据;否则确定所述操作结果中不存在有效数据;
所述第二发送模块,还用于在所述第二判断模块判断出所述第一操作模块没有正确执行所述当前流程代码时,向所述上位机发送错误应答信息。
所述更新模块,具体用于将所述当前流程代码数量减去预设步长,将得到的结果作为更新后的当前流程代码数量;或者,将所述当前流程代码数量与预设步长相加,将得到的结果作为更新后的当前流程代码数量。
所述第三判断模块,具体用于在所述第二判断模块判断所述操作结果中不存在有效数据时,判断所述当前流程代码数量是否达到预设值内,是则确定所述当前流程代码数据中存在所述当前流程代码的下一条流程代码;否则确定所述当前流程代码数据中不存在所述当前流程代码的下一条流程代码,并触发所述第三获取模块;当所述更新模块更新所述当前流程代码数量之后,根据所述当前流程代码数量判断是否存在下一条流程代码,并触发所述第三获取模块;
所述第三获取模块,具体用于当所述第三判断模块判断存在所述当前流程代码的下一条流程代码时,获取所述当前流程代码的下一个字节,将其作为下一条流程代码长度,根据所述下一条流程代码长度从所述当前流程代码数据中获取下一条流程代码,将其作为当前流程代码,并触发所述第一操作模块。
还包括:
第七判断模块,用于当所述第一判断模块判断所述接收模块接收到的指令是接收数据指令时,判断所述接收数据指令中是否包含第二流程代码数据;
所述第二发送模块,还用于在所述第七判断模块判断出所述接收数据指令中不包含第二流程代码数据时,向所述上位机发送结束信息;
所述第四获取模块,具体用于在所述第七判断模块判断出所述接收数据指令中包含第二流程代码数据时,从所述接收数据指令中获取第二流程代码数据和第二流程代码数量,将所述第二流程代码数据作为当前流程代码数据,将所述第二流程代码数量作为当前流程代码数量,并触发所述第二获取模块。
所述第七判断模块,具体用于获取所述接收数据指令的第五、第六字节,将其作为接收数据指令数据域长度,从所述接收数据指令的第七字节开始获取长度与所述接收数据指令数据域长度匹配的数据,作为接收数据指令数据域,获取所述接收数据指令数据域的第二、第三字节,将其作为通信报文长度,从所述接收数据指令数据域的第四字节开始获取长度与所述通信报文长度匹配的数据,作为通信报文,获取所述通信报文的第四、第五字节,将其作为交易数据长度,从所述通信报文的第六字节开始获取长度与所述交易数据长度匹配的数据,作为交易数据,获取所述交易数据的第一、第二字节,将其作为交易报文长度,从所述交易数据的第三字节开始获取长度与所述交易报文长度匹配的数据,作为交易报文,获取所述交易报文的第十二、第十三字节,将其作为消息内容长度,从所述交易报文的第十四字节开始获取程度与所述消息内容长度匹配的数据,作为消息内容,判断所述消息内容的第三十字节是否大于0,是则确定存在第二流程代码数据;否则确定不存在第二流程代码数据。
所述第四获取模块,具体用于执行以下操作:
步骤a1:获取所述消息内容的第三十字节,将其作为第二流程代码数量,并将所述第二流程代码数量保存在缓存区中;
步骤a2:获取所述消息内容的第三十一字节,将其作为当前流程代码长度,并将所述当前流程代码长度保存在所述缓存区中;
步骤a3:从所述消息内容中的当前流程代码长度之后开始获取长度与所述当前流程代码长度匹配的数据,将其作为当前流程代码,并将所述当前流程代码保存在所述缓存区中,更新所述第二流程代码数量;
步骤a4:判断所述第二流程代码数量是否在预设范围内,是则获取所述当前流程代码之后的一个字节,将其作为当前流程代码长度,并将所述当前流程代码长度保存在所述缓存区中,执行步骤a3;否则获取所述缓存区中的数据,将其作为第二流程代码数据,清空所述缓存区。
采用本发明提出的方法能够达到的有益效果为:采用上位机向支付终端下发流程代码,支付终端对流程代码进行解析,根据解析结果执行交易操作的这种方法,不仅节省了支付终端因为业务逻辑发生变化,对支付终端进行维护所产生的成本,而且,节约了在维护支付终端时所需要耗费的时间,从而提高了支付终端的使用效率。
附图说明
图1至图3为本发明实施例1提供的一种可解析流程代码的支付终端的工作方法流程图;
图4为本发明实施例2提供的可解析流程代码的支付终端的装置结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式做进一步的详细描述。
实施例1
本实施例1提供了一种可解析流程代码的支付终端的工作方法,如图1至图3所示,包括:
步骤201:支付终端与上位机建立连接;
具体地,支付终端上电,与上位机建立连接;
步骤202:支付终端等待接收指令;
步骤203:支付终端判断接收到的指令是否合法,是则执行步骤205;否则执行步骤204;
具体地,支付终端判断接收到的指令是否同时满足第一字节的取值为0x7E或0x7F,并且第二字节的取值为0x50;是则表示接收到的指令合法;否则表示接收到的指令不合法;
例如,支付终端接收到的指令为:
7e500000000c81000801030000003030346800;
其中,第一字节的取值为0x7e、第二字节的取值为0x50,则接收到的指令合法,执行步骤205;
步骤204:支付终端向上位机发送错误应答信息,返回步骤202;
步骤205:支付终端判断接收到的指令的第一预设字节是否为第一预设值,是则执行步骤206;否则执行步骤207;
本实施例中,第一预设字节为第一、第二字节;优选的,第一预设值为0x7E50。
例如,支付终端接收到的指令为:
7e500000000c81000801030000003030346800;其中,第一预设字节的取值为0x7e50,等于第一预设值,执行步骤206;
步骤206:支付终端判断接收到指令的类型,如果是选择菜单功能指令,则执行步骤208;如果是接收数据指令则执行步骤221;如果是其他指令,则执行步骤207;
本实施例中,步骤205之后,本步骤之前还包括,判断接收到的指令的第三、第四字节是否为0x00、0x00;是则执行步骤206;否则返回步骤204;
具体地,判断接收到的指令的类型的方法为,支付终端获取接收到的指令的第十、第十一字节,如果为0x01、0x03,则表示接收到的指令为选择菜单功能指令;如果为0303,则表示接收到的指令为接收数据指令;
例如,支付终端接收到的指令为:
7e500000000c81000801030000003030346800;其中第三、第四字节的取值为0x00、0x00,并且第十、第十一字节的取值为0x01、0x03,则确定该指令为选择菜单功能指令,执行步骤208;
步骤207:支付终端根据指令类型执行相应操作,并将操作结果返回给上位机,返回步骤202;
步骤208:支付终端从选择菜单功能指令中获取菜单级别和交易代码,执行步骤209;
具体地,支付终端获取选择菜单功能指令的第十二至第十四字节,将其作为菜单级别;获取选择菜单功能指令的第十五至第十七字节,将其作为交易代码;
例如,支付终端接收到的选择菜单功能指令为,7e500000000c81000801030000003030346800,从中获取到的菜单级别为0x000000,交易代码为0x303034;
步骤209:支付终端判断支付终端内部是否存在与菜单级别和交易代码匹配的菜单功能信息,是则执行步骤210;否则返回步骤204;
具体地,支付终端从其内部查找与菜单级别和交易代码对应的存储内容,如果存在存储内容,则表示支付终端内部存在与菜单级别和交易代码匹配的菜单功能信息;如果不存在存储内容,则表示支付终端内部不存在与菜单级别和交易代码匹配的菜单功能信息。
例如,支付终端在内部查找菜单级别为0x000000、交易代码为0x303034对应的存储内容,内容不为空,表示存在与菜单级别和交易代码匹配的菜单功能信息。
步骤210:支付终端从内部存储的菜单功能信息中获取第一流程代码数据和第一流程代码数量,将第一流程代码数据作为当前流程代码数据,将第一流程代码数量作为当前流程代码数量,执行步骤211;
本实施例中,支付终端根据菜单级别和交易代码获取内部存储的菜单功能信息,将菜单功能信息作为第一流程代码数据;获取第一流程代码数量的方法具体为:
支付终端获取第一流程代码数据的第一字节,将其作为第一流程代码数量;
例如,支付终端获取内部存储的菜单功能信息为,
0501020115011f01200121,将其作为第一流程代码数据,获取第一流程代码数据的第一字节0X05,将其作为第一流程代码数量,即第一流程代码数量为5;
步骤211:支付终端从当前流程代码数据中获取第一条流程代码,将其作为当前流程代码;
具体地,支付终端从当前流程代码数据中获取第一条流程代码的方法,包括,
支付终端获取当前流程代码数据的第二字节,将其作为当前流程代码长度,根据当前流程代码长度从当前流程代码数据的第三字节开始获取数据,获取到的数据为第一条流程代码,将第一条流程代码作为当前流程代码;
例如:当前流程代码数据为,0501020115011f01200121;支付终端获取当前流程代码数据的第二字节的取值为:0x01,即当前流程代码长度为1字节;支付终端从当前流程代码数据的第三字节开始获取1字节长度的数据,将其作为当前流程代码,即当前流程代码为:0X02;
步骤212:支付终端执行当前流程代码对应的操作,得到操作结果;
本实施例中,执行当前流程代码对应的操作,得到的操作结果可以为有效数据,也可以为显示数据。
例如,当前流程代码为0X02时,对应的操作具体为,支付终端读取安全模块序列号,读取到的安全模块序列号为:0201010000000005,将其作为操作结果。
步骤213:支付终端判断是否正确执行当前流程代码,是则执行步骤214;否则返回步骤204;
本实施例中,支付终端判断操作结果与当前流程代码对应的操作结果的属性是否匹配,是则表示正确执行当前流程代码;否则表示未正确执行当前流程代码。
例如,支付终端得到的操作结果为:0201010000000005,当前流程代码为0X02,0X02对应的操作结果为安全模块序列号,安全模块序列号的长度与操作结果的长度匹配,表示支付终端正确执行当前流程代码。
步骤214:支付终端判断操作结果中是否存在有效数据,是则执行步骤215;否则执行步骤216;
具体地,支付终端判断操作结果中是否存在有效数据的方法具体为,
支付终端判断当前流程代码,根据当前流程代码的类型判断操作结果中是否存在有效数据,如果当前流程代码为读取安全模块序列号或读取终端序列号时,表示操作结果中存在有效数据;否则表示操作结果中不存在有效数据。
步骤215:支付终端从操作结果中获取有效数据,将获取到的有效数据作为待发送数据的一部分,保存至缓存区中,更新当前流程代码数量,执行步骤216;
具体的,支付终端将操作结果作为有效数据,即支付终端将操作结果作为待发送数据的一部分;
本实施例中,更新当前流程代码数量的方法,具体为:
支付终端将当前流程代码数量与预设步长相减,得到更新后的当前流程代码数量;或者,将当前流程代码数量与预设步长相加,得到更新后的当前流程代码数量;
例如,当前流程代码数量为5,预设步长为1时,支付终端将当前流程代码数量与预设步长相减,将得到的结果作为更新后的当前流程代码数量,更新后的当前流程代码数量为4;
步骤216:支付终端根据当前流程代码数量判断是否存在下一条流程代码,是则执行步骤217;否则执行步骤218;
本实施例中,支付终端判断是否存在下一条流程代码的方法具体为:
判断当前流程代码数量是否在预设范围内,是则表示存在下一条流程代码;否则表示不存在下一条流程代码;优选的,预设范围为大于0;
例如,当前流程代码数量为4,大于0,表示存在下一条流程代码。
步骤217:支付终端获取下一条流程代码,将其作为当前流程代码,返回步骤212;
本实施例中,支付终端获取当前流程代码的下一个字节,将其作为下一条流程代码长度,根据下一条流程代码长度从流程代码数据中获取下一条流程代码,将其作为当前流程代码。
例如,当前流程代码数据为,0501020115011f01200121;当前流程代码为0X02;支付终端从当前流程代码数据中获取当前流程代码的下一个字节的取值为0X01,将其作为下一条流程代码长度,即下一条流程代码长度为1字节,从下一条流程代码长度的下一个字节开始获取长度为1字节的数据,将其作为当前流程代码,即当前流程代码为0X15;
步骤218:支付终端判断缓存区中是否存在待发送数据,是则执行步骤220;否则执行步骤219;
步骤219:支付终端向上位机发送结束信息,返回步骤202;
本实施例中,支付终端向上位机发送第七、第八字节为的取值0x03、0x05的结束信息;
步骤220:支付终端从缓存区中获取待发送数据,并将其发送给上位机,清空缓存区,返回步骤202;
具体地,支付终端获取缓存区中的数据,将其作为待发送数据。
例如,待发送数据为:
01009903023c000bbdbbd2d7b4a6c0edd6d021303030303030303030000000000000000102010100000000054950313030310068006441456d48416745424141414141415541414141384167417741674141414141434151454141414141425341554168595653546741414141774d445143415149424651415141674542414141414141554341514541414141414251414141414141414141410000ba9000;
步骤221:支付终端接收数据指令中是否存在第二流程代码数据,是则执行步骤222;否则返回步骤219;
具体地,支付终端获取接收数据指令的第五、第六字节,将其作为接收数据指令数据域长度,根据接收数据指令数据域长度从第七字节开始获取接收数据指令数据域。支付终端获取接收数据指令数据域的第二、第三字节,将其作为通信报文长度,根据通信报文长度从接收数据指令数据域的第四字节开始获取通信报文,获取通信报文的第四、第五字节,将其作为交易数据长度,根据交易数据长度从通信报文的第六字节开始获取数据,将其作为交易数据,获取交易数据的第一、第二字节,将其作为交易报文长度,根据交易报文长度从交易数据的第三字节开始获取交易报文,获取交易报文的第十二、第十三字节,将其作为消息内容长度,根据消息内容长度从交易报文的第十四字节开始获取消息内容,支付终端判断消息内容的第三十字节是否大于0,是则表示存在第二流程代码数据;否则表示不存在第二流程代码数据。
例如:接收数据指令为,
7e5000000094810090030300008b00898402010100000000050001007c0200000000000000020101000000000520140216155530000000313532040111011e01200121004c01d1c727eb601be733519604455576c7b3d3c42aecf95356874f460b660000000110010fe0edf3501558917a32a39f1e77dc6cb841410b52d91adb37cd000d32303001c7a9b5bdb3c9b9a62100000000000000001d00;
获取接收数据指令的第五、第六字节为的取值0X0094,将其作为接收数据指令数据域长度,即接收数据指令数据域长度为148字节,从接收数据指令的第七字节开始获取长度为148字节的数据,将获取到的数据作为接收数据指令数据域,即接收数据指令数据域为
810090030300008b00898402010100000000050001007c0200000000000000020101000000000520140216155530000000313532040111011e01200121004c01d1c727eb601be733519604455576c7b3d3c42aecf95356874f460b660000000110010fe0edf3501558917a32a39f1e77dc6cb841410b52d91adb37cd000d32303001c7a9b5bdb3c9b9a62100000000000000001d;
支付终端获取接收数据指令数据域的第二、第三字节为的取值0X0090,将其作为通信报文长度,即通信报文长度为144字节;从接收数据指令数据域的第四字节开始获取长度为144字节的数据,将获取到的数据作为通信报文,即通信报文为
030300008b00898402010100000000050001007c0200000000000000020101000000000520140216155530000000313532040111011e01200121004c01d1c727eb601be733519604455576c7b3d3c42aecf95356874f460b660000000110010fe0edf3501558917a32a39f1e77dc6cb841410b52d91adb37cd000d32303001c7a9b5bdb3c9b9a6210000000000000000;
获取通信报文的第四、第五字节0X008b,将其作为交易数据长度,即交易数据长度为139字节,从通信报文的第六字节开始获取长度为139字节的数据,将其作为交易数据,即交易数据为
00898402010100000000050001007c0200000000000000020101000000000520140216155530000000313532040111011e01200121004c01d1c727eb601be733519604455576c7b3d3c42aecf95356874f460b660000000110010fe0edf3501558917a32a39f1e77dc6cb841410b52d91adb37cd000d32303001c7a9b5bdb3c9b9a6210000000000000000;
获取交易数据的第一、第二字节0X0089,将其作为交易报文长度,即交易报文长度为137字节,从交易数据的第三字节开始获取长度为137字节的数据,将其作为交易报文,即交易报文为
8402010100000000050001007c0200000000000000020101000000000520140216155530000000313532040111011e01200121004c01d1c727eb601be733519604455576c7b3d3c42aecf95356874f460b660000000110010fe0edf3501558917a32a39f1e77dc6cb841410b52d91adb37cd000d32303001c7a9b5bdb3c9b9a6210000000000000000;
获取交易报文的第十二、第十三字节0X007c,将其作为消息内容长度,即消息内容长度为124字节,从交易报文的第十四字节开始获取长度为124字节的数据,将其作为消息内容,即消息内容为,
0200000000000000020101000000000520140216155530000000313532040111011e01200121004c01d1c727eb601be733519604455576c7b3d3c42aecf95356874f460b660000000110010fe0edf3501558917a32a39f1e77dc6cb841410b52d91adb37cd000d32303001c7a9b5bdb3c9b9a6210000000000000000;
支付终端获取消息内容的第三十字节0X04,将其作为第二流程代码数量,即第二流程代码数量为4条大于0,表示存在第二流程代码数据。
步骤222:支付终端从接收数据指令中获取第二流程代码数据和第二流程代码数量,将第二流程代码数据作为当前流程代码数据,将第二流程代码数量作为当前流程代码数量,返回步骤211;
具体地,
步骤a1:获取所述消息内容的第三十字节,将其作为第二流程代码数量,并将所述第二流程代码数量保存在缓存区中;
步骤a2:获取所述消息内容的第三十一字节,将其作为当前流程代码长度,并将所述当前流程代码长度保存在所述缓存区中;
步骤a3:根据所述当前流程代码长度从所述消息内容中的当前流程代码长度之后开始获取数据,将获取到的数据作为当前流程代码,并将所述当前流程代码保存在所述缓存区中,更新所述第二流程代码数量;
步骤a4:判断所述第二流程代码数量是否在预设范围内,是则获取所述当前流程代码之后的一个字节,将其作为当前流程代码长度,并将所述当前流程代码长度保存在所述缓存区中,执行步骤a3;否则获取所述缓存区中的数据,将其作为第二流程代码数据,清空所述缓存区。
例如,支付终端获取消息内容的第三十字节0X04,将其作为第二流程代码数量,并将其存入缓存区中,获取第二流程代码数量0X04之后的一个字节0X01,将其作为当前流程代码长度,并将其存入缓存区中,即缓存区中的数据为0X0401;从消息内容中的当前流程代码长度0X01之后开始获取长度为1字节的数据0X11,将获取到的数据作为当前流程代码,并将其存入缓存区中,即缓存区中的数据为0X040111;第二流程代码数量更新为4,获取当前流程代码0X11之后的一个字节0X01,将其作为当前流程代码长度,并将其存入缓存区中,即缓存区中的数据为0X04011101,依照此方法获取当前流程代码。最终获取到的第二流程代码数据为:040111011e01200121。
本实施例通过执行选择菜单指令,获取支付终端内部保存的第一流程代码数据,并逐条执行第一流程代码数据中的流程代码,能够使支付终端自动执行流程代码,进行交易操作;通过执行接收数据指令,从接收数据指令中获取第二流程代码数据,并逐条执行第二流程代码数据中的流程代码,能够更改支付终端业务逻辑,降低对支付终端进行维护所产生的成本,并且节约了在维护支付终端时所需要耗费的时间,提高了支付终端的使用效率。
实施例2
本实施例提供一种可解析流程代码的支付终端,具体如图4所示,包括:
存储模块301,用于存储第一流程代码数据和第一流程代码数量;
本实施例中,所述存储模块301,具体用于存储菜单功能信息,所述菜单功能信息包括存储有第一流程代码数据和第一流程代码数量;
接收模块302,用于接收来自上位机的指令;
第一判断模块303,用于判断所述接收模块302接收到的指令的类型;
第一获取模块304,用于当所述第一判断模块303判断接收到的指令是选择菜单功能指令时,根据所述选择菜单功能指令获取所述存储模块301中的所述第一流程代码数据和所述第一流程代码数量,将所述第一流程代码数据作为当前流程代码数据,将所述第一流程代码数量作为当前流程代码数量,并触发第二获取模块;
本实施例中,所述第一获取模块304,包括:
第一获取子模块,用于从所述选择菜单功能指令中获取菜单级别和交易代码;
第一判断子模块,用于判断所述存储模块301中是否存在与所述第一获取子模块获取到的所述菜单级别和所述交易代码匹配的菜单功能信息;
第二获取子模块,用于在所述第一判断子模块判断所述存储模块301中存在与所述菜单级别和所述交易代码匹配的菜单功能信息时,从所述菜单功能信息中获取第一流程代码数据和第一流程代码数量,将所述第一流程代码数据作为当前流程代码数据,将所述第一流程代码数量作为当前流程代码数量;
所述第二获取子模块,具体用于在所述第一判断子模块判断所述存储模块301中存在与所述菜单级别和所述交易代码匹配的菜单功能信息时,将所述菜单功能信息作为第一流程代码数据,获取所述第一流程代码数据的第一字节,将其作为第一流程代码数量,将所述第一流程代码数据作为当前流程代码数据,将所述第一流程代码数量作为当前流程代码数量。
第一发送子模块,用于在所述第一判断子模块判断所述存储模块301中不存在与所述菜单级别和所述交易代码匹配的菜单功能信息时,向所述上位机发送错误应答响应。
第二获取模块305,用于从所述当前流程代码数据中获取第一条流程代码,将所述第一条流程代码作为当前流程代码,并触发第一操作模块;
本实施例中,所述第二获取模块305,具体用于获取所述当前流程代码数据的第二字节,将其作为当前流程代码长度,从所述当前流程代码数据的第三字节开始获取长度为所述当前流程代码长度的数据,将获取到的数据作为第一条流程代码,将所述第一条流程代码作为当前流程代码,并触发第一操作模块。
第一操作模块306,用于执行所述当前流程代码对应的操作,得到操作结果;
第二判断模块307,用于判断所述操作结果中是否存在有效数据;
本实施例中,所述第二判断模块307,具体用于判断所述第一操作模块是否正确执行当前流程代码,并在判断出所述第一操作模块正确执行所述当前流程代码时,对所述当前流程代码的类型进行判断,如果所述当前流程代码为读取安全模块序列号或读取终端序列号,则确定所述操作结果中存在有效数据;否则确定所述操作结果中不存在有效数据;
第二操作模块308,用于当所述第二判断模块307判断所述操作结果中存在有效数据时,从所述操作结果中获取有效数据,将所述有效数据保存至缓存区中,并触发更新模块309;
更新模块309,用于更新所述当前流程代码数量,并触发第三判断模块310;
本实施例中,所述更新模块309,具体用于将所述当前流程代码数量减去预设步长,将得到的结果作为更新后的当前流程代码数量;或者,将所述当前流程代码数量与预设步长相加,将得到的结果作为更新后的当前流程代码数量。
第三判断模块310,用于当所述第二判断模块307判断所述操作结果中不存在有效数据时,根据所述当前流程代码数量判断所述当前流程代码数据中是否存在所述当前流程代码的是否存在下一条流程代码;当所述更新模块309更新所述当前流程代码数量之后,根据所述当前流程代码数量判断是否存在下一条流程代码;
本实施例中,所述第三判断模块310,具体用于在所述第二判断模块307判断所述操作结果中不存在有效数据时,判断所述当前流程代码数量是否达到预设值内,是则确定所述当前流程代码数据中存在所述当前流程代码的下一条流程代码;否则确定所述当前流程代码数据中不存在所述当前流程代码的下一条流程代码,并触发所述第三获取模块311;当所述更新模块309更新所述当前流程代码数量之后,根据所述当前流程代码数量判断是否存在下一条流程代码,并触发所述第三获取模块311;
第三获取模块311,用于当所述第三判断模块310判断存在所述当前流程代码的下一条流程代码时,从所述当前流程代码数据中获取下一条流程代码,将所述下一条流程代码作为更新后的当前流程代码,并触发所述第一操作模块306;
本实施例中,所述第三获取模块311,具体用于当所述第三判断模块310判断存在所述当前流程代码的下一条流程代码时,获取所述当前流程代码的下一个字节,将其作为下一条流程代码长度,根据所述下一条流程代码长度从所述当前流程代码数据中获取下一条流程代码,将其作为当前流程代码,并触发所述第一操作模块306。
第四判断模块312,用于当所述第三判断模块310判断不存在所述当前流程代码的下一条流程代码时,判断所述缓存区中是否存在数据;
第一发送模块313,用于当所述第四判断模块312判断所述缓存区中存在数据时,将所述缓存区中的数据发送给所述上位机,清空所述缓存区;
第二发送模块314,用于当所述第四判断模块312判断所述缓存区中不存在数据时,向所述上位机发送结束信息;
本实施例中,所述第二发送模块,还用于在所述第二判断模块判断出所述第一操作模块没有正确执行所述当前流程代码时,向所述上位机发送错误应答信息。还用于在所述第七判断模块判断出所述接收数据指令中不包含第二流程代码数据时,向所述上位机发送结束信息。
第四获取模块315,用于当所述第一判断模块303判断所述接收模块302接收到的指令是接收数据指令时,从所述接收数据指令中获取第二流程代码数据和第二流程代码数量,将所述第二流程代码数据作为当前流程代码数据,将所述第二流程代码数量作为当前流程代码数量,并触发所述第二获取模块305。
本实施例中,所述第四获取模块315,具体用于执行以下操作:
步骤a1:获取所述消息内容的第三十字节,将其作为第二流程代码数量,并将所述第二流程代码数量保存在缓存区中;
步骤a2:获取所述消息内容的第三十一字节,将其作为当前流程代码长度,并将所述当前流程代码长度保存在所述缓存区中;
步骤a3:从所述消息内容中的当前流程代码长度之后开始获取长度与所述当前流程代码长度匹配的数据,将其作为当前流程代码,并将所述当前流程代码保存在所述缓存区中,更新所述第二流程代码数量;
步骤a4:判断所述第二流程代码数量是否在预设范围内,是则获取所述当前流程代码之后的一个字节,将其作为当前流程代码长度,并将所述当前流程代码长度保存在所述缓存区中,执行步骤a3;否则获取所述缓存区中的数据,将其作为第二流程代码数据,清空所述缓存区。
本实施例中,还包括:
第五判断模块,用于当所述接收模块302接收到指令时,判断所述指令是否合法;
第三发送模块,用于当所述第五判断模块判断所述指令不合法时,向所述上位机发送错误应答信息;
第六判断模块,用于当所述第五判断模块判断所述指令合法时,判断所述指令的第一预设字节的值是否为第一预设值;
第三操作模块,用于当所述第六判断模块判断所述指令的第一预设字节的值不为第一预设值时,执行相应操作,并将操作结果返回给所述上位机。
本实施例中,还包括:
第七判断模块,用于当所述第一判断模块303判断所述接收模块302接收到的指令是接收数据指令时,判断所述接收数据指令中是否包含第二流程代码数据,并在所述第七判断模块判断所述接收数据指令中不包含第二流程代码数据时,触发第二发送模块314;
所述第四获取模块315,具体用于在所述第七判断模块判断所述接收数据指令中包含第二流程代码数据时,从所述接收数据指令中获取第二流程代码数据和第二流程代码数量,将所述第二流程代码数据作为当前流程代码数据,将所述第二流程代码数量作为当前流程代码数量,并触发所述第二获取模块305。相应的,所述第七判断模块,具体用于获取所述接收数据指令的第五、第六字节,将其作为接收数据指令数据域长度,从所述接收数据指令的第七字节开始获取长度与所述接收数据指令数据域长度匹配的数据,作为接收数据指令数据域,获取所述接收数据指令数据域的第二、第三字节,将其作为通信报文长度,从所述接收数据指令数据域的第四字节开始获取长度与所述通信报文长度匹配的数据,作为通信报文,获取所述通信报文的第四、第五字节,将其作为交易数据长度,从所述通信报文的第六字节开始获取长度与所述交易数据长度匹配的数据,作为交易数据,获取所述交易数据的第一、第二字节,将其作为交易报文长度,从所述交易数据的第三字节开始获取长度与所述交易报文长度匹配的数据,作为交易报文,获取所述交易报文的第十二、第十三字节,将其作为消息内容长度,从所述交易报文的第十四字节开始获取程度与所述消息内容长度匹配的数据,作为消息内容,判断所述消息内容的第三十字节是否大于0,是则确定存在第二流程代码数据;否则确定不存在第二流程代码数据。
本实施例中,支付终端通过获取支付终端内部保存的第一流程代码数据,并逐条执行第一流程代码数据中的流程代码,能够使支付终端自动执行流程代码,进行交易操作;支付终端通过从接收数据指令中获取第二流程代码数据,并逐条执行第二流程代码数据中的流程代码,能够更改支付终端业务逻辑,降低对支付终端进行维护所产生的成本,并且节约了在维护支付终端时所需要耗费的时间,提高了支付终端的使用效率。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (22)
1.一种可解析流程代码的支付终端的工作方法,其特征在于,包括:
步骤S1:支付终端等待接收来自上位机的指令,当接收到指令时,判断指令类型,如果是选择菜单功能指令,则执行步骤S2;如果是接收数据指令,则执行步骤S8;
步骤S2:所述支付终端根据所述选择菜单功能指令获取自身保存的第一流程代码数据和第一流程代码数量,将所述第一流程代码数据作为当前流程代码数据,将所述第一流程代码数量作为当前流程代码数量,执行步骤S3;
步骤S3:所述支付终端从所述当前流程代码数据中获取第一条流程代码,将其作为当前流程代码;
步骤S4:所述支付终端执行所述当前流程代码对应的操作,得到操作结果,判断所述操作结果中是否存在有效数据,是则执行步骤S5;否则执行步骤S6;
步骤S5:所述支付终端从所述操作结果中获取有效数据,将所述有效数据保存至缓存区中,更新所述当前流程代码数量,执行步骤S6;
步骤S6:所述支付终端根据所述当前流程代码数量判断所述当前流程代码数据中是否存在所述当前流程代码的下一条流程代码,是则从所述当前流程代码数据中获取所述下一条流程代码,将所述下一条流程代码作为更新后的当前流程代码,返回步骤S4;否则执行步骤S7;
步骤S7:所述支付终端判断所述缓存区中是否存在数据,是则将所述缓存区中的数据发送给所述上位机,清空所述缓存区,返回步骤S1;否则所述支付终端向所述上位机发送结束信息,返回步骤S1;
步骤S8:所述支付终端从所述接收数据指令中获取第二流程代码数据和第二流程代码数量,将所述第二流程代码数据作为当前流程代码数据,将所述第二流程代码数量作为当前流程代码数量,返回步骤S3。
2.如权利要求1所述的方法,其特征在于,所述步骤S1中,所述支付终端在接收指令之后,判断指令类型之前,还包括:
S1-1:所述支付终端判断接收到的指令是否合法,是则执行步骤S1-2;否则向所述上位机发送错误应答信息,返回步骤S1;
步骤S1-2:所述支付终端判断接收到的指令的第一预设字节的值是否为第一预设值,是则执行判断指令类型操作;否则所述支付终端执行相应操作,并将操作结果返回给所述上位机,返回步骤S1。
3.如权利要求1所述的方法,其特征在于,所述步骤S2,具体为:
所述支付终端从所述选择菜单功能指令中获取菜单级别和交易代码,判断所述支付终端自身是否存在与所述菜单级别和所述交易代码匹配的菜单功能信息,是则从所述菜单功能信息中获取第一流程代码数据和第一流程代码数量,将所述第一流程代码数据作为当前流程代码数据,将所述第一流程代码数量作为当前流程代码数量,执行步骤S3;否则向所述上位机发送错误应答响应,返回步骤S1。
4.如权利要求3所述的方法,其特征在于,所述支付终端从所述菜单功能信息中获取第一流程代码数据和第一流程代码数量,具体为:
所述支付终端将所述菜单功能信息作为第一流程代码数据,获取所述第一流程代码数据的第一字节,将其作为第一流程代码数量。
5.如权利要求1所述的方法,其特征在于,所述步骤S3中,所述从所述当前流程代码数据中获取第一条流程代码,具体为:
所述支付终端获取所述当前流程代码数据的第二字节,将其作为当前流程代码长度,从所述当前流程代码数据的第三字节开始获取长度为所述当前流程代码长度的数据,将获取到的数据作为第一条流程代码。
6.如权利要求1所述的方法,其特征在于,所述支付终端判断所述操作结果中是否存在有效数据,具体包括:
当所述支付终端正确执行当前流程代码时,所述支付终端对所述当前流程代码的类型进行判断,如果所述当前流程代码为读取安全模块序列号或读取终端序列号,则确定所述操作结果中存在有效数据;否则确定所述操作结果中不存在有效数据;
当所述支付终端未正确执行当前流程代码时,向所述上位机发送错误应答信息。
7.如权利要求1所述的方法,其特征在于,所述步骤S5中,所述从所述操作结果中获取有效数据,具体为:将所述操作结果作为有效数据;
所述更新所述当前流程代码数量,具体为:将所述当前流程代码数量减去预设步长,将得到的结果作为更新后的当前流程代码数量;或者,将所述当前流程代码数量与预设步长相加,将得到的结果作为更新后的当前流程代码数量。
8.如权利要求1所述的方法,其特征在于,所述根据所述当前流程代码数量判断所述当前流程代码数据中是否存在所述当前流程代码的下一条流程代码,具体为:
判断所述当前流程代码数量是否在预设范围内,是则确定存在所述当前流程代码的下一条流程代码;否则确定不存在所述当前流程代码的下一条流程代码;
所述从所述当前流程代码数据中获取所述下一条流程代码,将所述下一条流程代码作为更新后的当前流程代码,具体为:
获取所述当前流程代码的下一个字节,将其作为下一条流程代码长度,根据所述下一条流程代码长度从所述当前流程代码数据中获取下一条流程代码,将其作为当前流程代码。
9.如权利要求1所述的方法,其特征在于,所述支付终端接收到接收数据指令之后,执行步骤S8之前,还包括:
判断所述接收数据指令中是否包含第二流程代码数据,是则执行步骤S8;否则向所述上位机发送结束信息,返回步骤S1。
10.如权利要求9所述的方法,其特征在于,所述判断所述接收数据指令中是否包含第二流程代码数据,具体包括:
获取所述接收数据指令的第五、第六字节,将其作为接收数据指令数据域长度,从所述接收数据指令的第七字节开始获取长度与所述接收数据指令数据域长度匹配的数据,作为接收数据指令数据域,获取所述接收数据指令数据域的第二、第三字节,将其作为通信报文长度,从所述接收数据指令数据域的第四字节开始获取长度与所述通信报文长度匹配的数据,作为通信报文,获取所述通信报文的第四、第五字节,将其作为交易数据长度,从所述通信报文的第六字节开始获取长度与所述交易数据长度匹配的数据,作为交易数据,获取所述交易数据的第一、第二字节,将其作为交易报文长度,从所述交易数据的第三字节开始获取长度与所述交易报文长度匹配的数据,作为交易报文,获取所述交易报文的第十二、第十三字节,将其作为消息内容长度,从所述交易报文的第十四字节开始获取程度与所述消息内容长度匹配的数据,作为消息内容,判断所述消息内容的第三十字节是否大于0,是则确定存在第二流程代码数据;否则确定不存在第二流程代码数据。
11.如权利要求10所述的方法,其特征在于,所述步骤S8,具体为:
步骤a1:获取所述消息内容的第三十字节,将其作为第二流程代码数量,并将所述第二流程代码数量保存在缓存区中;
步骤a2:获取所述消息内容的第三十一字节,将其作为当前流程代码长度,并将所述当前流程代码长度保存在所述缓存区中;
步骤a3:从所述消息内容中的当前流程代码长度之后开始获取长度与所述当前流程代码长度匹配的数据,将其作为当前流程代码,并将所述当前流程代码保存在所述缓存区中,更新所述第二流程代码数量;
步骤a4:判断所述第二流程代码数量是否在预设范围内,是则获取所述当前流程代码之后的一个字节,将其作为当前流程代码长度,并将所述当前流程代码长度保存在所述缓存区中,执行步骤a3;否则获取所述缓存区中的数据,将其作为第二流程代码数据,清空所述缓存区。
12.一种可解析流程代码的支付终端,其特征在于,包括:
存储模块,用于存储第一流程代码数据和第一流程代码数量;
接收模块,用于接收来自上位机的指令;
第一判断模块,用于判断所述接收模块接收到的指令的类型;
第一获取模块,用于当所述第一判断模块判断接收到的指令是选择菜单功能指令时,根据所述选择菜单功能指令获取所述存储模块中的所述第一流程代码数据和所述第一流程代码数量,将所述第一流程代码数据作为当前流程代码数据,将所述第一流程代码数量作为当前流程代码数量,并触发第二获取模块;
第二获取模块,用于从所述当前流程代码数据中获取第一条流程代码,将所述第一条流程代码作为当前流程代码,并触发第一操作模块;
第一操作模块,用于执行所述当前流程代码对应的操作,得到操作结果;
第二判断模块,用于判断所述第一操作模块得到的所述操作结果中是否存在有效数据;
第二操作模块,用于当所述第二判断模块判断所述操作结果中存在有效数据时,从所述操作结果中获取有效数据,将所述有效数据保存至缓存区中,并触发更新模块;
更新模块,用于更新所述当前流程代码数量,并触发第三判断模块;
第三判断模块,用于当所述第二判断模块判断所述操作结果中不存在有效数据时,根据所述当前流程代码数量判断所述当前流程代码数据中是否存在所述当前流程代码的是否存在下一条流程代码;当所述更新模块更新所述当前流程代码数量之后,根据所述当前流程代码数量判断是否存在下一条流程代码;
第三获取模块,用于当所述第三判断模块判断存在所述当前流程代码的下一条流程代码时,从所述当前流程代码数据中获取下一条流程代码,将所述下一条流程代码作为更新后的当前流程代码,并触发所述第一操作模块;
第四判断模块,用于当所述第三判断模块判断不存在所述当前流程代码的下一条流程代码时,判断所述缓存区中是否存在数据;
第一发送模块,用于当所述第四判断模块判断所述缓存区中存在数据时,将所述缓存区中的数据发送给所述上位机,清空所述缓存区;
第二发送模块,用于当所述第四判断模块判断所述缓存区中不存在数据时,向所述上位机发送结束信息;
第四获取模块,用于当所述第一判断模块判断所述接收模块接收到的指令是接收数据指令时,从所述接收数据指令中获取第二流程代码数据和第二流程代码数量,将所述第二流程代码数据作为当前流程代码数据,将所述第二流程代码数量作为当前流程代码数量,并触发所述第二获取模块。
13.如权利要求12所述的支付终端,其特征在于,还包括:
第五判断模块,用于当所述接收模块接收到指令时,判断所述指令是否合法;
第三发送模块,用于当所述第五判断模块判断所述指令不合法时,向所述上位机发送错误应答信息;
第六判断模块,用于当所述第五判断模块判断所述指令合法时,判断所述指令的第一预设字节的值是否为第一预设值;
第三操作模块,用于当所述第六判断模块判断所述指令的第一预设字节的值不为第一预设值时,执行相应操作,并将操作结果返回给所述上位机。
14.如权利要求12所述的支付终端,其特征在于,
所述存储模块,具体用于存储菜单功能信息,所述菜单功能信息包括第一流程代码数据和第一流程代码数量;
所述第一获取模块,包括:
第一获取子模块,用于从所述选择菜单功能指令中获取菜单级别和交易代码;
第一判断子模块,用于判断所述存储模块中是否存在与所述第一获取子模块获取到的所述菜单级别和所述交易代码匹配的菜单功能信息;
第二获取子模块,用于在所述第一判断子模块判断所述存储模块中存在与所述菜单级别和所述交易代码匹配的菜单功能信息时,从所述菜单功能信息中获取第一流程代码数据和第一流程代码数量,将所述第一流程代码数据作为当前流程代码数据,将所述第一流程代码数量作为当前流程代码数量;
第一发送子模块,用于在所述第一判断子模块判断所述存储模块中不存在与所述菜单级别和所述交易代码匹配的菜单功能信息时,向所述上位机发送错误应答响应。
15.如权利要求14所述的支付终端,其特征在于,
所述第二获取子模块,具体用于在所述第一判断子模块判断所述存储模块中存在与所述菜单级别和所述交易代码匹配的菜单功能信息时,将所述菜单功能信息作为第一流程代码数据,获取所述第一流程代码数据的第一字节,将其作为第一流程代码数量,将所述第一流程代码数据作为当前流程代码数据,将所述第一流程代码数量作为当前流程代码数量。
16.如权利要求12所述的支付终端,其特征在于,
所述第二获取模块,具体用于获取所述当前流程代码数据的第二字节,将其作为当前流程代码长度,从所述当前流程代码数据的第三字节开始获取长度为所述当前流程代码长度的数据,将获取到的数据作为第一条流程代码,将所述第一条流程代码作为当前流程代码,并触发第一操作模块。
17.如权利要求12所述的支付终端,其特征在于,
所述第二判断模块,具体用于判断所述第一操作模块是否正确执行当前流程代码,并在判断出所述第一操作模块正确执行所述当前流程代码时,对所述当前流程代码的类型进行判断,如果所述当前流程代码为读取安全模块序列号或读取终端序列号,则确定所述操作结果中存在有效数据;否则确定所述操作结果中不存在有效数据;
所述第二发送模块,还用于在所述第二判断模块判断出所述第一操作模块没有正确执行所述当前流程代码时,向所述上位机发送错误应答信息。
18.如权利要求12所述的支付终端,其特征在于,
所述更新模块,具体用于将所述当前流程代码数量减去预设步长,将得到的结果作为更新后的当前流程代码数量;或者,将所述当前流程代码数量与预设步长相加,将得到的结果作为更新后的当前流程代码数量。
19.如权利要求12所述的支付终端,其特征在于,
所述第三判断模块,具体用于在所述第二判断模块判断所述操作结果中不存在有效数据时,判断所述当前流程代码数量是否达到预设值内,是则确定所述当前流程代码数据中存在所述当前流程代码的下一条流程代码;否则确定所述当前流程代码数据中不存在所述当前流程代码的下一条流程代码,并触发所述第三获取模块;当所述更新模块更新所述当前流程代码数量之后,根据所述当前流程代码数量判断是否存在下一条流程代码,并触发所述第三获取模块;
所述第三获取模块,具体用于当所述第三判断模块判断存在所述当前流程代码的下一条流程代码时,获取所述当前流程代码的下一个字节,将其作为下一条流程代码长度,根据所述下一条流程代码长度从所述当前流程代码数据中获取下一条流程代码,将其作为当前流程代码,并触发所述第一操作模块。
20.如权利要求12所述的支付终端,其特征在于,还包括:
第七判断模块,用于当所述第一判断模块判断所述接收模块接收到的指令是接收数据指令时,判断所述接收数据指令中是否包含第二流程代码数据;
所述第二发送模块,还用于在所述第七判断模块判断出所述接收数据指令中不包含第二流程代码数据时,向所述上位机发送结束信息;
所述第四获取模块,具体用于在所述第七判断模块判断出所述接收数据指令中包含第二流程代码数据时,从所述接收数据指令中获取第二流程代码数据和第二流程代码数量,将所述第二流程代码数据作为当前流程代码数据,将所述第二流程代码数量作为当前流程代码数量,并触发所述第二获取模块。
21.如权利要求20所述的支付终端,其特征在于,
所述第七判断模块,具体用于获取所述接收数据指令的第五、第六字节,将其作为接收数据指令数据域长度,从所述接收数据指令的第七字节开始获取长度与所述接收数据指令数据域长度匹配的数据,作为接收数据指令数据域,获取所述接收数据指令数据域的第二、第三字节,将其作为通信报文长度,从所述接收数据指令数据域的第四字节开始获取长度与所述通信报文长度匹配的数据,作为通信报文,获取所述通信报文的第四、第五字节,将其作为交易数据长度,从所述通信报文的第六字节开始获取长度与所述交易数据长度匹配的数据,作为交易数据,获取所述交易数据的第一、第二字节,将其作为交易报文长度,从所述交易数据的第三字节开始获取长度与所述交易报文长度匹配的数据,作为交易报文,获取所述交易报文的第十二、第十三字节,将其作为消息内容长度,从所述交易报文的第十四字节开始获取程度与所述消息内容长度匹配的数据,作为消息内容,判断所述消息内容的第三十字节是否大于0,是则确定存在第二流程代码数据;否则确定不存在第二流程代码数据。
22.如权利要求21所述的支付终端,其特征在于,
所述第四获取模块,具体用于执行以下操作:
步骤a1:获取所述消息内容的第三十字节,将其作为第二流程代码数量,并将所述第二流程代码数量保存在缓存区中;
步骤a2:获取所述消息内容的第三十一字节,将其作为当前流程代码长度,并将所述当前流程代码长度保存在所述缓存区中;
步骤a3:从所述消息内容中的当前流程代码长度之后开始获取长度与所述当前流程代码长度匹配的数据,将其作为当前流程代码,并将所述当前流程代码保存在所述缓存区中,更新所述第二流程代码数量;
步骤a4:判断所述第二流程代码数量是否在预设范围内,是则获取所述当前流程代码之后的一个字节,将其作为当前流程代码长度,并将所述当前流程代码长度保存在所述缓存区中,执行步骤a3;否则获取所述缓存区中的数据,将其作为第二流程代码数据,清空所述缓存区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410318520.7A CN104091259B (zh) | 2014-07-04 | 2014-07-04 | 一种可解析流程代码的支付终端及其工作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410318520.7A CN104091259B (zh) | 2014-07-04 | 2014-07-04 | 一种可解析流程代码的支付终端及其工作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104091259A CN104091259A (zh) | 2014-10-08 |
CN104091259B true CN104091259B (zh) | 2017-12-19 |
Family
ID=51638974
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410318520.7A Active CN104091259B (zh) | 2014-07-04 | 2014-07-04 | 一种可解析流程代码的支付终端及其工作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104091259B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104506311B (zh) * | 2015-01-12 | 2017-09-22 | 飞天诚信科技股份有限公司 | 一种实现签到功能的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101425167A (zh) * | 2007-10-30 | 2009-05-06 | 中国银联股份有限公司 | 生成交易信息的方法及解析交易信息的方法 |
CN102541639A (zh) * | 2011-12-26 | 2012-07-04 | 北京握奇数据系统有限公司 | 一种cpu 卡数据处理方法、系统及cpu 卡 |
CN102761557A (zh) * | 2012-07-31 | 2012-10-31 | 飞天诚信科技股份有限公司 | 一种终端设备认证方法及装置 |
CN103138937A (zh) * | 2013-02-28 | 2013-06-05 | 飞天诚信科技股份有限公司 | 一种签名方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5202230B2 (ja) * | 2008-10-29 | 2013-06-05 | 三菱電機株式会社 | データ操作装置及びデータ操作システム及びコンピュータプログラム及びデータ操作方法 |
-
2014
- 2014-07-04 CN CN201410318520.7A patent/CN104091259B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101425167A (zh) * | 2007-10-30 | 2009-05-06 | 中国银联股份有限公司 | 生成交易信息的方法及解析交易信息的方法 |
CN102541639A (zh) * | 2011-12-26 | 2012-07-04 | 北京握奇数据系统有限公司 | 一种cpu 卡数据处理方法、系统及cpu 卡 |
CN102761557A (zh) * | 2012-07-31 | 2012-10-31 | 飞天诚信科技股份有限公司 | 一种终端设备认证方法及装置 |
CN103138937A (zh) * | 2013-02-28 | 2013-06-05 | 飞天诚信科技股份有限公司 | 一种签名方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104091259A (zh) | 2014-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106033393B (zh) | 一种应用程序测试方法及系统以及移动终端 | |
CN105069617B (zh) | 一种恢复不完整交易的方法和装置 | |
CN104125547B (zh) | 处理短信的方法及短信处理装置 | |
CN102830999A (zh) | 安卓系统刷机方法和装置 | |
CN106131687A (zh) | 数据烧录方法及装置 | |
CN106570662A (zh) | 自提柜信息处理方法及装置 | |
CN103744787A (zh) | 一种手机自动化测试方法 | |
CN104063777A (zh) | 自提柜的控制系统和方法及对应的自提柜 | |
CN105630550A (zh) | 一种启动应用程序的方法及终端 | |
CN108229616A (zh) | 一种人工影响天气装备和弹药的监控系统及监控方法 | |
CN110458640A (zh) | 一种商品展示方法、装置、服务器和可存储介质 | |
CN103945430A (zh) | 一种移动终端类型推荐方法及装置 | |
CN104091259B (zh) | 一种可解析流程代码的支付终端及其工作方法 | |
CN110119918A (zh) | 物流订单配送的预分配方法及系统、电子设备和存储介质 | |
CN106529925A (zh) | 一种蓝牙可视卡及实现电子现金交易的方法 | |
CN106228364A (zh) | 一种信息呈现方法及呈现装置 | |
CN106781070B (zh) | 一种自助快递柜服务系统 | |
CN108121556A (zh) | eMMC兼容升级方法、智能终端以及可读存储介质 | |
CN107204898A (zh) | 智能家电的生产测试方法、系统及存储设备、移动终端 | |
CN107358485A (zh) | 一种民族商品的展示方法、存储介质及平台服务器 | |
CN104182258B (zh) | 一种pos终端升级装置及其升级方法 | |
CN102769702B (zh) | 基于短信设置移动电话闹钟的方法及装置 | |
CN106327275A (zh) | 物品信息共享方法和装置 | |
CN110347570A (zh) | 一种ide环境下代码自动生成工具分析方法 | |
CN206907155U (zh) | 一种基于人脸识别的智能包裹柜及取件系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |