收银台架构
收款类关系图
说明
CashierSupport 收银台入口,调用时需要传递客户端类型,以及支付方式类型,来实现支付交互
Payment 支付接口,声明支付方法与默认方法实现,包含h5支付、app支付、公众号支付、二维码支付、小程序支付、退款、同步回调、异步回调等等支付常用接口
支付的4个实现分别为:
- BankTransferPlugin 线下转账,具体操作为后台手动确认收款,对应的也没有自动退款功能,都需要财务手动操作
- WalletPlugin 余额支付,即充值后消费的部分,可以自动退款,基本和第三方支付无异
- WechatPlugin 微信支付,可以自动退款
- AlipayPlugin 支付宝支付,可以自动退款
- 需要扩展应该按照以上实例进行扩展
支付的扩展
微信支付抽象WechatAPI,这个类申明了几乎所有的微信接口,代码中也有具体的实现,位于WechatRequest,这块如果放过来图片会展不开,同理还有微信请求的各个数据模型也在对应的目录下方,例如付款方,支付类型,支付货币等等的封装
支付宝支付抽象出 AlipayApi,与微信支付同理,同时包含AliPayRequest所有支付宝请求封装,AliPayApiConfigKig-支付宝交互对象配置抽象
这块代码都经过细节的设计,使得需要对接更多支付相关的接口,例如分账;或是对接更多的支付方式,例如Paypal 都可以快速开发
退款类关系图
说明
售后逻辑基本与支付逻辑相同,根据支付的方式,同样调去支付方法中退款部分的实现即可
这里额外说明一点:这个流程中不可或缺的是支付时记录的PaymentLog对象,这个对象中记录了支付所产生的支付信息,第三方流水,支付方式等……在退款时,这些都是必要参数,才能实现系统流程等退款,或是与第三方交互的退款,如果对退款有二开需求,请务必仔细研究一下支付日志中的字段,以免出现纰漏,或者不知道从哪里下手,参考默认实现的支付宝、微信以及余额退款逻辑