一、报错信息
接口名称:requestMerchantTransfer,WXOpenBusinessView
对应业务:微信支付商家转账 -> 「JSAPI调起用户确认收款」,「APP调起用户确认收款」
错误信息:订单已失效,请根据微信支付账单确认是否收款成功。
错误截图:

二、问题原因
根本原因:商户在用户确认收款之前通过接口主动撤销了付款,已撤销付款单对应的”package_info”会失效,不可以再进行确认收款。
三、快速排查
- 调用「商户单号查询转账单」接口,查询单号对应状态,仅当转账单据状态为WAIT_USER_CONFIRM时,“package_info”才会有效
- 检查调用“requestMerchantTransfer”接口“package”字段参数值是否有缓存已失效转账单的“package_info”参数值
四、解决方案
更换新的out_bill_no商户单号重新发起转账请求,获取新的“package_info”参数值
先调用「商户单号查询转账单」接口,查询单号对应状态(此操作是为了避免发生资损),当“state”字段返回为“CANCELLED”说明订单已被商户撤销,对应的”package_info”已经失效,如果需要继续向用户发起付款,需要更换新的out_bill_no商户单号重新发起转账请求。
此处建议商户设计产品时,拉起用户确认收款页面前,应先查单据状态,转账单为终态时前端应不再直接调用requestMerchantTransfer,WXOpenBusinessView接口,根据自己实际业务需要直接给出用户对应提示或更换单号重新发起转账。
{
"appid": "wxf636efh567hg4356",
"create_time": "2025-06-26T15:22:45+08:00",
"fail_reason": "MCH_CANCEL",
"mch_id": "1900001109",
"openid": "o-MYE42l80oelYMDE34nYD456Xoy",
"out_bill_no": "plfk2025062500000000000001",
"state": "CANCELLED",
"transfer_amount": 10,
"transfer_bill_no": "1330000071100999991182020050700019480001",
"transfer_remark": "2025年1月报销",
"update_time": "2025-06-26T15:35:24+08:00"
}