支付平台有哪些优势?如何面对请求处理问题?

发布人:百里聚合支付  发布时间:2022/9/26 18:41:35
支付平台聚合了多种第三方支付,因此在请求层需要做很多的适配工作,以满足多种支付的需求。

可能你会想,直接在适配那里加几行 if else 不就得了吗,这么做也没问题,也可以满足多种支付的需求,但你有没有想过,假设此时再加一个第三方支付,你会怎么做?


你只能在原有方法上加多个 else 条件,这样就会导致请求层代码不断地随着业务发展改变,使得代码极其不优雅,而且也不好维护。

这时我们就得用上策略模式,将这些 if else 代码消除,当我们增加一个第三方支付时,我们只需要新建一个 Strategy 类就可以了,策略模式究竟怎么使用可以看看大话设计模式。


支付平台的请求处理:

由于支付平台涉及到资金,支付的各种请求与返回,以及异常记录在一个支付平台中异常重要,因此我们需要记录每一次的支付请求记录,以便后续排查问题。

基于这点需求,我在开始请求第三方支付之前,设计了一层 Handler 层,所有的请求都必须经过 Handler 层进行处理,Handler 核心方法如下:

public K handle(T t) { 
 K k; 
 try { 
 before(t); 
 k = execute(t); 
 after(k); 
 } catch (Exception e) { 
 exception(t, e); 
 } 
 return k; 

protected abstract void before(T t); 
protected abstract void after(K k); 

protected abstract void exception(T t, Exception exception); 


原则上来说,我设计的 Handler 层,利用了模版模式,不仅仅可以实现日志的记录,还可以实现多种处理方式,比如请求监控,消息推送等等,实现了 Handler 层的高扩展性。


Baidu
map