MISPOS系统详细设计Word格式文档下载.docx
《MISPOS系统详细设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《MISPOS系统详细设计Word格式文档下载.docx(35页珍藏版)》请在冰豆网上搜索。
向该进程发测试交易,返回测试结果。
Step3:
检测umsPinSrv及密钥设置情况。
调用加密库,利用指定的WorkKey及密钥索引做加密运算,
……
业务处理进程设计
输出处理进程设计
1.4模块间交互控制
输出处理进程与外部系统一般采用TCP通讯,超时时间50秒。
业务处理进程与输出处理进程之间采用本地Socket方式通讯,超时时间53秒。
输入管理进程与业务处理进程之间采用本地Socket方式通讯,超时时间56秒。
前台系统与输入管理进程之间采用TCP通讯,超时时间60秒。
任何进程产生超时都将向上一级系统(进程)返回内部返回码E00
只有前台系统与业务处理进程能够发起冲正。
业务处理进程在遇到接收应答超时、收到内部返回码E00时,将直接发起冲正,并返回内部返回码E00;
当前台系统遇到接收应答超时或交易成功但后续操作失败(如打印签购单失败)时,将发起冲正交易,前台系统收到E00不需再发起冲正。
1.5接口定义
前台接口定义
收银端接口报文由【报文长度+报文头+报文体+MAC】的结构构成。
【报文长度】为两个字节的网络字节序整数,具体定义如下:
#defineu_int16unsignedshort
u_int16iPackLen;
【报文头】采用结构体定义的定长格式,报文头为每个交易所必须的公共部分,具体定义如下:
typedefstructtagTUMS_CLIENT_PKGHEAD
{
charsaVersion[2+1];
//主版本号1byte+副版本号1byte,如10
charsaTransCode[4+1];
//交易代码(功能号)
charsaCrypt[2+1];
//加密方式1byte,0-不加密,1-DES,2-3DES,其它保留
charsaOperNo[20+1];
//收银员编号
charsaMchtCode[20+1];
//商户编号(系统内部编号,可以与银联的商户代码一致,也可自行分配,通过商户编号与收银台号对应一个机台,并在服务器端根据不同的应用映射真实的商户代码与终端号,如银联应用、储值卡应用等)
charsaCounterNo[10+1];
//收银台号(前台统一设置收银台号,由后台自动映射终端编号)
charsaSerial[20+1];
//标识该笔交易的序列号,应答报文应原样返回,格式”YYYYMMDDHHMISS”,序列号+商户编号+终端号唯一标识一笔交易,后台应做校验,目前暂定14位,后补‘\0’
charsaRecNum[4+1];
//记录条数(报文体中含有多条信息时适用,一般报文填‘0001’)
charsaNextPkg[1+1];
//是否有后续包(0-没有,1-有)
charsaRetNo[3+1];
//内部返回码(返回提示信息saRetMsg由于是可变长字段,一般定义在报文体的第一个字段中,不得超过250个字节)
charsaTrack2Len[2+1];
//二磁道信息长度,压缩之前的长度
charsaTrack2[24+1];
//二磁道信息
chariTrack3[3+1];
//三磁道长度
charsaTrack3[64+1];
//三磁道信息
}TUMS_CLIENT_PKGHEAD;
报文头共计176个字节
【报文体】
报文体采用竖线分割的变长结构(报文体中不得出现不可见字符,否则一律使用BCD码展开;
最后一个字段之后没有分隔符),具体定义如下
报文体的最大长度为1280个字节,不得越界。
红色部分字段为必填项。
【MAC】
视交易而定,不需要MAC的交易,该字段为8个字节的’/0’
银联POSP应用类交易(功能号头两位01)
取工作密钥(向服务器取工作密钥)
ums_cup_getworkkey(0101)上送
字段名
字段长度
描述
ums_cup_getworkkey(0101)返回
saRetMsg
/
返回内容描述,可为空
saPinKey
16
saMacKey
消费(需要MAC)
ums_cup_pca(0102)上送
saAmt
单位元,小数点二位
saEncPin
saKey
32
前台保存的PINKEY+MACKEY
saEnFlag
1
‘0’-返回中文,’1’-返回英文,涉及到的返回字段:
saMchtName、saBankName、saAdv
saAnnId
2
‘00’~‘99’循环取数,标识当前公告的版本,如版本不一致,则下发新的公告内容,如不需要公告,则传’-1’
saExFlow
20
收银系统的小票流水号(二次开发时使用,记入流水库,与收银系统对帐匹配时使用)
返回内部错误时(返回码E开头):
ums_cup_pca(0102)返回
最新公告版本
saAnnounce
公告内容(不得含有’|’)
返回码A开头:
saCupRetNo
银联POSP应用的返回码
saCupRetMsg
应用返回码描述
saCupRetHelp
应用返回错误时的提示操作
saMchtCode
15
银联POSP应用的具体商户代码
saMchtName
商户名称
saTermNo
8
银联POSP应用的终端号
saBankCode
发卡银行编号
saBankName
发卡银行名称
saCardNo
卡号
saRefSeq
12
中心流水
saDate
14
交易日期YYYYMMDDHHMISS
saExDate
4
卡有效日期
saBatchNo
6
批次号
saSeqNo
流水号
saAuthNo
授权号
交易金额,元为单位,小数点2位
saAdv
签购单上打印的额外信息,如为空则不打印(譬如中奖信息等等);
换行通过^分割
saSDBankCode
收单银行代码
saSDBankName
收单银行名称
iAppId
1-银联卡应用,2-银商储值卡,3-瑞富通卡
注:
·
返回E07,则表示前台存放密钥过期,新密钥通过报文PCA应答带回,存放在报文体saRetMsg中(32个字节,PINKEY+MACKEY)中,前台应用应更新保存密钥,同时重新驱动密码键盘,提示用户再次输入密码并再次上送。
如连续两次上送。
返回E00,表示交易超时,但前台应用不需发起冲正;
只有在交易无应答或后续操作失败的情况下,可发起冲正。
内部返回码E开头,则表示系统内部错误,无需判断应用返回码;
A开头,则系统操作无误,需判断应用返回码。
内部返回码A01,应用返回码00,则表示已中奖,应提示收银员并将中奖信息saAdv打印在签购单上。
消费冲正(需要MAC)
ums_cup_pcc(0152)上送
saOrSerial
原交易序列号
单位元,小数点二位,用于校验
ums_cup_pcc(0152)返回
返回内容描述,内部返回码E开头时有效,可为空
冲正通过“序列号+商户编号+终端号”唯一标识原交易,其中商户编号及终端编号在报文头中,序列号在报文体中
所有银联冲正应答结构都采用统一格式
撤销(需要MAC)
ums_cup_pra(0103)上送
原批次号
原流水号
密码密文
同消费报文
ums_cup_pra(0103)返回
seDate
签购单上打印的额外信息,如为空则不打印(譬如中奖信息等等)
1-银联卡应用,2-银商储值卡,3-瑞富通卡
若服务器未找到匹配的原交易,则返回E08
同消费报文处理
撤销冲正(需要MAC)
ums_cup_prc(0153)上送
ums_cup_prc(0153)返回
查询余额(需要MAC)
ums_cup_inq(0104)上送
ums_cup_inq(0104)返回
余额,元为单位,小数点2位
查询交易明细(不需要MAC)
ums_cup_schtxn(0120)上送
查询失败返回:
ums_cup_schtxn(0120)返回
查询成功返回(记录条数在报文头中指定,报文最大长度控制明细笔数):
Lst1
Lst2
…
LstN
每笔明细内容(通过^分割)(148个字节一笔)
20(max)
13(max)
saOperNo
操作员编号
saTxnName
10(max)
交易类型
重打印查询(不需要MAC)
ums_cup_reprint(0121)上送
原批次号,如果为空,则系统自动查找当日上一笔交易返回
ums_cup_reprint(0121)返回
未找到原交易,返回E08。
查询成功返回(与消费交易格式一致):
saTrnName
终端换批
服务器收到换批交易后,依次向中心发送结算、签退以及签到交易(如某一步交易无法成功,则直接返回错误步骤及原因,不需继续往下做),并将结果返回前台。
前台在做完换批交易后,应联机做签到交易,更新密钥。
ums_cup_chgBatch(0105)上送
ums_cup_chgBatch(0105)返回
管理类交易(功能号头两位00)
检测密码键盘密钥有效性
ums_manage_chkPinPad(0001)上送
加密的密码密文
ums_manage_chkPinPad(0001)返回
交易约定输入的密码明文为123456,PinKey密文:
1234567890ABCDEF,服务器端应预先保留加密正确的密文结果(CheckValue),以便检测时核对;
返回检测结果根据内部返回码判定,A00检测通过,E02检测不通过,返回其它则为其它错误,无法认定检测结果。
检测网络状态
ums_manage_chkNet(0002)上送
ums_manage_chkNet(0002)返回
iStep
检测步骤,详见注解
检测网络分为几个步骤,返回
iStep必须有返回值,一项未检测,iStep=0;
iStep小于最后一项的步骤,说明中间存在问题,未全部检测通过
iStep=1:
收银台到服务器网络通畅,后续步骤未检测
iStep=2:
正在检测服务器到路由器网络,成功返回A00,失败返回E02
iStep=3:
正在检测服务器到银联网络(发模拟报文检测),收到银联应答,则返回A00,否则返回E02
检测服务器状态
ums_manage_chkSrv(0003)上送
ums_manage_chkSrv(0003)返回
检测数据库是否正常。
后续步骤未检测。
登陆成功,返回A00,无法登陆返回E04
检测加密进程状态。
成功返回A00,失败返回E03
IStep=3:
检测加密机主密钥。
以123456为PIN明文,1234567890ABCDEF为PinKey密文,调用加密指令加密PIN,与预先设置的CheckValue进行比对,如全部检测通过,返回A00,否则返回E03,saRetMsg应包含检测哪组主密钥未通过的相关信息。
IStep=4:
检测业务处理进程状态。
通过发检测报文测试,收到应答返回A00,否则返回E02。
收银机公告
ums_manage_announce(0004)上送
idx
公告索引(可设置多个公告信息)
ums_manage_announce(0004)返回
公告内容可设置多项,具体由监控管理平台提供设置界面,公告应能设置有效期、公告范围(即收银台号范围),后台根据合法性校验,判别是否发送公告内容,需要发送返回A00,无公告信息最新saAnnId以及空的saAnnounce字段,否则返回其它错误。
身份认证
ums_manage_chkOper(0005)上送
saPass
收银员登陆密码(收银员号在报文头)
iType
验证类别
ums_manage_chkOper(0005)返回
saOperName
操作员姓名
iType表示验证类别
0-收银员登陆认证
1-收银主管授权认证
某些特殊的交易需要收银主管认证,譬如撤销时的主管认证等等。
2-系统管理员认证
一些管理类功能的授权认证,譬如设置系统参数等等。
认证通过,返回A00,否则返回E06
·
普通收银员登陆,后台可配置是否校验密码,一个终端同时只能由一个收银员登陆,不能覆盖,只能由收银程序发送收银换班交易,统计信息清零后才能覆盖。
系统初始化
在收银程序启动时调用,用于与后台同步终端信息,包括:
1、检查终端参数设置有效性(如商户代码、终端号等)
2、检查该终端是否已有收银员登陆,若有则取回收银员信息,若无,则提示收银员登陆
3、取回公告信息
ums_manage_initSys(0006)上送
报文头中saOperId为空
ums_manage_initSys(0006)返回
255(max)
saOperId
收银员号,若为空,前台提示收银员登陆,并做登陆交易
收银员姓名
256(max)
saFunc
开通功能