去哪儿支付系统自2011年搭建以来,在五年的时间里逐渐从一个高耦合的单一系统发展为众多子系统组成的高并发、高可用、支持多种交易支付业务的分布式系统。业务从最初的非代收到现在多种非代收、代收场景的支持,B2B业务的从无到有,支付方式从单一网银支付到现在银行卡、拿去花、代金券、红包、立减、积分、趣游宝等多种的组合,订单从单笔支付到多个订单同时支付和多次付款。

一个支付系统不例外包括几个重要组成部分:收银台、交易、支付、网关、账务。

  • 收银台:用于展示支付详情、提供各种多样支付方式的选择

  • 交易:收单规则和交易规则处理

  • 支付:处理各种组合的支付方式,如银行卡、用户余额、信用付、拿去花、红包、代金券、立减、积分等

  • 账务:用来记录所有交易、资金往来的明细,财务会计记账

  • 网关:用于对接银行通道、第三方支付通道(微信、支付宝)如何提高开发效率

如何提高开发效率

系统拆分后主要提供dubbo服务和对外http(https)服务

1.针对Dubbo服务的约定

  1. 接口定义:粒度控制、边界控制。一个接口不能存在模棱两可的情况,只做其一

  2. 参数标准:复杂接口使用对象做参数(避免map)、统一父类、支持扩展属性透传、提供create/builder构造合法参数、使用枚举限制参数范围。有效避免调用端参数错传

  3. 返回值:统一QResponse封装、错误码管理(非数字形式含义明确、按业务区分避免重复等)

  4. 业务模板:定义标准业务处理流程、标准化异常处理

  5. 接口文档化:定义好接口后,通过注解动态生成接口文档

2.针对http服务的约定

a)接口参数:command、校验器、参数类型配置化。

command中定义接口信息,包括请求返回参数、每个参数的参数类型、参数的校验器、参数类型的校验器。校验器可以组合使用,也可以自定义实现扩展。