酒店客账·线上收款 C端对接契约(波波 → 小齐)

后端接口已上线并验证。C端(miniprogram-v2)需新增一个「账单支付」入口,属小齐域,波波不碰。
数据链路:B端发起收款 → 生成收款单 → 客人在小程序付款 → 微信回调入账 → B端客账余额归零。

一、接口清单(base: https://api.kailashi.cn/api/miniapp)

方法路径说明
GET/hotel/charges/{id}收款单详情(金额/状态),客人查看待付账单
POST/hotel/charges/{id}/prepay调起微信支付,返回 jsapi_params

请求走现有 services/api/request.ts 的 apiGet(path, query) / apiPost(path, data),需登录态。

二、字段

GET /hotel/charges/{id} → data:

{ "id": 3, "out_trade_no": "FC00000380558", "amount": 600.8,
  "status": "pending|paid", "guest_name": "张三", "room_nos": "101,102" }

POST /hotel/charges/{id}/prepay → data:

{ "id": 3, "out_trade_no": "FC00000380558", "amount": 600.8,
  "jsapi_params": { "timeStamp": "...", "nonceStr": "...", "package": "prepay_id=...",
                    "signType": "RSA", "paySign": "..." } }

三、接线要点

  1. jsapi_params 直接喂给 wx.requestPayment({ ...jsapi_params, success, fail }),与现有订单支付写法一致。
  2. 权限:只有该客账对应预订的下单人本人可调(后端按 orders.user_id 校验),他人调返回 403。
  3. 状态:pending 才需要调 prepay;paid 直接展示已付。支付成功后建议轮询 GET /hotel/charges/{id} 确认 status==='paid' 再提示。
  4. 未绑 openid:后端返回 409「当前账号未绑定微信 openid」,前端提示走线下支付。
  5. 金额单位统一为元(后端存分,接口已转换)。

四、入口建议

在「我的订单 / 订单详情」里:当订单 order_type==='room' 且存在待付收款单时,显示「去支付」按钮。

收款单 id 可由后端按需补一个「按订单查待付收款单」接口——需要的话找我加。

五、当前限制(重要)