在常见的商城类平台,一般会接入微信,支付宝等支付方式.同时为了避免支付通道出现问题导致无法支付的情况,也会介入一些其他支付公司的通道.在程序里我们该如何分辨,和调用不同公司的支付通道呢?
1. 首先用户在页面上下单,会给服务器传递多个必要的参数, 支付方式(微信,支付宝),和支付通道(支付平台).首先页面上的支付方式,一定是动态查询出来的,当用户选择下单,一定要把通道信息发送给服务器.
2. 在第一步中后端已经拿到通道信息,我们会根据传递的通道信息觉得调用哪一家支付平台的接口
当然,是可以使用if判断是哪个支付平台,但这样既不美观 也不方便维护
if(通道==支付平台1){
平台1.下单
}else if(通道==支付平台2){
平台2.下单
}
设计模式之策略模式
1. 定义支付平台的公共接口:这里面最主要的就是 getType(),相当于给每个平台定义唯一标识
public interface PayService {
/**
* 获取当前通道类型标识
*
*/
String getType();
/**
* 支付
*
*/
PayResult pay(Order order) throws Exception;
/**
* 退款
*
*/
RefundResult refund