介绍
PayIn 是一个资金非托管的多链稳定币支付基础设施,专为稳定币(USDT、USDC 等)跨多个区块链网络的支付处理而设计。
什么是 PayIn?
PayIn 为希望接受加密货币支付的企业和应用程序提供完整的支付处理解决方案。与传统支付处理器不同,PayIn 是资金非托管的,这意味着您通过 HD 钱包完全控制您的资金。
核心特性
- 🌐 多链支持:Ethereum、Sepolia、Polygon、Tron 等
- 💰 多币种:USDT、USDC、DAI 等 ERC-20/TRC-20 代币
- 🔄 双服务模式:订单支付和用户充值
- 🏢 多租户:完整的组织隔离和独立配置
- ⚡ 实时处理:自动区块链交易检测和处理
- 🔐 安全可靠:基于 HD 钱包的地址管理,不存储私钥
架构概览
PayIn 由几个核心模块组成:
@payin/processor
支付处理引擎,负责:
- 订单创建和管理
- 用户充值地址绑定
- 支付验证和确认
- 地址池管理
@payin/monitor
区块链监控系统,负责:
- 实时监控区块链交易
- 自动检测收款
- 处理区块确认要求
- 同时支持多条链
@payin/manager
核心业务管理层,负责:
- 管理组织和 API 密钥
- 处理配置管理
- 提供统一业务接口
@payin/notification
通知系统,负责:
- 发送支付事件的 webhook 通知
- 支持 HMAC 签名验证
- 实现自动重试和指数退避
- 维护完整审计日志
使用场景
1. 电商支付
在线商店接受加密货币支付:
客户下单 → PayIn 生成支付地址
→ 客户发送稳定币 → PayIn 检测到支付
→ 订单标记为完成 → 发送 webhook 给商户2. 游戏平台充值
游戏平台用户充值:
用户注册 → 平台绑定充值地址
→ 用户随时发送稳定币 → PayIn 检测到充值
→ 平台收到 webhook → 更新用户余额3. 订阅服务
订阅服务的定期支付:
用户订阅 → 平台绑定充值地址
→ 用户每月充值 → PayIn 跟踪所有充值
→ 平台收到 webhook → 续订订阅核心概念
订单支付服务
- 临时地址:每个订单获得唯一的支付地址
- 单链模式:订单指定一个区块链网络
- 一次性使用:订单完成后地址释放回地址池
- 时间限制:如果在配置的时间窗口内未支付,订单过期
流程:创建订单 → 分配地址 → 监控支付 → 完成订单 → 释放地址
用户充值服务
- 永久地址:每个用户获得专用地址
- 多链模式:系统监控协议族的所有链(如所有 EVM 链)
- 可重复使用:地址绑定后可多次充值
- 长期有效:无过期时间,用户可随时充值
流程:绑定地址 → 监控所有链 → 检测充值 → 记录所有交易
地址管理
PayIn 使用地址池系统,支持两种模式:
HD 钱包模式(推荐)
- 从主公钥(xpub)派生地址
- 支持批量生成和验证
- PayIn 提供完整工具
自管理模式
- 导入您自己的地址
- 完全负责地址管理
- 最大灵活性
多租户架构
- 组织:独立的业务实体,数据隔离
- API 密钥:组织特定的身份验证
- 数据隔离:订单、充值、地址池按组织隔离
- 配置:每个组织的链、webhook 等设置
技术栈
- 后端:Node.js + Hono 框架 + TypeScript
- 数据库:PostgreSQL
- 区块链:ethers.js(EVM 链),TronWeb(Tron)
- 容器化:Docker + Docker Compose
- 测试:Vitest 单元测试和集成测试
下一步
获取帮助
- GitHub Issues:报告错误或请求功能
- Discord:加入我们的社区获取支持
- MCP Server:与 Claude AI 配合使用,获得交互式帮助