代码中减少if else语句

Java实现支付功能的案例

统一支付接口

详细代码:PayService.java


/**
 * @author 光州大少爷
 * @version 1.0
 */
public interface PayService {

    /**
     * 支付方法
     *
     * @param payModel
     * @return
     */
    DataModel pay(DataModel payModel);

    /**
     * 支付标识
     *
     * @return
     */
    String channelId();
}


WeChat支付服务实现

微信支付

详细代码:WeChatPayServiceImpl.java


/**
 * @author 光州大少爷
 * @version 1.0
 */
@Service("weChatPayServiceImpl")
public class WeChatPayServiceImpl implements PayService {

    @Override
    public DataModel pay(DataModel payModel) {
        DataModel payResult = new DataModel();
        payResult.setFieldValue("payStatus", "微信支付成功");
        return payResult;
    }

    @Override
    public String channelId() {
        return "WeChatPay";
    }
}


AliPay支付服务实现

支付宝支付

详细代码:AliPayServiceImpl.java


/**
 * @author 光州大少爷
 * @version 1.0
 */
@Service("aliPayServiceImpl")
public class AliPayServiceImpl implements PayService {

    @Override
    public DataModel pay(DataModel payModel) {
        DataModel payResult = new DataModel();
        payResult.setFieldValue("payStatus", "支付宝支付成功");
        return payResult;
    }

    @Override
    public String channelId() {
        return "AliPay";
    }
}


Bank支付服务实现

银联支付

详细代码:PayService.java


/**
 * @author 光州大少爷
 * @version 1.0
 */
@Service("bankCardPayServiceImpl")
public class BankCardPayServiceImpl implements PayService {

    @Override
    public DataModel pay(DataModel payModel) {
        DataModel payResult = new DataModel();
        payResult.setFieldValue("payStatus", "银行卡支付成功");
        return payResult;
    }

    @Override
    public String channelId() {
        return "BankCardPay";
    }
}


支付路由服务PayRouteService.java

支付路由

详细代码:PayRouteService.java


/**
 * @author 光州大少爷
 * @version 1.0
 */
@Service
public class PayRouteService {

    public Set payServiceSet;

    public Map payServiceMap = new HashMap<>();


    public PayRouteService(Set payServiceSet) {
        this.payServiceSet = payServiceSet;
        for (PayService payService : payServiceSet) {
            payServiceMap.put(payService.channelId(), payService);
        }
    }


    /**
     * 支付方法,统一路由
     *
     * @param payModel
     * @return
     */
    public DataModel pay(DataModel payModel) {
        PayService payService = payServiceMap.get(payModel.getStringValue("channelId"));
        return payService.pay(payModel);
    }
}


控制层调用

详细代码:PayController.java


/**
 * @author 光州大少爷
 * @version 1.0
 */
@RestController
@RequestMapping("/api/pay")
public class PayServiceController extends AbstractBaseController {

    @Autowired
    private PayRouteService payRouteService;


    @RequestMapping(method = RequestMethod.POST, value = "/send")
    @ResponseBody
    public Map pay(HttpServletRequest request, @RequestBody Map requestMap) {
        DataModel resultModel = new DataModel();
        try {
            DataModel payModel = this.getInputData(requestMap);
            DataModel payResult = payRouteService.pay(payModel);
            this.handleSuccess(resultModel, payResult);
        } catch (ValidationException ve) {
            this.handleValidationException(resultModel, ve);
        } catch (Exception e) {
            this.handleException(resultModel, e);
        }
        return resultModel;
    }
}



测试结果1


测试结果2


测试结果3

展开阅读全文

页面更新:2024-04-21

标签:光州   代码   大少爷   路由   银行卡   语句   标识   接口   测试   方法   详细

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top