java网站建行pos机接入收款_有赞微商城 POS 机的模块化过程演进

3ccd0f9cf4f22c4504c5a803308c2df9.png

作者:带娃编码两不误的 奇妈

2567a0e036dc53a08f8d6aad50f646e6.png

背景

有赞微商城接入了三个厂家的 POS 机,分别是旺 POS、商米、拉卡拉,很久之前都是单独维护这三个 POS 机的代码分支,每次发版就需要把主线分支合并代码到相应的 POS 机的分支,这使得 POS 机的发版流程异常繁琐,而且很容易让 POS 机的版本内容跟微商城手机 App 的版本不一致。

除此之外,每个 POS 机的接入方式和使用方法都有很大的区别,使得对应的业务代码就很混乱。此时恰逢微商城项目要搞模块化,正好借机统一所有 POS 机的代码,让所有 POS 机的使用在业务中是有统一接口去调用,而且把所有代码都合并到主分支,统一 POS 机和手机 App 的发版。

合并代码

首先第一件事情是合并所有 POS 机分支的代码进入主分支,这个过程很艰苦,只能一点点抽取相关代码,然后放到主分支里。刚才在背景中已经提过正在搞模块化,那自然是要把相应的厂家 POS 机的 lib 包和定制的需求的代码放到一个 module 里的。在这里我创建了三个 module,分别 pos_iboxpay,pos_sunmi,pos_wei。

参考下图,因为涉及具体业务,此处不公开代码。

7f657265986174bf6b61489b95377caf.png

统一调用接口

POS 机定制需求放到相应 module 里以后,那就是如何解决在业务中有统一的接口去调用POS 机的功能的问题了。在业务中,需要使用 POS 机的打印和扫码功能,那么就对应创建了 POSPrinterBuilderPOSBaseScannerBuilderScannerBase

其中POSPrinterBuilder 是在业务中使用的,负责通过发射创建一个 POSPrinter 实例。

POSBase 一个抽象类,pos_iboxpay、pos_sunmi 和 pos_wei 这三个 module 里创建的 POSPrinter 都继承自 POSBase。

备注:因为要在主工程中通过反射来实例化 POSPrinter,所以 POSPrinter 的包名和类名要统一,每个 POS 机 的 module 里创建的 POSPrinter.java 的路径是需要保持一致的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值