代码中减少ifelse语句
Java实现支付功能的案例支付接口PayService.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
在冰雪路面上,怎么驾驶才最安全?冬天,雨雪天气和路面结冰现象增多,给车辆的驾驶带来诸多困难。怎样正确掌握冰雪路面驾驶技巧,确保自己和家人的行车安全?快来看一看吧!冰雪路面,不是加不了速,而是刹不住车!因此,在冰雪
婴儿如果不主动人为地戒掉奶睡抱睡,不进行睡眠训练,长大后会自然地学会自主入睡吗?这个问题我觉得自己很有话说,因为我两个孩子都是奶睡,抱睡,睡眠困难过来的。老大现在五岁,目前一晚上睡觉中途除了上厕所不会醒,她从一个严重的睡渣到现在的自主入睡,期间没有经过刻意训练
开车转弯时点刹好,还是一直踩着刹车平稳过弯好?在转弯的同时踩刹车其实并不是一个良好的开车习惯。准确来说如果进弯后才开始刹车,不管点刹也好还是一直踩着刹车也罢,都不如在打方向前就把车速降到一个安全范围好。我们就来看看在车辆拐弯的
怀孕肚子痛是怎么回事?孕妇肚子痛怎么回事?孕妇肚子痛的原因有很多种,需要根据具体的情况进行分析处理。孕妇肚子痛可能为生理性腹痛病理性腹痛及临产腹痛,具体情况及处理方法如下生理现象孕期子宫增大剧烈胎动假性
高中英语背单词和做题哪个更重要?英语这个科目是不适合刷题的。数理化这些科目是比较适合刷题的,因为它需要通过大量的题目来训练思维。但是高中英语他没有逻辑难度,他的逻辑难度就是小学语文五年级的难度,如果把英语的文章翻
怎样的身材才算好看?大多数人想要减肥都是为了保持好身材,可真正的好身材一定不是简单的减肥行为就能打造的。你们知道女生真正的好身材是怎样的吗?据说,满足这4个特征的身材才算真的好,中3个都不算NO1锁骨
小孩要上学了,我想找一份工作,不耽误接送小孩的,什么工作适合?很高兴回答你的问题,小孩上小学了,家长想找一份不耽误接送孩子的工作,有哪些工作适合?我想是很多父母自己带孩子,孩子一旦上小学,就出会现找工作困扰的问题。现在大部分人很注重家庭教育,
开宝马的看不起开丰田的,这是什么意思?虚啦吧唧的虚荣心作祟。其实,车辆没坏开上都走,好车的优越点主要在发生事故时候对人的保护上,在提速上,在发动机的性能上但往往很多人在意的仅仅是那个车标!比如华晨宝马,好多人不就想把前
如何评价电影新生化危机?作为一名生化危机全系列游戏玩家,这部电影怎么说呢,首先它比米拉乔沃维奇的生化危机系列电影更贴近原游戏剧情。但是因为生化危机这个游戏本来其实很难改编成电影,因为游戏主线都是玩家控制主
如何评价MIUI9相比MIUI8的巨大变化?1MIUI9快如闪电MIUI9聚焦流畅体验,克服手机系统卡慢热的问题,提供快如闪电般操作感受。全新推出的传送门信息助手快速查找照片等极速功能,帮助你极速获取内容,让你和手机这位亲密
有没有觉得武林外传的李大嘴让人细思恐极?整体来说,李大嘴算是同福客栈里最卑微的存在,他的势利程度也仅次于燕小六,不过在李大嘴的身上,确实有些令人细思极恐的地方。剧中李大嘴原名李秀莲,不过很奇怪,他的父母为何给他取这么个女