联想集团有限公司第1页/共7页SOP通讯格式规则1.概述通讯数据包由公共信息部分、交易数据部分公共信息部分包括系统信息头和交易公共信息头。交易数据部分包括交易数据头(可选)、业务数据和系统控制命令。业务数据部分又包括数据单元、表格和对象。业务数据部分可以插入系统控制命令。1.1系统信息头部分是与系统相关的,包括目标服务代码、数据源代码、长度等系统信息,由系统配置文件(数据库表,下同)指定,每字段的个数、顺序、长度固定。1.2交易公共信息头部分是跟同一数据包中所包含的所有交易相关的信息,包括交易的终端,交易柜员,机构等信息,组织方式同系统信息头的格式。1.3交易数据头部分包括交易代码,交易模式,前台流水号,授权柜员等信息,组织方式同系统信息头的格式。1.4业务数据部分由长度+数据组成,长度用一个字节的二进制数表示,数据全部转换成字符串传送,字符串的最大长度由系统的BYTE_MAX_LEN宏定义指定(在本系统里,我们定义BYTE_MAX_LEN为250(0xFA)),大于该长度的部分系统保留作为控制命令用。如果数据单元的长度超过BYTE_MAX_LEN,则分段发送,0xFF作为超长数据的标志。例如要传768字节数据,由于系统定义BYTE_MAX_LEN为250,则该数据段为0xFF+250字符+0xFF+250字符+0xFF+250字符+0x12+18字符;如要传250字节数据时,则该数据段为0xFA+250字符。控制命令部分。在业务数据中,可以穿插控制命令,其格式为:控制字符标志+控制字符串长度+控制字符串。控制字符标志由系统保留的BYTE_MAX_LEN~0xFF之间的字符标识,在本系统中系统保留字符为0xFB,0xFC,0xFD,0xFE,目前仅使用0XFE作为打印相关的控制命令标识符。整个通讯数据包的组成示意图如下:公共信息交易数据交易头业务数据系统信息头交易公共信息头交易数据头数据单元数据单元数据单元表格单元对象单元。。。控制命令码可以穿插在业务数据之间,如单元与单元之间,表格内部数据项之间,以及对象内数据项之间下面将分几个部分详细描述整个系统的通讯格式。联想集团有限公司第2页/共7页2.单元定义2.1数据单元(TRANFLD)数据单元TRANFLD是COP和SOP中代表特定内容的基本数据项,一般对应一个应用数据定义,在SOP平台中采用可自解包的通讯格式。数据单元通讯格式如下:可选机构名可选金额可选266字节数据。。。属性0X5“A网点”属性0X6“123.45”属性0xFF250字节0X1016字节每一个数据单元在通讯格式中用两个部分表示——长度+内容。内容部分都以字符串方式传输,截掉前导和后续的空格,以减少冗余数据的传输。长度以一个字节的16进制数表示,可表示的最大长度为250(0XFA)字节,若数据单元长度超过250字节,则采用分解传送的方式,以0XFF表示数据单元超长,如上图中266字节数据单元。长度定义中0XFB~0xFE保留,作为控制命令使用,见控制命令描述。属性是可选项,可以包括多种属性,目前仅支持打印属性。对于一般数据单元不需要定义,对于其它对象一般需要定义相应属性。打印属性定义格式如下:打印行打印列打印模式YX0,1,2...本系统中,要求Y=250&&X=250。打印模式的具体含义见打印模式定义。2.2表格单元(FORM)表格单元FORM是指COP和SOP平台中由格式相同的多条记录组成的复合数据单元,其中每一条记录的数据又由多个数据单元组成。表格在通讯格式中以表格名+记录条数+多条记录数据组成,每一条记录又由多个数据单元(表示方法同数据单元)表示。表格单元的通讯格式如下:表格名记录条数栏位个数可选项记录01记录020X3“F01”0X20X3打印属性或其它0X3“ABC”0X2借0x7“1234.99”0X4“李明”0X2贷0x5“20.00”表格名长度表格名称见下表姓名项借贷标志项金额项姓名项借贷标志项金额项属性是可选项,在一般数据单元的定义中不使用。在本系统中,记录条数不得大于250个。如果记录条数可能大于250条,必须采用文件传输的方式解决这一问题。表格的打印属性定义如下:起始行号打印列1模式1打印列2模式2。。。打印列n模式nYX1M1X2M2XnMn模式M1~Mn为数字代码,含义同数据单元中的说明。其它属性定义可以根据扩展对象的属性进行定义。2.3对象单元联想集团有限公司第3页/共7页COP/SOP的对象代表一个具有特定属性的复合数据单元,是COP/SOP系统实现后台驱动前台的基础。对象描述中必须包括对象名,其它属性如字段排列顺序等可在外部静态定义。对象的组成元素可以包括数据单元和表格单元等系统支持的各类单元。在COP/SOP系统中,对象的类型可以根据需求进行扩展和定义,目前支持的对象类型包括窗口对象、打印对象等。对象一般由对象名+数据单元(可选项)+表格单元(可选项)组成。一个包含数据单元和表格单元的窗口对象的通讯格式如下:对象名对象内容0X5“OBJ01”数据单元数据单元。。。表格单元01数据单元。。。窗口对象的对象内容中不包含数据单元和表格单元的可选属性,如行、列、模式等信息。打印对象由对象名+[打印属性+数据单元](可选项)+[表格名称+记录条数+栏位数+打印属性+格数据](可选项)+打印控制命令码(可选项)组成。打印控制命令码见打印控制命令码介绍。2.4控制命令码控制命令码可以穿插在数据单元之间,也可以穿插在表格单元的数据项之间。COP/SOP系统中保留了0XFB~0XFE之间的取值作为控制命令标志用。目前仅使用控制命令标志0XFE,作为打印控制命令码传输标志。控制命令标志控制命令长度N位控制序列0XFE0xN0x14。。。在这里有一个换页打印的问题,本系统定义了0xFE为系统控制命令标志,换页符为0x0c换行0x0a。因此,如果需要换页打印,该换页控制命令串为0xFE+0x01+0x14;该串可以置于打印对象的数据单元或表格单元之前(如0xFE+0x01+0x14+TRANFLD或FORM),也可以置于FORM数据中某一条记录之前(如FORM的第n-1条记录+0xFE+0x01+0x14+FORM的第n条记录),其它地方一概予以忽略。3.输入信息格式输入/输出是相对后台主机而言的。输入信息是指客户端发向后台主机的信息。输入信息包由系统信息头、交易公共头、交易数据头、业务数据组成。其中系统信息头、交易公共头和交易数据头采用结构化的数据格式;业务数据采用长度加字符串的传输方式,在本系统中,除二进制数据外,其他数据都转换成字符串类型进行传输。输入信息包的格式如下:公共信息交易数据1交易数据2。。。系统信息头交易公共头交易数据头数据单元数据单元表格单元。。。交易数据头数据单元数据单元。。。输入信息格式中不允许存在对象单元和控制命令码,业务数据由数据单元和表格单元组成。数据单元和表格单元的传输格式见单元定义。下面将介绍系统信息头、交易公共头、交易数据头三个部分的数据格式。3.1系统信息头联想集团有限公司第4页/共7页系统信息头的格式如下:(55bytes)报文头总长140B{数据包长度(SHJBCD)unsignedshort2B//转换成网络格式报文MAC(BAWMAC)char(16)MAC机构号MACJGHchar(4)//表示报文中MAC的对方机构号PIN种子PINZHZchar(16)//表示报文中PIN的种子(随机数参与加密)目标地址(YNDIZH)unsignedchar(4)//二进制方式存储源地址(MBIODZ)unsignedchar(4)//二进制方式存储系统保留位(BOLIUW)unsignedchar(1)//二进制方式存储信息结束标志(XXJSBZ)unsignedchar(1)//二进制方式存储报文序号(SJBSXH)unsignedshort2B//转换成网络格式校验标志(JIOYBZ)unsignedchar(1)//二进制方式存储密钥版本号(MIYBBH)integer4B}字段说明信息长度:表示整个数据包的长度,包括本数据项所占用的字节数。目标地址:目标服务器的地址,以代码表示,包含目标服务器,服务端口等信息。具体表示方法见附录。源地址:交易发起端地址,以代码表示,包含源设备,服务端口等信息。具体表示方法见附录。系统保留位:暂不使用。默认设置为0信息结束标志:为适应多包数据通讯保留,默认设置为1报文序号:为了防止报文恶意重发设置,暂不使用,默认值为0校验标志:是否需要MAC或其它校验,暂不使用;报文MAC:校验算法生成的数据项3.2交易公共头公共交易头格式如下:(21bytes){终端号ZHNGDHchar(5)String//字符串方式存储城市代码CHSHDMchar(4)String机构代码YNGYJGchar(4)String交易柜员JIO1GYchar(8)String联想集团有限公司第5页/共7页}字段说明终端号:交易发起端终端号,省略TTY,如21a表示终端tty21a。城市代码:暂不使用,设置为空格机构代码:银行机构代码。交易柜员:交易柜员代码。3.3交易数据头交易数据头格式如下:(64bytes){交易代码JIAOYMchar(4)//String交易子码JIOYZMchar(2)//String交易模式JIOYMSchar(1)//String交易序号JIOYXHint4B//int(pjyjk:N4)本交易包长度COMMLNunsignedshort2B(pjyjk:n2)//系统偏移1PNYIL1unsignedshort2B//0xFFFF为无效系统偏移2PNYIL2unsignedshort2B//0xFFFF为无效前台流水号QANTLSchar(12)前台日期QANTRQchar(8)授权柜员SHOQGYchar(8)//String授权密码SHOQMMchar(16)//String授权柜员有无卡标志YWKABZchar(1)授权柜员卡序号CZYNXHchar(2)}字段说明交易子码:判断某个复合交易中的子交易码交易序号:主要为组合交易使用,是前台带到后台的组合交易序号。系统偏移:记录加密字段的偏移位置授权柜员有无卡标志:0-无卡1-有卡;4.输出信息格式输出信息是指后台交易完成后返回给前台的通讯数据,由系统信息头、交易公共头、返回业务数据组成。输出信息包的格式如下:公共信息业务数据系统信息头交易公共头对象1对象2。。。对象n4.1系统信息头系统信息头同输入信息格式。4.2交易公共头联想集团有限公司第6页/共7页交易公共头的数据格式如下:(41bytes){交易代码JIAOYMunsignedchar(4)联动交易码LDJYDMunsignedchar(4)/*--前台读取—前台再联动-*/交易日期JIOYRQchar(8)交易时间JIOYSJint4B(PJYJK:L4)柜员流水号GUIYLSchar(12)出错交易序号CWJYXHshort2B错误代号PTCWDHchar(7)//成功返回AAAAAAA,其他返回错误代码}字段描述交易代码:输入数据中的第一个交易代码。柜员流水号:财务交易产生,包含四位柜员号及六位顺序号信息。出错交易序号:出错交易的交易序号,是由前台生成并传输到后台的。交易状态:前三位为错误类型,后4位为错误代码。见附录错误代码分类表。4.3业务数据部分对于业务数据部分,采用对象传输方式,不允许直接传输单独的数据单元或表格单元。4.3.1错误信息对象在错误情况下,此处为错误描述对象,其格式如下例:错误信息对象名错误信息0X6“ERRMSG”0X02-10x“此帐号不存在”4.3.2正常交易对象交易状态正常情况下,数据格式如下:业务数据对象1对象2。。。对象N5.附录:5.1打印模式定义打印模式字符代码含义0(默认)S4c1宋体,正常字,15CPI,6LPI1S4c1宋体,正常字,15CPI,6LPI2S4C1宋体,正常字,10CPI,6LPI3S4c2宋体,正常字,15CPI,8L