重试服务的运转与应用核心在于两部分:重试服务自身的重试规则和路由系统针对重试服务的处理机制。在具体阐述每个关键部分之前,我们先看看一个完整的时序图是怎么交互的,见图1。其中,参与的服务有支付平台、决策引擎、重试服务、路由服务、鉴权服务、收银服务、支付通道等。
交易订单经过支付系统时,系统处理时序如下。
1)支付平台上送交易请求。上送商户信息、行业、交易金额、交易类型等,请求获取可用的支付方式、支付品牌及支付通道。
2)路由计算最优通道。路由根据上送参数及风险结果计算最优通道。由于重试服务的存在,路由需要缓存支付订单号、风险结果、最优通道ID,留作后用。
3)返回可用支付方式。路由返回可肢付方式、通道及要的支付要素。
4)提交用户支付信息。支付平台根据返回信息进行显示,用户输入支付要素之后,将支付信息提交给决策引擎。
5)收银处理支付请求。收银系统收到支付信息后,记录支付订单号、支付流水号和支付状态,将交易上送给支付通道。
6)支付通道返回交易结果。支付通道处理交易,并返回交易结果及报错明细(假定支付失败)。
7)收银系统更新订单状态。收银系统收到支付结果后,更新订单状态并将支付结果返回给决策引|擎。
图1 重试服务时序图
8)调用重试服务。决策引|擎根据支付情况,调用重试服务,请求判断是否可以重试。
9)匹配重试规则。重试服务,根据报错原因以及重试次数等规则来匹配是否可以重试(假定可以重试)。
10)调用路由请求可用通道。根据重试服务的返回结果将订单号等要素上送给路由服务,再次请求可用通道。
11)路由重试获取缓存结果。路由根据请求订单号,获取缓存中订单的风险等级、之前的下发通道。
12)路由准备支付数据。路由系统为了有更多通道可参与重试,读取系统中已存储卡数据(包含协议号),将此次上送要素中未验证要素提交到鉴权通道进行鉴权,以判断要素正确性。
13)匹配重试通道。根据已验证正确要素情况及路由规则计算最优通道。注意:只将验证正确要素用于重试计算。
14)返回二次路由可用通道及要素或者协议号。将获取可用通道及所需要素或者协议号并返回给决策引擎。
15)继续发起交易请求。决策引擎收到支付要素及最优通道后,将支付要素上送给交易系统,进而流转至支付通道;支付通道将支付结果返回给交易系统,进而给决策引擎。
16)支付结果后续处理。根据支付结果成功与否,决策引擎进行后续逻辑处理:展示支付结果或者继续调用重试服务。
通过以上内容我们了解了重试服务中各服务是如何运转的,接下来我们来看重试服务是如何设计的。