分类: IT职场
2011-12-23 13:02:20
一笔交易在终端已经置为成功标志,但是发送到主机的帐务交易包没有得到响应,所以不确定该笔交易是否在主机端也成功完成,为了确保用户的利益,终端重新向主机发送请求,请求取消该笔交易的流水,如果主机端已经交易成功,则回滚交易,否则不处理,然后将处理结果返回给终端。
一般银行这类系统会提供下账和相应冲正交易接口,大多是SOCKET方式提供,
通常,交易发起方,也就是你这方,需产生一个交易请求流水号,
当冲正时,在冲正请求交易里面指定被冲正交易的流水号.
大多冲正交易仅允许一个交易日内..
用途可以有两方面:
1,交易完整性:
A,如,当银行端下账交易超时,或者网络超时,你作为交易发起端是无法获得交易是否成功与失败的
信息..这时候,该交易就处于不明确状态.需要用冲正交易去把此交易处理成失败.
B,如,当银行端下账成功,接着你这方处理代收费不成功,于是前面下账成功的交易需要处理成失败.这也是需要用到冲正交易.
2,业务功能上:
在某些情况下,允许用户在短时内撤消整个代收费交易,这时,作为完整交易的一部分的银行下账,
也就相应作冲正处理.
目前大部分银行业务处理系统采用冲正或重复办理的方式,了解决数据不一致的问题。这两种方式的基本思想,都是当数据不一致性问题发生后,通过事后附加的干预过程来进行补救。
(一)冲正方式
冲正方式下,一笔交易以客户端为准,客户端完成,该笔交易才完成,客户端失败,则该笔交易失败。当应答传输过程失败,前端认为该笔交易失败,将产生一笔冲正交易。该笔冲正交易将取消上一笔交易的结果,从而恢复客户端及服务端的数据一致性。
按产生冲正交易的时机,可以分为三种:
●立即冲正,是一笔交易超时无应答时,发出冲正;
●定时冲正,是指按固定的时间间隔,发出冲正;
●当一笔交易未成功时,在做下一笔交易时,先自动做一个冲正交易,当冲正交易完成后,才执行正常交易。目前,pos系统广泛使用的是下一笔交易冲正的方式。
冲正方式程序控制简单,适应性广。但这种方式无法确保冲正成功的时间,从而也就无法控制风险存在的时间。一个极端的情况是,通讯故障是由于物理线路中断造成的,在线路恢复正常前,冲正交易无法完成,风险将一直存在。
(二)重复办理方式
重复办理方式下,一笔交易以服务端为准,服务端处理成功,无论客户端是否收到结果,均认为该笔交易成功。当应答传输过程失败造成客户端交易失败,客户端必须重复办理该笔交易,在服务端,收到重复的交易请求,若该笔交易已处理,则将上笔交易的结果作为本次交易的处理结果返回,若未处理,则按正常交易进行处理。
这种方式的优点在于控制简单,易于实现。局限性基本同冲正方式,即无法控制风险存在的时间。另外,以服务端为准的条件使它的使用范围受到一定的限制。在对公会计系统中,通常采用重复办理的方式。