5.8 KiB
title, aliases, tags, audience, status, sub_feature, last_review, code_version
| title | aliases | tags | audience | status | sub_feature | last_review | code_version | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| prop-acc · deposit · 场景 - 退款渠道与缴款渠道不同 |
|
|
|
已发布 | deposit | 2026-05-25 | 2026-05-22 |
场景:退款渠道与缴款渠道不同
业户当初现金缴款,现在想银行转账退(或反之)。系统支持渠道切换 —— PaymentChannel 在退款时独立选择,不绑死缴款时的渠道。
典型情境
[!example] 真实情境(一) 张阿姨当年装修来交押金时带的现金 ¥5,000,留下了银行卡号。现在装修完无损要退,张阿姨说"现金我也不方便领,直接转我卡上吧"。
[!example] 真实情境(二) 王装修公司当年对公账户转账交了 ¥15,000(3 户业主代缴)。退款时公司账号变更,要退到新的对公账号。
业户视角
第 1 步:告诉物业退款方式
退押前主动说明期望的退款渠道:
- "退到我微信"
- "退到我建行卡 6228xxxxxx1234"
- "退到我公司新账户" + 提供新账户信息
第 2 步:等退款 + 收到红字收据
红字收据上的"退款渠道"字段反映实际操作的渠道(银行转账 / 微信),与缴款时的不同。例如:
- 缴款 Receipt:"装修保证金缴纳 ¥5,000(现金)"
- 退款 Receipt:"装修保证金退还 ¥-5,000(银行转账)"
[!info] 系统不强制原路返回 不像信用卡退款"必须原卡原路退",押金退款可以任意渠道,只要业务方同意。
业务人员视角(物业财务)
第 1 步:打开账户做退款
同 refund-full-no-damage 流程,在 RefundAction Modal 表单里:
| 字段 | 填什么 |
|---|---|
| 退款金额 | 全额或部分 |
| 退款渠道(PaymentChannel) | 关键! 选当前业户指定的方式,不要被原缴款渠道误导 |
| 收款银行账户 | 若选银行转账,填回款用的物业付款账户(不是业户账户) |
| 备注 | 推荐写"原现金缴,退银行转账" 提示后续审计 |
[!warning] PaymentChannel 选错的后果
- 选错只影响后续线下退款操作和审计追溯,不影响系统资金流
- 但建议事前与业户确认,事后改字段是没法的(
DepositTransaction不可变)
第 2 步:走线下退款流程
按选定的渠道实际转账:
| PaymentChannel | 线下动作 |
|---|---|
| 微信 | 用物业微信账号给业户转 |
| 银行转账 | 导出转账指令,银行办理 |
| POS | 在 POS 机上做退款(注意:只能退到原 POS 卡,不适合渠道切换) |
| 现金 | 业户到前台领现金 |
第 3 步:给红字收据
收据的"退款渠道"字段会反映实际操作渠道,业户能看到。
系统视角
退款的 CollectionOrder.payment_channel_id 字段独立于缴款 CollectionOrder 的同字段。
flowchart LR
A[缴款 CO #1<br/>payment=现金<br/>actual=+5000] -.关联.-> B[DepositAccount<br/>balance=5000]
B -.关联.-> C[退款 CO #2<br/>payment=银行转账<br/>actual=-5000]
B --> D[balance=0, Closed]
每张 CO 各自记录自己的支付渠道,不互相影响。审计时看 2 张 CO 就知道"原现金,退银行转账"。
字段映射(渠道切换涉及的所有字段)
| 字段 | 缴款时(CO #1) | 退款时(CO #2) | 是否必须一致 |
|---|---|---|---|
payment_channel_id |
现金 | 银行转账 | ❌ 独立 |
bank_account_id |
NULL(现金不需要) | 物业银行账户 | ❌ 独立 |
actual_amount |
+5000 | -5000 | ❌ 相反符号 |
community_id |
物业项目 | 同 | ✅ 必须 |
community_user_profile_id |
张阿姨 | 同 | ✅ 必须(若业户账户) |
常见问题
[!question] 业户没提供银行卡能不能退? 不能退。退款必须有可执行的回款渠道。如果业户失联无法联系,走 force-close-retain 路径:账户翻 Closed,资金记入
meta.balance_held_*审计字段,留待业户回来再操作。
[!question] POS 缴款想退到银行卡可以吗? 看 POS 机和银行政策。一般 POS 退款必须原卡原路退。如果业户想换卡:
- 方案 1:在 POS 机上做"原卡退款",业户收到后自行转去新卡
- 方案 2:走"虚拟"现金退款 —— 系统记 PaymentChannel=现金,实际走对公转账业户新卡(需财务有完整凭证支撑)
- 推荐方案 1,合规度高
[!question] 退款渠道与缴款渠道不一致会触发什么审计风险? 主要风险:洗钱嫌疑(虚假交易、套现等)。审计抽查会重点看这类"换渠道"的退款,要求物业留下:
- 业户书面要求换渠道的依据(签字 / 微信记录截图存档)
- 物业内部审批记录
- 银行流水回单
系统只保证账面记录正确(红字 CO + 渠道字段),合规凭证靠物业流程保障。
[!question] 公司账户变更了,如何确保打到新账户? 退款前更新
DepositAccount.payer_contact字段(纯参考性,不影响支付),并在 Modal 表单"备注"清楚写明"新对公账号:xxx"。线下转账时财务按这个备注操作。
[!question] 部分渠道(微信 / POS)有退款金额上限吗? 微信单笔退款 / POS 单日上限由对应支付网关决定,系统不限制。如超限,实际线下转账需分多笔或走银行转账,但系统记录上仍是一张 Receipt(单笔退款流水)。
异常分支
- 业户失联无法退款 → force-close-retain
- 退款触发支付网关失败(微信渠道异常等)→ 当前系统不处理回调,需财务沟通业户后线下补救
- 业户拒绝任何退款方式 → freeze-during-dispute 冻结调解