看到“超出可退款期限/订单已关闭/原交易不存在”,先把报错对上号
这三类提示,本质上是微信支付在告诉你:时间不允许、订单状态不允许、或你查的那笔交易根本对不上。商家助手里点退款失败时,别反复点提交,先做定位,不然容易越改越乱。
三种报错的原因与对症处理
1)提示“超出可退款期限”(常见错误码:TRADE_OVERDUE)
微信支付的规则很硬:可退款期限是“支付完成后的一年内”。比如订单在2026年2月18日支付成功,你最晚也只能在2026年内对应的一年周期内发起退款;超过就会直接拦截。
- 怎么确认:去商户平台/系统里查支付成功时间(不是下单时间)。
- 怎么处理:这类不是技术问题,接口/页面都救不了。只能走线下补偿(转账、发券、补差等)并留存凭证。
2)提示“订单已关闭 / 退款关闭(CLOSED)”
“关闭”通常不是你没权限,而是这次退款申请被微信判定无法出款。文档里常见场景是:你想从某个不符合要求的资金状态出款(例如分账相关资金状态变化、解冻后不满足出款要求),系统就把这笔退款关掉。
- 怎么确认:用你的商户退款单号查询退款单状态,看到状态为CLOSED就坐实。
- 怎么修:换一个新的商户退款单号重新发起退款(同一个out_refund_no不要复用)。
- 小案例:一笔订单做过部分退款,你又拿同一个退款单号再退10元,很容易触发“金额/请求不一致”或直接关闭。
3)提示“原交易不存在 / 订单不存在”
最常见是订单号传错:把商户订单号当成微信订单号传、字段填反,或者支付模式/商户号不匹配。微信规则也明确:支付成功的订单绑定下单时的商户号,不能换商户号来退。
- 核对三件事:transaction_id和out_trade_no有没有填反;退款用的mchid是不是原收款mchid;订单是否真的支付成功。
- 实操建议:用“查单”接口/页面先把交易查出来,再拿查到的订单号去退,别凭印象手输。
给你一套可执行的排查顺序
- 把该订单的支付成功时间和现在时间对比,超过一年就别死磕接口。
- 用商户退款单号查询退款状态:CLOSED就换新退款单号重试。
- 遇到“原交易不存在”,回到交易查询页核对:订单号字段、mchid、支付是否成功三项是否一致。
- 重试别频繁连点,间隔几十秒再发起,避免系统繁忙叠加误判。
建议你今天就做两件事:把商家助手里退款失败的订单导出一份,按“超期/关闭/不存在”分组;再把系统里退款的out_refund_no生成规则改成“订单号+时间戳/序列号”,确保每次都唯一。这样同类问题会少一大半。