← 返回项目

Pay Gateway — 跑在 Cloudflare Workers 上的轻量支付对接层

这是什么

Pay Gateway 是笔者的内部支付对接模块——自建自用、支撑自有产品的收款层,不对外提供服务。

它解决的问题很具体:独立开发者想给自己的软件收钱时,支付永远是最后一块难啃的骨头——签约商户号有门槛,聚合支付服务要抽成,自写支付对接每家渠道一套协议。Pay Gateway 把这一层做成了一个轻量的、兼容易支付(EasyPay)风格 API 的 Workers 服务:一个 URL、几个接口,任何项目接上就能收钱。

它和 SEdgeKey 发卡商城、License Server 授权系统共同构成笔者的“软件销售流水线”——收钱、发货、验证,全部跑在自己的免费基础设施上。

收款模式

个人收款码监听(零费用)

不需要商户号、不需要申请资质、零费用:

买家扫码付款 → 手机收到到账通知 → 转发 App 自动监听并上报 → Workers 匹配金额更新订单 → 前端轮询到支付成功

  • 支付宝、微信个人收款码都能用
  • 适合起步阶段、小额收款、不想走任何签约流程的场景
  • 代价是到账确认有 5-30 秒延迟(取决于手机通知速度)——对卡密自动发货场景完全够用

方案里还有一个容易被忽略的细节:同一金额的多笔待支付订单会互相干扰。Pay Gateway 用金额冲突检测解决——新订单自动做微小金额偏移,保证每笔订单金额唯一可匹配,偏移的几分钱视为买家优惠。

兼容易支付 API:生态即插即用

接口层兼容易支付(EasyPay)风格协议——这是国内独立开发者圈事实上的通用支付对接标准。意味着:

  • 市面上大量现成的发卡系统、商城程序可以直接对接,零改造
  • 自己的项目只需按标准协议发一次请求、轮询一次状态,十几行代码完成接入
  • 将来换掉底层实现,上层业务无感知

安全设计

虽然是内部模块,安全没有省事:

  • 接口鉴权:写接口全部要求 Bearer Token,调试接口独立 Token
  • HMAC-SHA256 签名:上报通道带签名验证 + 时间戳容差,伪造到账通知行不通
  • 恒定时间比较:Token 校验防时序攻击
  • 幂等处理:短信上报、渠道回调、内部上报三路去重,一笔订单不会被重复标记
  • CORS 白名单:跨域来源可控
  • 自动清理:定时任务清理过期订单、幂等键与回调日志,D1 数据库不会无限膨胀

为什么连支付层都要自建

这是“软件销售流水线零成本”的最后一环:发卡商城负责卖,授权系统负责验,Pay Gateway 负责收——三件套全部跑在 Cloudflare 免费额度上,每一单收入的支付通道成本接近于零。

对独立开发者来说,这套自建思路的价值不在省下的那点服务费,而在于:收款、发货、验证的数据全部在自己手里,没有任何一环受制于第三方平台。