--- title: prop-acc · deposit · 场景 - 退款渠道与缴款渠道不同 aliases: - 退款换渠道 - 现金缴款银行转账退 - refund-with-payment-channel-switch - 场景-押金退款换渠道 tags: - 场景 - prop-acc - 保证金 - 退款 audience: - 业户 - 业务人员 status: 已发布 sub_feature: deposit last_review: 2026-05-25 code_version: 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 的同字段。 ```mermaid flowchart LR A[缴款 CO #1
payment=现金
actual=+5000] -.关联.-> B[DepositAccount
balance=5000] B -.关联.-> C[退款 CO #2
payment=银行转账
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]] 冻结调解 ## 相关文档 - [[refund-full-no-damage]] - [[refund-partial-after-forfeit]] - [[force-close-retain]] - [[deposit-on-behalf-by-company]] - [[red-receipt-design]]