跳转至

用户下单支付

场景:H5 用户从打开商城到完成支付的全流程 测试账号testuser01 / User@2026(生产是 mall.ijcode.com/pages/users/user/index 登录入口)


📋 演示脚本

演示准备(5 分钟):

  1. 打开 H5 商城:https://mall.ijcode.com
  2. 测试账号:testuser01 / User@2026
  3. 测试商品:库存充足的任意商品(id=4 测试商品当前库存 0,需选其他)
  4. 提前给账号充值 200 元余额(演示用):
    • 我的 → 余额 → 充值 → 200 元 → 余额支付

演示步骤

步骤 1:浏览 H5 首页

打开 https://mall.ijcode.com,看到首页布局:

H5 首页

首页结构:

  • 顶部: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:支付成功但订单显示"未付款"

原因:支付回调延迟或丢失

排查

  1. 等 30 秒后刷新
  2. 仍未更新 → 客服查支付流水(按手机号 + 时间)
  3. 确认已支付 → 客服调补单接口触发

⚙️ 后端关键点

接口调用链

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 扣减

关联场景