用户下单支付¶
场景:H5 用户从打开商城到完成支付的全流程 测试账号:
testuser01 / User@2026(生产是mall.ijcode.com/pages/users/user/index登录入口)
📋 演示脚本¶
演示准备(5 分钟):
- 打开 H5 商城:
https://mall.ijcode.com - 测试账号:
testuser01 / User@2026 - 测试商品:库存充足的任意商品(id=4 测试商品当前库存 0,需选其他)
- 提前给账号充值 200 元余额(演示用):
- 我的 → 余额 → 充值 → 200 元 → 余额支付
演示步骤:
步骤 1:浏览 H5 首页¶
打开 https://mall.ijcode.com,看到首页布局:

首页结构:
- 顶部:Logo + 登录入口 + 购物车 + 分类
- 搜索框:输入关键词搜索商品
- 轮播 Banner:平台活动/商品宣传
- 金刚区:限时秒杀 / 店铺街 / 领券中心 等快捷功能
- 精选好物:推荐商品瀑布流
步骤 2:进入商品详情页¶
点击任一商品,进入详情页:

商品详情页布局:
- 顶部操作:返回 / 菜单 / 刷新
- 商品主图:滑动切换商品图片
- 价格区:现价、原价、销量、库存(库存:0 时按钮显示"已售罄")
- 规格选择:颜色 / 尺码 等 SKU
- 店铺信息:店铺名、关注数、进店按钮
- 底部 Tab:商品描述 / 卖家服务 / 物流服务
- 底部按钮:店铺 / 客服 / 购物车 / 加入购物车 / 立即购买
库存不足的处理
当 stock=0 时,"加入购物车"和"立即购买"按钮显示"已售罄",无法点击。截图中的商品 id=4 就是这种情况,演示时可换其他有库存的商品。
步骤 3:进入购物车¶
底部 tab 点击"购物车",进入购物车页。
购物车页面
购物车页面需要用户登录后才能查看数据。演示前确保 testuser01 账号已登录,且测试账号已添加过商品到购物车。
页面操作:
- 勾选要结算的商品
- 调整数量
- 点击"去结算"进入订单确认
步骤 4:进入用户中心¶
底部 tab 点击"我的",进入用户中心:

用户中心提供:
- 个人信息展示
- 我的订单(待付款/待发货/待收货/已完成)
- 我的收藏
- 优惠券
- 地址管理
- 设置入口
🎓 培训材料¶
下单流程 4 阶段¶
浏览商品 → 加入购物车 → 结算 → 支付 → 待发货
关键状态机¶
未付款 ──支付──→ 待发货 ──商家发货──→ 待收货 ──用户确认──→ 已完成
│ │
└─15min超时─┐ └─用户申请退款──→ 退款中
↓ ↓
已取消 已退款
支付方式优先级¶
| 顺序 | 方式 | 适用 |
|---|---|---|
| 1 | 余额支付 | 商城账户有余额 |
| 2 | 微信支付 | 微信内打开 |
| 3 | 支付宝 | 支付宝内打开 |
必懂业务规则¶
- 下单后 15 分钟内必须支付,超时自动取消
- 商家发货时限 48 小时
- 支付成功时扣减库存(非下单时)
- 余额支付秒到账,微信/支付宝 1-3 工作日
🔧 故障排查¶
场景 A:用户点击"提交订单"无反应¶
| 原因 | 排查 |
|---|---|
| 收货地址未选 | 检查红字提示"请选择收货地址" |
| 支付方式未选 | 切换支付方式 |
| 库存不足 | 商品详情重新加载看库存 |
| 网络异常 | 切换网络重试 |
场景 B:支付失败¶
| 错误信息 | 含义 | 处理 |
|---|---|---|
| 余额不足 | 商城余额 < 应付 | 充值或换支付方式 |
| 支付密码错误 | 6 位密码错 | 重输(5 次锁 30 分钟) |
| 网络异常 | 通信超时 | 重试 |
| 订单已支付 | 重复支付 | 查订单状态 |
| 订单已取消 | 超时 | 重新下单 |
场景 C:支付成功但订单显示"未付款"¶
原因:支付回调延迟或丢失
排查:
- 等 30 秒后刷新
- 仍未更新 → 客服查支付流水(按手机号 + 时间)
- 确认已支付 → 客服调补单接口触发
⚙️ 后端关键点¶
接口调用链¶
POST /api/cart/save 加购
POST /api/order/create 创建订单
POST /api/order/pay/:id 发起支付
├─ 余额:payBalance() 直接扣款
├─ 微信:Native 扫码接口 返回 code_url
└─ 支付宝:precreate 返回 code_url
GET /api/order/detail/:id 查询订单状态(轮询)
POST 微信/支付宝回调 更新订单状态
DB 字段变化¶
| 表 | 字段 | 变化 |
|---|---|---|
ij_store_order |
paid |
0 → 1 |
ij_store_order |
pay_time |
NULL → 时间戳 |
ij_user |
now_money |
扣减订单金额 |
ij_user_bill |
新增流水 | type=pay_product |
ij_store_product |
stock |
扣减 |