微信支付回调请求间隔(优雅的处理微信支付异步回调)(1)

优雅的处理微信支付异步回调

处理背景

1.由于使用的是v2版本的微信支付,微信支付响应是xml字符串,所以处理需要对此响应进行解析成java对象

1.在业务中把微信支付进行了统一封装,如调用微信支付会在系统业务级别对操作记录进行处理,如记录业务类型,支付状态,订单号,支付结果等,导致会在支付后接收微信支付通知响应时候,需要对响应信息对微信支付操作进行回写记录等等,

初始版本的微信回调实现处理

此种处理回调没有问题,但是如果场景过多,如商城订单支付,会员开通支付,续费支付等等业务场景,都需复写上述操作,

把会变化之处独立出来,把不需要变化的抽离出来,各是各,分开写

由上分析可看出这是一个典型的环绕处理,而环绕操作就是不需要变化的部分,每个支付的场景就是变化之处,可以采用切面来完成,处理方式,初步考虑基于注解来处理业务处理前置操作和后置操作,但思考过后发现缺失灵活性,于是决定采用策略模式通过接口来解决此问题

改动1.上述代码把xml字符串单独抽离出来,已类变量方式存在,定义构建方法赋值xml字符串

2.定义微信回调处理接口

3 定义处理处理结果接口,赋值xml同时在赋值接口信息,然后面向接口开发,不是面向实现类

4调用

优点

自此完成,相对之前

系统更有弹性,

调用者只需关注调用业务本身,无需关注其他

代码整洁度提高,在后期维护也更方便

,