Files
qipai/docs/api-changelog/2026-08-11-M09-D2-product-orders.md
T

31 lines
1.9 KiB
Markdown
Raw 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.
# 2026-08-11 M09-D2 商品订单 API
## 顾客接口
- `POST /app-api/product-orders`
- `GET /app-api/product-orders`
- `GET /app-api/product-orders/:orderId`
- `POST /app-api/product-orders/:orderId/cancel`
创建请求包含门店、幂等 `requestId`、履约方式、订单备注和 SKU 数量/备注。服务端从当前目录和门店售价生成不可变快照并复算金额,不接受客户端价格。顾客列表、详情和取消只允许订单本人访问。
## 管理接口
以下接口同时提供 `/admin-api``/app-api/management` 前缀:
- `GET /product-orders?storeId=...`
- `GET /product-orders/:orderId`
- `POST /product-orders/:orderId/actions`
动作限定为 `ACCEPT``START_DELIVERY``MARK_READY``COMPLETE``CANCEL``REFUND`,服务端按履约方式和当前状态执行合法转换。读取要求 `goods.order.read`,写入要求 `goods.order.manage`STAFF、STORE_ADMIN 必须在授权门店范围内,租户边界在查询和写事务中重复校验。
## 支付与退款适配边界
- 非生产且显式启用测试适配器时,注册顾客测试支付创建/完成和管理测试退款完成接口。
- 生产环境不注册任何 `test-complete` 路由;真实微信支付/退款适配器调用 `confirmPayment` / `confirmRefund` 领域入口,并提供 provider callbackId、服务端金额和验签后的脱敏 payload。
- 回调按 provider/callbackId 和 payload 指纹幂等;金额或 provider 不匹配不推进订单。死锁/锁等待冲突由完整事务有限重试,库存、支付、订单和事件保持原子一致。
## 状态与错误边界
订单状态为 `PENDING_PAYMENT``PAID``ACCEPTED``DELIVERING``READY_FOR_SELF_SERVICE``COMPLETED``CANCELLED``REFUNDING``REFUNDED``REFUND_FAILED`。未找到返回 404,权限/门店范围返回 403,版本、状态或幂等冲突返回 409,输入、销售关闭、库存或履约前置失败返回 400 语义错误码。