收费流程.md 3.5 KB

停车收费与结算流程

更新日期:2026-08-07 本文档以当前实现为准,真实 POS、中央缴费机和线上支付网关尚待接入。

1. 结算对象与职责

对象 作用 是否可替代
停车会话 vehicle_record 保存本次停车的费用、支付摘要和进出场事实 不可替代
数字票 digital_ticket 保存待支付、已支付、已离场状态和票号 不可替代
支付流水 payment_record 保存实际收款、实收、找零、操作员 财务事实来源

不得只修改数字票状态或只插入支付流水。所有结算必须通过支付服务和停车会话事务统一更新。

2. 支付入口与支付方式

支付入口和支付方式为独立配置。

概念 解决的问题 示例
支付入口 在哪里发起结算 收费岗亭、停车小票、中央缴费机
支付方式 用什么方式收款 现金、POS、小票扫码、免费放行

入口与方式通过配置关系限制可用组合。例如,中央缴费机可配置扫码和 POS;收费岗亭可配置现金和 POS。禁用配置只影响后续新结算,不修改历史记录。

3. 当前结算主流程

定位停车会话和数字票
  -> 计算应收金额
  -> 校验支付入口和支付方式可用
  -> 校验金额
  -> 插入 payment_record
  -> 更新 vehicle_record.payment_status / fee / payment_entry / payment_method
  -> 更新 digital_ticket 为 paid
  -> 确认出场时关闭会话并更新数字票为 exited

3.1 规则

  • 应收金额、实收金额不能为负数。
  • 现金等手工金额方式,实收不得低于应收;超出部分记录为找零。
  • 零费用允许零金额结算。
  • 已支付会话不允许再次支付;已出场会话不允许再次结算或离场。
  • 预支付数字票在出口只做离场确认,不再创建第二笔支付流水。
  • 任意步骤失败时,事务回滚,不能遗留半完成支付数据。

4. 已实现支付场景

场景 状态 说明
收费岗亭人工现金 已实现 支持实收、找零、操作员记录
免费放行 已实现 用于零费用、白名单等合法免费场景
数字票结算 已实现 从数字票页面选择入口和方式并完成支付
出口消费预支付票 已实现 已支付数字票在出口确认离场,不重复收费
POS 支付方式配置 已实现 可配置、可选择,真实 POS 交易未接入
小票扫码支付方式配置 已实现 可配置、可选择,真实支付网关未接入
中央缴费机入口配置 已实现 可配置为支付入口,终端协议和回调未接入

5. 外部支付接入要求

POS、中央缴费机、线上支付接入时必须遵守:

  1. 外部终端先根据 ticket_no 查询数字票及应收金额。
  2. 终端支付成功后携带 ticket_no、外部订单号、支付入口和支付方式回调。
  3. 服务端以票号和外部订单号进行幂等校验,不允许因回调重试产生重复支付。
  4. 支付服务成功后,出口仍由统一出场流程关闭停车会话并开闸。
  5. 终端超时或状态不确定时进入人工核对,不得直接标记支付成功。

6. 对账

交接班和收入报表以 payment_record 为主进行汇总;停车会话和数字票的支付字段用于业务展示和快速筛选。出现差异时,应以支付流水、操作日志和外部支付订单号核对。