申请退款
更新时间:2026.04.171、场景说明
当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退还给买家,银联将在收到退款请求并且验证成功之后,按照退款规则将支付款按原路退到买家帐号上。
注意:
1、交易时间超过一年中的订单无法提交退款;
2、银联退款支持单笔交易分多次退款,多次退款需要提交原支付订单的商户订单号和设置不同的退款单号。申请退款总金额不能超过订单金额。一笔退款失败后重新提交,请不要更换退款单号,请使用原商户退款单号。
3、请求频率限制:150qps,即每秒钟正常的申请退款请求次数不超过150次。错误或无效请求频率限制:6qps,即每秒钟异常或错误的退款申请请求不超过6次。
4、每个支付订单的部分退款次数不能超过50次。
2、接口说明
2.1 请求参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
公众账号ID | appid | 是 | String(32) | wx8888888888888888 | 微信分配的公众账号ID |
商户号 | mch_id | 是 | String(32) | 1900000109 | 微信支付分配的商户号 |
子商户公众账号ID | sub_appid | 否 | String(32) | wx8888888888888888 | 微信分配的子商户公众账号ID |
子商户号 | sub_mch_id | 否 | String(32) | 1900000109 | 微信支付分配的子商户号 |
渠道商商户号 | channel_id | 是 | String(32) | 19000001 | 微信支付分配给收单服务商的ID |
随机字符串 | nonce_str | 是 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串,不长于32位。推荐随机数生成算法 |
签名 | sign | 是 | String(344) | C380BEC2BFD727A4B6845133519F3AD6 | 签名 |
签名算法 | sign_type | 是 | String(10) | RSA2 | 生成签名字符串所使用的签名算法类型,目前支持SM2、RSA2,推荐使用SM2 |
签名证书 | cert_id | 是 | String(128) | - | 签名证书序列号 |
商户订单号 | out_trade_no | 是 | String(32) | 1217752501201407033233368018 | 商户系统内部的订单号,商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*且在同一个商户号下唯一。重新发起一笔支付要使用原订单号,避免重复支付。 |
商户退款单号 | out_refund_no | 是 | String(64) | 1217752501201407033233368018 | 商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母,同一退款单号多次请求只退一笔。 |
总金额 | total_fee | 是 | Int | 888 | 订单总金额,单位为分,只能为整数 |
申请退款金额 | refund_fee | 是 | Int | 100 | 退款总金额,单位为分,只能为整数,可部分退款。 |
退款货币种类 | refund_fee_type | 否 | String(8) | CNY | 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY |
退款原因 | refund_desc | 否 | String(80) | 商品已售完 | 若商户传入,会在下发给用户的退款消息中体现退款原因 |
退款资金来源 | refund_account | 否 | String(30) | REFUND_SOURCE_UNSETTLED_FUNDS | 仅针对老资金流商户使用;REFUND_SOURCE_UNSETTLED_FUNDS---未结算资金退款(默认使用未结算资金退款);REFUND_SOURCE_RECHARGE_FUNDS---可用余额退款 |
退款结果通知url | notify_url | 否 | String(128) | 异步接收银联退款结果通知的回调地址,通知URL必须为外网可访问的url,不允许带参数。为了便于收单区别支付通知和退款通知,建议收单采用不同的通知地址。 |
2.2 响应参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
返回状态码 | return_code | 是 | String(16) | SUCCESS | SUCCESS/FAIL。此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断 |
返回信息 | return_msg | 否 | String(128) | 签名失败 | 返回信息,如非空,为错误原因:签名失败;参数格式校验错误 |
业务结果 | result_code | 否 | String(16) | SUCCESS | SUCCESS 退款申请接收成功,结果通过退款查询接口查询;FAIL 提交业务失败 |
错误代码 | err_code | 否 | String(32) | SYSTEMERROR | - |
错误代码描述 | err_code_des | 否 | String(128) | 系统超时 | 结果信息描述 |
公众账号ID | appid | 否 | String(32) | wx8888888888888888 | 微信分配的公众账号ID |
商户号 | mch_id | 否 | String(32) | 1900000109 | 微信支付分配的商户号 |
子商户公众账号ID | sub_appid | 否 | String(32) | wx8888888888888888 | 微信分配的子商户公众账号ID |
子商户号 | sub_mch_id | 否 | String(32) | 1900000109 | 微信支付分配的子商户号 |
随机字符串 | nonce_str | 否 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串,不长于32位 |
签名 | sign | 否 | String(344) | C380BEC2BFD727A4B6845133519F3AD6 | 银联返回的签名 |
签名算法 | sign_type | 否 | String(10) | RSA2 | 本域不出现时,默认为RSA2算法。银联生成签名字符串所使用的签名算法类型,本域值同收单请求银联上送的sign_type。 |
签名证书 | cert_id | 否 | String(128) | - | 签名证书序列号 |
商户退款单号 | out_refund_no | 否 | String(64) | 1217752501201407033233368018 | 商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母,同一退款单号多次请求只退一笔。 |
银联退款单号 | refund_id | 否 | String(32) | 1217752501201407033233368018 | 银联退款单号 |
申请退款金额 | refund_fee | 否 | Int | 100 | 退款总金额,单位为分,可以做部分退款 |
退款金额 | settlement_refund_fee | 否 | Int | 100 | 去掉非充值代金券退款金额后的退款金额,退款金额=申请退款金额-非充值代金券退款金额,退款金额<=申请退款金额 |
货币种类 | fee_type | 否 | String(8) | CNY | 订单金额货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY |

