全部案例
全职 · CFI Financial已在生产环境运行

运营中券商的支付与加密货币后台

在 CFI Financial:已在生产环境运行的钱包支付方式,带字段级权限的加密货币后台 API,以及事件驱动平台上的跨服务排障。

角色
高级后端工程师
类型
在 CFI Financial 全职工作期间开发
时间
2026.07 至今
状态
已在生产环境运行 · 我目前的全职工作

CFI Financial 是一家在线多资产券商(外汇/差价合约与加密货币)。我的工作集中在它的加密货币交易平台和支付服务商集成:基于 PostgreSQL 与 MySQL 的 Python 服务,由 RabbitMQ 保持客户门户与后台同步。凡属 CFI 内部的信息,这里都有意略去。

问题

一家受监管的券商,要在已经服务客户的平台上不断增加支付方式和加密货币功能。每次改动都会碰到资金、权限,以及两个必须保持一致的系统:客户门户和后台。

难点在哪里

  • 入金和退款都经过支付服务商,涉及会话、webhook,以及 Apple Pay 和 Google Pay 各自的钱包支付规则。
  • 加密货币金额需要 8 位小数精度,而且要贯穿每个 API、模型和权限定义,不只是数据库。
  • 后台操作要走双人复核(maker-checker)审批,权限控制细到单个字段。
  • 状态通过 RabbitMQ 跨服务传递。链路上任何一处丢了一个字段,都不会报错,只会悄悄出问题。

架构

基于 PostgreSQL 与 MySQL 的 Python 服务(FastAPI、SQLAlchemy、Pydantic)。客户门户和后台各自拥有自己的数据,通过 RabbitMQ 消息交换变更。支付走 Checkout.com。权限控制基于策略(Casbin),可以细到单个字段。日志可以在 Grafana 和 Loki 中按关联 ID 检索。

  • Python
  • FastAPI
  • SQLAlchemy
  • Pydantic
  • PostgreSQL
  • MySQL
  • RabbitMQ
  • Redis
  • Docker
  • Kubernetes
  • Casbin
  • Checkout.com
  • Grafana / Loki
  • SonarQube

我做了什么

高级后端工程师

  1. 01为巴林实体通过 Checkout.com 交付 Apple Pay、Google Pay 和 Benefit 三种独立的入金方式,三种都已在生产环境运行。还编写了团队的入金与退款端到端本地测试指南。
  2. 02加入加密货币平台的头两个月承接了 26 个后端工单,涉及 7 个服务与共享库:后台 API、权限控制 API、两个 RabbitMQ 消费者服务、客户门户 API 和两个共享 Python 库。
  3. 03为双人复核(maker-checker)的撤单流程开发了带字段级权限(Casbin)的分页、可筛选列表接口和 CSV/PDF 导出接口。
  4. 04把加密货币金额的 8 位小数精度扩展到各 API、模型和权限定义。
  5. 05为首次入金添加了 Braze 事件。

决策与挑战

  • 每种钱包支付单独一个入金方式

    Apple Pay、Google Pay 和 Benefit 是作为各自独立的入金方式交付的,不是同一个银行卡流程的变体。每一种都有自己的会话规则,发布前都做过端到端测试。

  • 把本地测试指南写出来

    怎样在自己的电脑上把一笔入金和一笔退款从头到尾跑通,之前没有文档。我写了这份指南,容易踩的坑也写了进去,下一位工程师不必从零开始。

  • 先证明原因,再改代码

    交易故障先被复现,并追查到数据层面的原因。修复随后放进 symbol 解析,那是所有下单路径唯一共用的地方,而不是去给恰好出错的那个接口打补丁。

  • 消息两端都要修,消费者先发布

    KYC 字段丢了两次,一次在生产者,一次在消费者。只修一端也能通过代码评审,到了生产环境却照样失败。消费者先发布,这样它不会因为还不认识新消息而拒收。

值得一讲的故事

加密货币交易返回 HTTP 500:我在 Grafana 和 Loki 中按关联 ID 追查,定位到重复的交易对记录,然后让 symbol 解析变成确定性的。市价单和限价单路径上的同类故障也随之解决。

后台修改的 KYC 信息一直到不了客户门户。消息载荷在 RabbitMQ 的生产者和消费者两端都被丢弃。我先在完全相同的锁定依赖版本上复现,并在日志中确认,然后才设计修复方案。

经过验证的结果

  • Apple Pay、Google Pay 和 Benefit 作为入金方式已在生产环境运行。
  • 头两个月交付 26 个后端工单,涉及 7 个服务与共享库。
  • 带字段级权限的列表和导出接口,已用于双人复核的撤单流程。
  • 加密货币金额的 8 位小数精度已覆盖各 API、模型和权限定义。

数字

  • 3 种钱包支付方式已上线
  • 头两个月 26 个工单
  • 7 个服务与共享库
  • 加密货币金额 8 位小数精度

这对客户说明了什么

我每天都在一家运营中的券商内部工作:支付、权限、精度和事件驱动的同步。我为你的产品设计后台或支付流程时,依据的是真正承载客户资金的系统。

需要类似的系统?交易平台与券商系统开发查看相关服务

告诉我你在做什么。

几句话就够了:做的是什么、目前进展到哪一步、需要工程师做什么。表单就在下方,也可以直接发邮件。我会在两个工作日内回复。

下一个案例Octopus(八达通)支付网关微服务