| 项 | 前端(services/distribution.ts + pages/joint-payment) | 后端(miniapp_distribution.py L640-695,303b) | 判定 |
| 路径 | /api/miniapp/distribution/joint-payment/generate | @router.post("/joint-payment/generate") + prefix /api/miniapp/distribution | ✅ |
| 方法 | POST | POST | ✅ |
| 登录态 | request 公共层 Bearer 自动挂(299 已证) | Depends(get_current_user) | ✅ |
| 请求体 | { orderNo }(string) | JointPaymentGenerateIn { orderNo: str } | ✅ |
| 响应解包 | request 公共层 {code:0,data} 自动解包 | {"code": 0, "data": {...}} | ✅ |
| orderId | JointPaymentResult.orderId | data.orderId(int) | ✅ |
| qrContent | 渲染+复制 | data.qrContent(https://c.kailashi.cn/pages/joint-payment/join?token=..&orderNo=..) | ✅ |
| expiresAt | 渲染 | data.expiresAt(ISO 24h) | ✅ |
| 订单不存在 | catch→unavailable 空态 | 404 | ✅ 诚实降级 |
| 非本人订单 | catch→unavailable 空态 | 403 | ✅ 诚实降级 |
| 状态不允许 | catch→unavailable 空态 | 409(仅 booked/pending_payment 可发起) | ✅ 诚实降级 |