资源描述
移动银行联网技术协议
移动银行联网技术协议
一、 总体目标
二、 基本原则
三、 系统构造
四、 系统设计
一、 总体目标:
利用现代通讯技术,建立移动与银行之间的信息传输通道;遵循行业规范,提供通用的中间交易平台;采纳先进的数据库操作技术实现信息安全可靠的存取;达到银行收取移动通信话费和预存款的目的。在此基础上,以电子商务思想为主导,逐步实现银行自动转帐、“电话银行”、Internet网、ATM机及语音等多种缴费方式以及网上移动各种业务服务功能。为移动运营商拓展营销活动空间、开发服务用户市场、加强行业竟争优势、挖掘新的经济增长点提供多种先进可行的手段。
二、 基本原则:
1:为确保移动和银行各自数据的存储安全及相对独立性,禁止一方对对方或它方对双方数据库的直接操作。
2:为确保移动至银行、银行至移动数据的传输安全,对关键数据或全部数据应采取加密措施。
3:为保证数据来源的不可否认性,应采取身份认证措施。
4:在保证功能的前提下,确保系统的可靠性。
5:在保证系统可靠性的前提下,确保或尽可能提高系统的性能。
三、 系统构造:
围绕总体目标,遵循基本原则,结合技术市场实际对系统做如下构造:
TM
DDN
银行业务网
全省营业内部网
移动代理主机
LAN
防火墙
管理终端
银行代理机
1、 硬件构造:
l 说明:
移动方和银行方各自增加一台主机,称作代理机或代理服务器(Agent Server)。代理机之间通过网络设备和网络线路相连。
在银行方,代理机以银行营业网联接方式与银行营业网相连,作为银行营业网的一个网络接点,是银行与移动进行信息交换的枢纽(Hinge)。
在移动方,代理机以移动营业网联接方式与移动营业网相连,作为移动营业网的一个网络接点,是移动与银行进行信息交换的枢纽(Hinge)。
主要网络设备:
路由器(Router)
防火墙(FireWall)
目的:防止外部攻击。
指标:包过滤
基于IP包的源地址和目的地址的过滤
网络地址转换(NAT)
基于网络端口的访问控制
IP地址和MAC地址的对应
l 网络传输界质:
代理机与内部网之间的信息传输介质依各自内部网联网方式而定。 移动代理机与银行代理机之间的信息传输介质采用DDN专线。
l 代理机(Agent Server):
机型: 具体型号参照用户要求而定
指标:
BUS:64位(或32位)
CPU : 双CPU(或多CPU)
RAM :128M---1G(业务量决定)
STORAGE: 主机硬盘:
磁盘阵列(DiskRaid)
数量:两块
容量:8 G以上
2、 系统软件组成:
l 操作系统:UNIX OS 具体版本依主机型号而定
l 数据库产品:由各自业务网络系统确定
l 通讯交易中间平台:
l 安全加密软件:
标准DES算法
身份认证
(支持X。509。V3标准)
3、 应用软件:
根据总体目标和用户实际环境定制
四、系统设计
模块化设计,将中间交易平台划分为基础服务模块和业务处理模块,基础服务模块主要包括安全、通讯、事务监控等子模块,该模块是整个平台的核心;业务处理模块是针对各自综合业务网络系统为各种系统接入提供统一的应用接口,该模块是建立在基础服务模块之上的。
1.业务流程设计
签到应答
成功
成功
人工维护恢复
人工维护恢复
签到申请
受理查询
受理查询
成功
显示数据
录入数据
业务受理
合法
记帐
成功
提示错误
提示错误
提示错误
打印收据
提示成功
记帐
返回
银 行
移 动
签到
业务受理
N
N
N
N
N
成功
返回
记录错误日志
告警
人工维护数据
签退申请
签退应答
成功
成功
人工签退
人工签退
返回
对帐
对帐应答
应答
返回
对帐
有错误记录
记录错误日志
告警
人工维护数据
返回
提示成功
签退
对帐
N
Y
Y
N
Y
银行
主机
银行
前台
银行
代理
服务
器
移动
代理机
l ①①
①
②
③
④
⑤
⑥
⑦
⑧
⑨
33333333333⑩
(10)
(11)
(12)
(13)
一笔交易业务流程示意图
客户到银行网点可使用现金、支票、储蓄存折(借记卡)、信用卡等手段缴费,其缴费步骤如下 :
1) 输入客户标识码(输入手机号码)等,银行前台发起查询客户应缴费金额交易;
2) 银行代理主机接收交易请求,转发给移动代理机;
3) 移动查询客户应缴费金额,将结果返回银行代理主机;
4) 银行代理主机将查询结果返回前台;
5) 前台得到客户应缴费金额后,客户缴费,银行柜员输入客户实际缴纳费用,银行前台发起客户缴费交易;
6) 银行代理主机将交易请求转发给银行主机;
7) 银行主机进行帐务冻结处理,将结果返回银行代理主机;
8) 银行代理主机将交费验证交易转发给移动;
9) 移动进行缴费验证处理,将结果返回银行代理主机;
10) 银行代理主机将验证结果返回银行主机;
11) 银行主机将交费结果返回银行代理机
12) 银行代理主机将记帐结果(成功)返回移动代理机,银行代理机不等移动确认。
13) 银行代理主机将记帐结果(成功或失败)返回前台,银行前台打印缴费收据,缴费过程完成。
2.管理功能设计
2.1 系统日常管理
l 系统初始化:初始化系统参数、密钥,清当日交易日志表、补做记录表、失败日志表等
l 日末处理:当日交易流水归档,手工处理失败日志等
l 签到:各银行向移动签到
每个工作日的开始,接受银行签到请求,确认银行认证码,修改银行签到状态,产生当日传输密钥,回送银行。若银行签到失败,银行可再次向移动签到,至成功为止,否则当日业务无法开展。
说明:
每个工作日内,成功的签到只有一次,也就是说不允许多次签到。
在网络正常的情况下,签到成功的条件是:前日日末处理处于就续状态。
l 签退:各银行向移动签退
每个工作日的结束,接受银行签退请求,确认银行认证码,修改银行签到状态,并把签退结果信息回送银行。若银行签退失败,银行可再次向移动签退,至成功为止,否则下一步业务无法开展。
l 对帐:移动与各银行对帐。
在银行签退的状态下,接受银行日末对帐请求,对工作日内移动缴费、删帐明细与银行缴费、删帐记帐明细进行核对,并把对帐结果状态回送银行。银行方缴费、删帐记帐明细以文件形式传输给移动方。若银行方数据有MAC错,返回码“1101”,否则返回码为“0000”。
数据一致 :移动与银行缴费及删帐明细完全相符。
银行多帐 :遵循以银行帐为主的原则,(自动)补做。
移动多帐 :标识移动多帐错误“1010”,记错误日志。
数据不符 :标识数据不符错误“1011”,记错误日志。
数据MAC错:银行数据不合法,
对帐后若银行多帐,遵循以银行帐为主的原则,移动方(自动)补做。对其它情况除MAC错之外,人工根据错误记录进行处理。
说明:
1. 对帐是为保证交易完整性,而进行的检查、修正的特殊交易。
2. 利用银行前置机和移动前置机的日志对帐
3. 按银行类别为单位对帐
4. 银行首先记帐,保证银行日志不少于移动日志。
5. 以银行记录为准,在移动补做遗漏的记录。(移动只收不支)
6. 对帐失败要告警并提供手工调整数据手段
7. 补做失败要告警并提供手工调整数据手段
8. 多帐指交易笔数非金额
日末营业结束后由银行统一发起对帐交易
l 月末处理:月末报表统计、打印。
2.2 联网银行管理
l 银行增加:
l 银行修改:
l 银行查询:
2.3 密钥处理
l 设置或更改主密钥
l 初始化传输密钥
l 生成新的MAC密钥
l 生成新的交换密钥
2.4 系统维护
l 数据备份
数据恢复
l 数据清理:清除日志等
3.接口设计
3.1 通讯模式:
移动、银行代理机之间的通讯采用TCP/IP协议,使用TCP以异步方式接入。
3.2 数据包帧格式:
struct CtlMsg {
unsigned char morepkt;
/* 是否还有更多的包? 有 ‘1’ 无 ‘0’ */
unsigned char pktype;
/* 包类型 ‘1’ 数据请求 ‘2’ 数据应答 ‘3’ 文件 请求
‘4’ 文件应答 */
unsigned char unitend;
/* 一类的结束 结束 ‘1’ 没结束 ‘0’ */
unsigned char save; /* 保留位 */
unsigned short sequence;
/* 包序号 从 1 开始, 网络字节序 */
unsigned short length;
/* 包实际传的长度(交易内容长小于216),整个包216,定长(交易内容大于216,分包), 网络字节序 */
unsigned long msgtype;
/* 发起交易的进程ID 号,每个交易是唯一的,网络字节序*/
};/* 包控制信息 */
struct Header {
char code[CODESIZ]; /* 交易码 CODESIZ=6 */
char d_add[ORDERSIZ]; /* 交易目的地 ORDERSIZ=9*/
char l_add[ORDERSIZ]; /* 交易发起地 */
};/* 包头部信息 */
struct pktstru {
struct CtlMsg ctlmsg;
struct Header header;
char datatrans[MAXDATASIZ];
/* 包传输内容 MAXDATASIZ=216 */
};/* 包结构 */
说明:
如果传输文件,则文件包与数据包分开,该文件包的前28个字节为文件名域,不足补‘空‘。
3.3 交易类型:
交易类型大体可分为:查询交易,缴费交易,删帐交易,对帐交易,签到、签退交易等。详细的交易类型列表如下:
交易类型 交易类型说明
100010 查询已交费交易
100011 完全划拨帐单打印交易 /* useless */
100012 交费查询交易
100013 删帐查询交易(--> 删帐验证交易)
200010 现金交费验证交易
210010 现金交费确认交易
400010 删帐交易
600001 对帐交易
900001 签到交易
900002 签退交易
100014 帐单查询打印交易
3.4交易包格式
3.4.1 交费查询交易格式:(交易类型100012)
· 请求:
位域 类型 备注
交易包头部 C36
操作代码 C4 b000单机交费
b002退款
b004已交费查询
b005帐单查询打印
机器号码 C11 数字机: 机器号码
模拟机: 长途区号+机器号码
银行代码 C8
· 应答:
位域 类型 备注
交易包头部 C36
返回码 C4
合同号 C15
地区代码 C2
市县代码 C2
单位 C59
姓名 C12
/* 付款方式 C1 */ // the place changed
运行状态 C1
付款方式 C1 // the place changed to here
未出帐话费 C12
信誉度 C12
预存款 C12
/* 补收月租费 C12 */ // remove this line
模拟机器数 C4 ( --> C2 )
数字机器数 C4 ( --> C2 )
建议应收款 C12 // added on Oct 21, 2000
应交费明细记录数 C4
应交费明细 {
年份 C4 (发票的数据项)
月份 C2 (发票的数据项)
本月欠费 C12 本次应收 (发票的数据项)
应收款 C12 本次话费 (发票的数据项)
滞纳金 C12 (程序计算结果)
优惠款 C12
预存款划拨 C12
新交款 C12
月租费 C12 (发票的数据项)
特服费 C12
本网费(本地童话费)C12 (发票的数据项)
漫游费(漫游通话费)C12 (发票的数据项)
长途费(长途通信费)C12 (发票的数据项)
附加费 C12
其他费 C12
代收信息费 C12 (发票的数据项)
代收频占费 C12 (发票的数据项)
农话费 C12
补收费 C12
}
3.4.2 查询已交费交易格式(单机):(交易类型100010)
· 请求:
位域 类型 备注
交易包头部 C36
操作代码 C4
机器号码 C11
银行代码 C8
开始时间 C14 YYYYMMDDHHMMSS
结束时间 C14 YYYYMMDDHHMMSS
· 应答:
位域 类型 备注
交易包头部 C36
返回码 C4
已交费明细记录数 C4
已交费明细 {
交费时间 C14 YYYYMMDDHHMMSS
交欠费 C12
交滞纳金 C12
/* 补收月租费 C12 */ // remove this line
交预存款 C12
其他费 C12 // these 3 line added on Oct 30, 2000
机器费 C12
信息费 C12 // end of adding
现金交款 C12
支票交款 C12
托收回款 C12
利息交款 C12
工号流水 C10
工号 C6
出帐年 C4
出帐月 C2
交费地点 C40
}
3.4.3完全划拨帐单打印交易格式(单机):(交易类型100011)
· 请求:
位域 类型 备注
交易包头部 C36
操作代码 C4
机器号码 C11
银行代码 C8
开始时间 C14 YYYYMMDDHHMMSS
结束时间 C14 YYYYMMDDHHMMSS
· 应答:
位域 类型 备注
交易包头部 C36
返回码 C4
合同号 C15
单位 C59
姓名 C12
附款方式 C1
运行状态 C1
未出帐话费 C12
信誉度 C12
预存款 C12
应交费明细记录数 C4
应交费明细 {
年 C4
月 C2
本月欠费 C12 本次应收 (发票单)
应收款 C12 本次话费 (发票单)
优惠款 C12
预存款划拨 C12
新交款 C12
状态 C8 *
月租费 C12
特服费 C12
本网费 C12
漫游费 C12
长途费 C12
附加费 C12
其他费 C12
代收信息费 C12
代收频占费 C12
农话费 C12
补收费 C12
}
3.4.4现金缴费验证交易格式(交费确认交易格式复用请求部分):
(交易类型200010)
· 请求:
位域 类型 备注
交易包头部 C36
操作代码 C4
地区代码 C2
市县代码 C2
银行代码 C8 前两位为银行类别(例如61工行 62中行63农行 64建行),后六位为银行网点编码
银行流水 C8 银行方送移动时产生的流水号
机器号码 C11
实缴金额 C12
记帐日期 C14 YYYYMMDDHHMMSS
MAC C16 校验内容:银行代号、银行流水、机器号码、实缴金额、记帐日期
MAC为ASCII码
· 应答:
位域 类型 备注
交易包头部 C36
返回码 C4
银行代码 C8
银行流水 C8 银行方送移动时产生的流水号
MAC C16 校验内容:银行代号、银行流水、返回码
MAC为ASCII码
如果验证成功,则将本次交费的发票内容以文件的形式,由移动生成后发送到银行,银行将文件内容再发送到打印机进行打印。
文件名规则:
银行代码(8位)+下划线(1位)+日期(YYYYMMDD(8位))+银行流水(8位)
3.4.5删帐请求格式(银行向移动发请求删帐查询):
(交易类型100013)
· 请求:
位域 类型 备注
交易包头部 C36
操作代码 C4
地区代码 C2
市县代码 C2
银行代码 C8
要删帐银行流水 C8
机器号码 C11
记帐日期 C14 YYYYMMDDHHMMSS
· 应答:
位域 类型 备注
交易包头部 C36
返回码 C4
银行代码 C8
银行流水 C8 /* 三项合计长度20 */
/* MAC C16 校验内容:银行代号、银行流水、返回码
MAC 为ASCII码 */
3.4.6删帐确认交易格式(银行向移动发请求删帐):
(交易类型400010)
· 请求:
位域 类型 备注
交易包头部 C36
操作代码 C4 ‘b002’
地区代码 C2
市县代码 C2
银行代码 C8
银行流水 C8 银行方送移动时产生的流水号
要删帐银行流水 C8
机器号码 C11
记帐日期 C14 YYYYMMDDHHMMSS
MAC C16 校验内容:银行代码、银行流水、要删帐银行流水、机器号码、记帐日期
MAC为ASCII码
3.4.7对帐交易格式:(交易类型600001)
· 请求:
位域 类型 备注
交易包头部 C36
银行类别 C2 银行类别,如农行63
缴费交易笔数 C6 银行方数据
缴费交易总额 C12 银行方数据
· 应答:
位域 类型 备注
交易包头部 C36
返回码 C4
银行类别 C2
缴费交易笔数 C6 移动方数据
缴费交易总额 C12 移动方数据
3.4.8签到交易格式:(交易类型900001)
· 请求:
位域 类型 备注
交易包头部 C36
银行类别 C2
双方认证码 C16 签到时作双方相互认证
· 应答:
位域 类型 备注
交易包头部 C36
返回码 C4
双方认证码 C16 签到时作双方相互认证
MAC密钥 C16 MAC为ASCII码
3.4.9签退交易格式:(交易类型900002)
· 请求:
位域 类型 备注
交易包头部 C36
银行类别 C2
双方认证码 C16 签退时作双方相互认证
· 应答:
位域 类型 备注
交易包头部 C36
返回码 C4
双方认证码 C16 签退时作双方相互认证
3.4.10帐单打印交易格式(单机):(交易类型100014)
· 请求:
位域 类型 备注
交易包头部 C36
操作代码 C4 b005帐单查询打印
机器号码 C11
银行代码 C8
查询类型 C2
开始时间 C14 YYYYMMDDHHMMSS
结束时间 C14 YYYYMMDDHHMMSS
· 应答:
位域 类型 备注
交易包头部 C36
返回码 C4
查询类型:
01 通讯费帐单
02 信息费帐单
03 商务费帐单
文件名规则:
通讯费帐单:ZD_01_’移动号码(11位)‘
信息费帐单:ZD_02_’移动号码(11位)‘
商务费帐单:ZD_03_’移动号码(11位)‘
注意:1、如没有帐单,则返回(交费)记录不存在:1006
3.5 附录:
3.5.1 位域的属性类型
位域属性 说明
C =字符型,后补空格
YYYYMMDD =日期型,长度为8
HHMMSS =时间型,长度为6
银行流水如不够8位前补0;
月,日不够2位的前补0
金额*100,去小数点传输
3.5.2 银行为移动方代出缴费明细附件内容
发票以移动局提供的发票样张为准
3.5.3 对明细帐文件格式
银行方向移动方传明细帐文件,其格式为:各域以"|"为分隔符,以"\n"为一笔交易结束符,具体的域的约定如下表所示:
文件名:YD_XX_YYYYMMDDHHMMSS (XX 银行类别, YYYYMMDD 日期)
格式如下
序号 内容 含义 说明
MAC C16
操作代码 C4
地区代码 C2
市县代码 C2
银行代码 C8
银行流水 C8
机器号码 C11
记帐日期 C14 YYYYMMDDHHMMSS
交易内容
交费 {
实缴金额 C12
}
退款 {
要删帐银行流水 C8
}
注:{}里可变字段,不同操作代码交易内容不同。
MAC为ASCII码
所有字段用‘|’进行分隔。
银行代码、银行流水按ASCII码升序排序
4.运行设计
4.1运行模块的组合和控制
各交易模块采用“交易驱动”模式,即各交易模块仅处理一种交易,且均为交易总控模块所调用,交易总控模块根据该交易类型的相应交易码,判断调用哪个交易模块,控制整个交易过程,若交易过程中出现异常情况,调用异常处理模块,进行处理。
4.2 运行时间控制
各交易处理模块与移动主机或银行代理主机通讯,控制交易时间,若超时,仍未收到对方应答,则返回交易总控模块通讯故障,交易总控模块不控制交易时间。
移动代理主机负责与银行代理主机、移动主机进行通讯,负责管理操作员、银行等资料,并对交易流水记录,打印统计报表等。本部分主要集中在移动代理主机上与银行代理主机、移动主机的各通讯模块功能划分与接口设计。
l 移动代理主机各模块功能划分:
² 交易总控模块
负责与银行代理机通讯,对接收到的交易数据,根据交易类型及相应参数,调用各交易处理模块,控制交易处理流程
² 与移动主机通讯的查询交易处理模块
负责与移动主机通讯,被总控模块调用,处理查询客户应缴费交易
² 与移动主机通讯的缴费交易处理模块
负责与移动主机通讯,被总控模块调用,处理客户缴费交易
² 与移动主机通讯的退缴费交易处理模块
负责与移动主机通讯,被总控模块调用,处理客户退缴费交易
l 移动代理主机各模块接口设计:
² 各模块采取“交易驱动”模式
所有交易均由交易总控模块控制,即用户仅启动交易总控模块,其它模块则由总控模块根据交易类型对其调用。总控模块与其它模块交易数据的交换方式
双方通过一数据缓冲区作为接口,交换数据方式为:总控模块与对端建立连接后,先探查此次交易是否本地交易,不是转发,若是,取出交易码,并跟据交易码找到相应的处理程序,调用其执行,被调用模块若是缴费交易同时往交易流水表记一笔流水。
5.异常处理设计
对于银行代理机由于通讯故障或应用系统原因,通讯子系统报超时错,银行应用系统认为移动交易失败。移动代理机日终对帐进程进行帐务核对,移动缺帐手动(自动)补做。
6.安全保密设计
6.1 系统密钥管理体系
系统采用DES加密和MAC校验算法,实行三级密钥管理,
主 密 钥
存储密钥
PKG密钥
MAC密钥
1. MAC密钥:用于判断收到数据包的真伪,以防止攻击者构造虚假交易包传送给通讯双方从而达到作案目的。MAC密钥是计算MAC值时所用到的密钥。传输(MAC)密钥:用MAC密钥进行加密的操作对象都是交易数据包,属于三级加密体系的第一级,因此统称为传输密钥。
2. 交换密钥:在传输密钥中MAC密钥是动态变化的密钥,在每天开始交易前,通过签到交易,随机产生新的MAC密钥,这个密钥值是不能在网上明文传送的,对这个密钥进行加密的密钥称为交换密钥,它属于三级加密体系的第二级。
3. 主密钥:传输密钥、交换密钥都需要存储起来,它们的存储形式也不能用明文保存,必须进行加密,将传输密钥、交换密钥加密存储时所用到的密钥称为主密钥,它属于三级加密体系的第三级。
在上述密钥体系中,MAC密钥通过签到、签退,由系统每天动态变化,其生命期仅为一天,不再需要人为管理。交换密钥由于是用于加密传输密钥,其生命周期较长,在经过一段时间运行后,应对其进行更换。主密钥固定,不能更换。
6.2 系统签到、签退时双方的相互认证
为保证系统签到、签退时,银行、移动双方身份的相互认证,设立16位字符的认证码,由银行、移动设专人负责,双方约定,定期更换。
l 签到过程:
每天早晨开始交易前,由银行向移动签到,银行将认证码用交换密钥加密,传送给移动;移动用交换密钥对认证码进行解密,并与移动代理机上存储的认证码进行核对,若错误,则返回错误信息,若正确,则移动代理生成MAC密钥,将MAC密钥用交换密钥加密,对认证码用MAC密钥加密,回传银行,银行用交换密钥将MAC密钥解密,并用MAC密钥对收到的认证码密文进行解密,并进行核对,若正确则签到成功。
l 签退过程:
交易结束后,由银行向移动签退。银行将认证码用交换密钥加密,传送给移动;移动用交换密钥对认证码进行解密,并与移动代理机上存储的认证码进行核对,若错误,则返回错误信息,若正确,对认证码的用MAC密钥加密,回传银行,银行用MAC密钥对收到的认证码密文进行解密,并进行核对,若正确则签退成功。
6.3 系统加密、解密过程
交易数据包分为包头、包体两部分,规定如下:
l 进行MAC加密;
l 包体部分字段作为计算MAC值输入数据;
l MAC值放在包体后;
l 包体MAC串不是8的倍数,后填空,补足8的倍数,再进行MAC加密。
6.4 密钥的产生、存储与使用
为方便银行、移动双方软件商对密钥的使用,同时为防止密钥失窃,特约定如下:
l MAC密钥每天由银行向移动签到时,移动随机产生;
l 交换密钥、认证码由银行和移动双方约定;
l 双方约定的交换密钥、移动随机产生的MAC密钥,是经主密钥加密成密文存储在硬盘上,在加密包文时,必须用主密钥对其解密。
移动银行联网技术协议附件1:
1、机构编码及通信端口号
机构代码 机构名称 发送端口 接收端口
110223300 移动
110223361 工行 6100 6101
110223362 建行 6200 6201
110223363 农行 6300 6301
110223364 中行 6400 6401
2、交易返回码代码表
返回代码表
代码信息
0000
交易成功
1000
银行代码不合法
1001
号码不存在
1002
无法验证
1003
交费不足
1004
高额交费不足
1005
交费不符
1006
交费记录不存在
1007
预销号码,去移动交费。补齐欠费即可销号。
1010
移动多帐(笔数)
1011
数据不一致
1012
文件格式错误
1013
补作错误
1100
认证码错误(或不符)
1101
MAC校验不符
1200
非签到状态
1201
未签退,不允许对帐
1202
未对帐,不允许签到
1203
签到状态,不允许再次签到
1204
非签到状态,不允许签退
2000
数据库操作错误
2005
不支持一日多次对帐
3.超时控制
整个交易超时参考值在交易类型已列出,包之间超时值为10S,由于各家银行都不一样,一般交易有任一时间超时可认为整个交易失败,也可以做超时重发。但各确认交易,要重发5次以上,保证确认交易的成功。
4、交易完整性
通常交易完整性都是由通讯中间件和交易中间件共同完成,而且要贯穿OLTP(联机事务)的每一部分。跨系统的OLTP处理,不可能对双方系统进行全面改造,但为了保证交易完整性,在通常两次交易基础上,加半次交易,使移动作为收钱方只少帐,不会多帐,日终通过对帐,自动补记少帐。
5、扩展性
交易应具有原子性,不可分割性。在通讯部分,只关心交易码,请求及应答包长度,这几项内容应是参数化的,可配置的,这样,新增加交易,通讯只需知道交易码,请求及应答包长度,其它不用关心。对于交易内容发生变化,在应用接口应支持参数配置文件解析,比如交费查寻请求包其配置文件可以为:
1000121 C4C11C8;/* 100012 交易码 1 请求 0 应答 */
这样就可以随意增加或减少改变字段,以上只是方法一种,仅供参考。
6.举例说明:
现以100012(交费查询)举例说明:
假设工行与移动连网
工行以发送端口6100与移动建立连接,
(2) 请求包赋值:(以下并不符和C语言语法)
unsigned char morepkt=‘0’;
unsigned char pktype =‘1’;
unsigned char unitend=‘1’;
unsigned char save; /* 保留位 */
unsigned short sequence=htoi(1);
unsigned short length =htoi(23);
unsigned long msgtype =htol(x);
char code[CODESIZ]=”100012”;
char d_add[ORDERSIZ]=”110223300”;
char l_add[ORDERSIZ]=“110223361”;
char datatrans[MAXDATASIZ]=“b0001398000907761??????”;
(3) 发送完断开连接
(4) 移动进行数据处理
(5) 移动以端口6101与银行建立连接
(6) 发送包赋值
第一个包:
unsigned char morepkt=‘1’;
unsigned char pktype =‘3’;
unsigned char unitend=‘0’;
unsigned char save; /* 保留位 */
unsigned short sequence=htoi(1);
unsigned short length =htoi(216);
unsigned long msgtype =htol(x);
char code[CODESIZ]=”100012”;
char d_add[ORDERSIZ]=”110223361”;
char l_add[ORDERSIZ]=“110223300”;
char datatrans[MAXDATASIZE]=”C4C15C2C2C60C12C1C12C12C12C2C2C4C4C2C12C12C12C12C12C10”;
第二包:
unsigned char morepkt=‘0’;
unsigned char pktype =‘3’;
unsigned char unitend=‘1’;
unsigned char save; /* 保留位 */
unsigned short sequence=htoi(1);
unsigned short length =htoi(134);
unsigned long msgtype =htol(x);
char code[CODESIZ]=”100012”;
char d_add[ORDERSIZ]=”110223361”;
char l_add[ORDERSIZ]=“110223300”;
char datatrans[MAXDATASIZE]=”C2C12C12C12C12C12C12C12C12C12C12C12”;
字段不足位后补空格(金额前补空格)
数据和文件都有时,包序号要连续编码。文件的第一个包前28字符为文件名区
展开阅读全文