36. Digital Wallet 数字钱包
V1 — 1个用户:纯前端模拟钱包
Section titled “V1 — 1个用户:纯前端模拟钱包”你想做一个记账小工具,记录日常收支,看看钱花哪去了。
你要解决什么
Section titled “你要解决什么”- 模拟钱包的充值、消费、转账操作
- 余额实时更新
- 交易记录不丢失
给AI的Prompt
Section titled “给AI的Prompt”用纯HTML+JS实现一个数字钱包:
功能:1. 初始余额1000元2. 充值:输入金额,余额增加,记录"充值 +500"3. 消费:输入金额和备注,余额减少,记录"消费 -88 午餐"4. 转账:输入对方名字和金额,余额减少,记录"转账 -200 给张三"5. 余额不足时拒绝操作并提示6. 交易记录列表:时间、类型、金额、备注7. 简单统计:本月收入/支出/净额8. 所有数据存localStorage
技术:纯HTML+CSS+JavaScript单个index.html文件- 充值后余额正确增加
- 消费后余额正确减少
- 余额不足时操作被拒绝
- 交易记录按时间排列
- 月度统计数字正确
- 刷新页面数据不丢失
你学到了什么
Section titled “你学到了什么”- 基本的账户余额模型 → Module: 业务建模
- localStorage持久化 → Module: 浏览器存储
- 输入验证(余额不足)→ Module: 数据校验
V2 — 10个用户:后端账户系统
Section titled “V2 — 10个用户:后端账户系统”多个用户需要各自的钱包账户,能互相转账。
你要解决什么
Section titled “你要解决什么”- 用户注册登录+独立账户
- 转账的事务保证(A减B加原子操作)
- 交易流水不可篡改
给AI的Prompt
Section titled “给AI的Prompt”用Go+Gin实现数字钱包后端:
用户系统:1. 注册/登录(简单JWT认证)2. 每个用户自动创建钱包账户(初始余额0)
账户模型(SQLite):1. accounts(id, user_id, balance, created_at, updated_at)2. transactions(id, from_account, to_account, amount, type, note, created_at) - type: deposit(充值) / withdraw(提现) / transfer(转账) / payment(消费)
API:1. POST /api/deposit — 充值(余额增加+记录流水)2. POST /api/withdraw — 提现(检查余额+减少+记录流水)3. POST /api/transfer — 转账(事务:A减B加+两条流水)4. GET /api/balance — 查询余额5. GET /api/transactions — 交易记录(分页)
转账事务(关键):1. 开启数据库事务2. SELECT balance FROM accounts WHERE id=A FOR UPDATE(锁定A)3. 检查A余额>=转账金额4. UPDATE A余额-金额5. UPDATE B余额+金额6. INSERT两条交易记录7. COMMIT(任何一步失败则ROLLBACK)
前端:React页面,登录后显示余额、交易表单、交易记录
技术:Go+Gin, SQLite, JWT, React- 注册后自动创建钱包账户
- 充值后余额正确增加
- 转账事务原子性(中途失败全部回滚)
- 余额不足转账被拒绝
- 交易记录双方都能看到
- 并发转账不会出现余额错误
你学到了什么
Section titled “你学到了什么”- 数据库事务与行锁 → Module: 数据库事务
- 转账的原子性保证 → Module: ACID
- 交易流水设计 → Module: 金融系统基础
V3 — 100个用户:真实支付集成
Section titled “V3 — 100个用户:真实支付集成”钱包要能真充值真提现,接入银行卡和第三方支付。
你要解决什么
Section titled “你要解决什么”- 第三方支付集成(充值/提现)
- 完整的交易流水和状态管理
- 数据库升级到PostgreSQL
给AI的Prompt
Section titled “给AI的Prompt”在V2基础上实现支付集成:
数据库升级:1. 迁移到PostgreSQL2. 新增表: - payment_orders(id, user_id, channel, amount, status, external_id, created_at, updated_at) - channel: alipay / wechat / bank_card - status: pending / paid / failed / refunded
充值流程:1. 用户选择充值渠道和金额2. 创建payment_order(status=pending)3. 调用支付渠道API创建支付(此处用模拟接口)4. 支付回调通知 → 验证签名 → 更新order状态 → 增加余额5. 异步轮询确认(防止回调丢失)
提现流程:1. 用户申请提现 → 冻结对应金额2. 后台审核(手动或自动)3. 审核通过 → 调用银行接口打款4. 打款成功 → 扣减冻结金额5. 打款失败 → 解冻金额
交易流水:1. 每笔操作生成唯一交易号2. 流水表记录所有余额变动3. 余额 = 所有流水金额之和(可校验)4. 交易详情页展示完整状态流转
技术:Go+Gin, PostgreSQL, 模拟支付接口, React- 充值流程完整(创建→支付→回调→到账)
- 支付回调验签正确
- 提现冻结金额正确
- 提现审核流程正常
- 交易号全局唯一
- 余额与流水之和一致
- 回调丢失时轮询能补偿
你学到了什么
Section titled “你学到了什么”- 支付回调与签名验证 → Module: 支付系统
- 冻结/解冻资金模型 → Module: 金融系统
- 幂等性设计(重复回调)→ Module: 分布式系统
- 补偿机制(轮询兜底)→ Module: 可靠性
V4 — 1000个用户:安全与风控
Section titled “V4 — 1000个用户:安全与风控”用户量增加,需要防范盗刷、异常交易,保护用户资金安全。
你要解决什么
Section titled “你要解决什么”- 支付密码和二次验证
- 交易限额管理
- 异常交易检测
给AI的Prompt
Section titled “给AI的Prompt”在V3基础上实现安全和风控:
支付安全:1. 支付密码(独立于登录密码) - 设置/修改支付密码 - 转账和提现需验证支付密码 - 连续错误5次锁定24小时2. 大额交易二次确认(金额>5000弹窗确认)3. 设备指纹:记录常用设备,新设备首次操作需额外验证
交易限额:1. 单笔限额(默认5万,可调整)2. 日累计限额(默认20万)3. 月累计限额(默认100万)4. 限额配置可按用户等级区分5. 超限时拒绝交易并通知用户
异常检测:1. 规则引擎检测异常: - 大额交易(超过历史平均的10倍) - 高频交易(1小时内超过20笔) - 异地交易(IP地理位置突变) - 深夜交易(凌晨2-5点)2. 异常标记等级:low/medium/high3. high级自动冻结账户,通知用户4. 风控日志完整记录
技术:Go+Gin, PostgreSQL, Redis(限额计数器+设备指纹缓存)- 支付密码验证正确
- 密码错误5次账户锁定
- 限额检查准确(单笔/日/月)
- 超限交易被拒绝
- 异常交易被检测并标记
- high级异常自动冻结账户
- 风控日志可追溯
你学到了什么
Section titled “你学到了什么”- 支付安全设计 → Module: 安全架构
- 限额与计数器(Redis)→ Module: 缓存应用
- 规则引擎模式 → Module: 设计模式
- 设备指纹 → Module: 安全防护
V5 — 1万个用户:多账户与对账
Section titled “V5 — 1万个用户:多账户与对账”钱包功能丰富了,需要子账户管理(红包、优惠券),并保证资金准确。
你要解决什么
Section titled “你要解决什么”- 主账户+子账户体系
- 冻结/解冻精细化
- 完整对账系统
给AI的Prompt
Section titled “给AI的Prompt”在V4基础上实现多账户和对账系统:
多账户体系:1. 账户类型: - main:主账户(充值/提现/转账) - bonus:红包账户(收到的红包金额,有过期时间) - coupon:优惠券账户(优惠券抵扣金额,有使用条件)2. 消费扣款顺序:coupon → bonus → main3. 退款反向:退回原账户4. 子账户余额过期处理(定时任务清理)
冻结/解冻:1. 每个账户独立冻结金额2. 下单时冻结 → 支付成功扣减冻结 → 超时释放冻结3. 冻结明细记录(冻结原因、关联订单)4. 可用余额 = 余额 - 冻结金额
对账系统:1. 内部对账:余额 vs 流水汇总,每日跑批2. 外部对账:与支付渠道对账文件比对3. 差异处理: - 长款(我方多)→ 告警 + 人工处理 - 短款(我方少)→ 自动补偿 + 告警4. 对账报告:成功率、差异笔数、差异金额
技术:Go, PostgreSQL, Redis, 定时任务- 多账户创建和查询正确
- 消费扣款顺序正确(coupon→bonus→main)
- 退款退回原账户
- 冻结/解冻操作正确
- 可用余额计算准确
- 内部对账发现差异能告警
- 外部对账文件比对正确
- 过期子账户余额被清理
你学到了什么
Section titled “你学到了什么”- 多账户体系设计 → Module: 金融系统
- 扣款优先级策略 → Module: 策略模式
- 对账系统设计 → Module: 数据一致性
- 定时任务与过期处理 → Module: 任务调度
V6 — 10万+用户:跨境与合规
Section titled “V6 — 10万+用户:跨境与合规”钱包走向国际,需要支持多币种、汇率转换和反洗钱合规。
你要解决什么
Section titled “你要解决什么”- 多币种账户和实时汇率
- 跨境转账流程
- 反洗钱(AML)规则引擎
- 审计追踪
给AI的Prompt
Section titled “给AI的Prompt”在V5基础上实现跨境支付和合规系统:
多币种:1. 每个用户可有多个币种账户(CNY/USD/EUR/JPY)2. 实时汇率获取(外部API + Redis缓存,15分钟更新)3. 币种转换:用户A(CNY) → 系统换汇 → 用户B(USD)4. 汇率锁定:下单时锁定汇率,30分钟有效5. 汇兑损益记录
跨境转账:1. 发起方扣款(本币)2. 中间账户持有资金3. 换汇(按锁定汇率)4. 收款方入账(目标币种)5. 完整状态流转和异常处理
反洗钱(AML):1. KYC等级:L0(未认证)/L1(实名)/L2(高级认证)2. 不同等级交易限额不同3. AML规则: - 大额交易报告(单笔>5万CNY) - 可疑交易检测(分散转入集中转出/循环转账) - 制裁名单筛查(黑名单匹配)4. 可疑交易自动冻结+上报
审计追踪:1. 所有操作不可变审计日志(append-only)2. 操作人、时间、IP、操作内容、前后状态3. 审计日志独立存储,不可删除4. 合规报告自动生成(月度/季度)
技术:Go微服务, PostgreSQL(分库), Redis, 消息队列, 审计日志- 多币种账户正确创建
- 汇率获取和缓存正常
- 汇率锁定30分钟内有效
- 跨境转账全流程正确
- KYC等级限额生效
- 大额交易自动报告
- 可疑交易被检测并冻结
- 审计日志不可篡改
- 合规报告正确生成
你学到了什么
Section titled “你学到了什么”- 多币种与汇率模型 → Module: 金融系统
- 跨境支付流程 → Module: 支付架构
- AML反洗钱规则 → Module: 合规系统
- 不可变审计日志 → Module: 安全审计