Files
server/TODO.md
2025-11-02 19:34:16 +08:00

44 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 小程序付费 & 会员制功能 ID 规范
### 核心支付相关 ID 规范(基于数据表 wechat_pay_tables.sql
| 类别 | 字段名 | 数据类型 | 命名规则 | 示例 | 备注 |
|------|--------|----------|----------|------|------|
| **微信支付订单** | `order_id` | varchar(64) | `XZ{{YYYYMMDD}}{{HHMMSS}}{{随机6位}}` | `XZ20250930200018WWvII2` | 主键64位以内全局唯一 |
| **商户订单号** | `out_trade_no` | varchar(32) | `{{业务前缀}}{{时间戳}}{{随机4位}}` | `PAY1719301123a7f2` | 32位以内商户系统唯一 |
| **微信支付订单号** | `transaction_id` | varchar(32) | 微信返回 | `4200001234567890123` | 微信支付系统生成,只读 |
| **预支付会话ID** | `prepay_id` | varchar(64) | 微信返回 | `wx123456789abcdef` | 微信支付系统生成,只读 |
| **退款ID** | `refund_id` | varchar(64) | `RF{{订单ID后16位}}{{序号2位}}` | `RF200018WWvII201` | 主键64位以内支持多次退款 |
| **商户退款单号** | `out_refund_no` | varchar(64) | `{{业务前缀}}{{订单号后8位}}{{序号4位}}` | `REFPAY18WWvII20001` | 64位以内商户系统唯一 |
| **微信退款单号** | `refund_id_wx` | varchar(32) | 微信返回 | `50000123456789012345` | 微信支付系统生成,只读 |
| **支付配置ID** | `config_id` | int | 自增ID | `1` | 自增主键,系统配置用 |
| **支付日志ID** | `log_id` | bigint | 自增ID | `1234567890` | 自增主键,日志记录用 |
### 业务扩展 ID 规范
| 类别 | 字段名 | 命名规则 | 示例 | 备注 |
|------|--------|----------|------|------|
| 商品 | `product_id` | `prod_{{业务缩写}}_{{序号}}` | `prod_vip_001` | 全局唯一,不可复用 |
| 会员快照 | `member_snap_id` | `snap_{{用户ID}}_{{版本号}}` | `snap_u123_v2` | 每次会员状态变更生成新快照 |
| 权益实例 | `benefit_inst_id` | `bf_{{会员快照ID}}_{{权益码}}` | `bf_snap_u123_v2_free_ship` | 权益码统一定义,如 free_ship |
| 优惠券 | `coupon_id` | `cp_{{批次码}}_{{序号}}` | `cp_newbie_0001` | 批次码newbie/vip/gift |
| 券实例 | `coupon_inst_id` | `ci_{{用户ID}}_{{coupon_id}}_{{随机4位}}` | `ci_u123_cp_newbie_0001_x9k2` | 用户维度唯一 |
| 交易流水 | `trans_seq` | `ts_{{毫秒时间戳}}_{{随机6位}}` | `ts_1719301123456_z3m8vq` | 对账用,全局自增 |
### 统一约束
1. **字符规范**:全部小写,下划线分隔,无特殊符号。
2. **长度限制**严格按照数据表字段长度限制订单ID≤64位商户订单号≤32位。
3. **时间戳格式**统一使用10位秒级时间戳保持长度一致。
4. **随机字符**:使用 `0-9a-z` 避免易混淆字符 `0o1l`
5. **业务前缀**:支付相关使用 `XZ``PAY``RF` 等标准前缀。
6. **数据一致性**:确保订单、支付、退款、权益、优惠券全链路可追踪。
7. **微信字段**`transaction_id``prepay_id``refund_id_wx` 等由微信系统生成,不可自定义。
### 字段长度对照表
| 字段类型 | 最大长度 | 推荐格式 | 说明 |
|----------|----------|----------|------|
| `order_id` | 64字符 | `XZ{{YYYYMMDD}}{{HHMMSS}}{{6位随机}}` | 主订单ID |
| `out_trade_no` | 32字符 | `PAY{{10位时间戳}}{{4位随机}}` | 商户订单号 |
| `refund_id` | 64字符 | `RF{{订单ID后16位}}{{2位序号}}` | 退款ID |
| `out_refund_no` | 64字符 | `REF{{商户订单号}}{{4位序号}}` | 商户退款单号 |