从0到1实现一个支付系统

最近离职在家,闲来无事,研究如何实现一个支付系统

服务划分

  • dubbo服务对应端口
工程 端口 描述
pay-service-account 20801 账户服务
pay-service-bank 20802 银行管理服务
pay-service-banklink 20892 银行后置服务
pay-service-boss 20804 运营服务
pay-service-fee 20807 商户计费服务
pay-service-limit 20809 交易限制服务
pay-service-notify 20822 通知服务
pay-service-payrule 20811 支付规则服务
pay-service-remit 20813 打款服务
pay-service-report 20815 报表服务
pay-service-settlement 20816 结算服务
pay-service-trade 20817 交易服务
pay-service-user 20818 用户服务
  • web服务对应端口
工程 端口 描述
pay-web-boss 8083 运营管理系统
pay-web-gateway 8084 支付网关
pay-web-notify-receive 8086 通知消息接收
pay-web-portal 8085 门户系统
pay-web-trade 8087 交易系统

技术架构

管理

  • maven依赖和项目管理
  • git版本控制
  • Jenkins持续构建

后端

  • IoC容器 Spring
  • web框架 SpringMvc
  • orm框架 Mybatis
  • rpc框架 Dubbo
  • 任务调度框架 quartz
  • 缓存 redis
  • 数据源 druid
  • 日志 slf4j+log4j2
  • Json jackson
  • kaptcha 验证码
  • jsp 模板视图

前端

  • jquery js框架
  • easyui 界面框架
  • zTree 树框架

分布式事务:使用tcc-transaction框架

运营管理后台

gitlab源码管理

jenkins服务自动化部署

项目结构

包括dubbo服务启动脚本

待完善点(或者说不懂做)

  • 风控系统:只要老板不想把底裤都赔掉,那就必须上风控。可对互联网公司来说,风控是一个谜一般的话题,无论是对风控专家还是IT工程师而言。机器学习,深度学习,规则推理,随机森林….这些只想说还不知道怎么玩~~
  • 对账系统:每一笔交易,都要做到各参与者的记录能够吻合,没有偏差。对账系统的工作,是发现有差异的记录,即轧帐;然后通过人工或者自动的方式,解决这些差异,即平帐。