基础支付
JSAPI支付
APP支付
H5支付
Native支付
小程序支付
合单支付
付款码支付
经营能力
微信支付分(公共API)
微信支付分(免确认预授权模式)
微信支付分(需确认模式)
支付即服务
行业方案
智慧商圈
微信支付分停车服务
电子发票
营销工具
代金券
商家券
委托营销
支付有礼
小程序发券插件
H5发券
图片上传(营销专用)
现金红包
资金应用
商家转账到零钱
分账
风险合规
消费者投诉2.0
其他能力
清关报关
图片上传
视频上传
微信支付平台证书

申请退款API

最新更新时间:2020.10.10 版本说明


当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退还给买家,微信支付将在收到退款请求并且验证成功之后,按照退款规则将支付款按原路退到买家帐号上。

注意:

● 交易时间超过一年的订单无法提交退款;

● 微信支付退款支持单笔交易分多次退款,多次退款需要提交原支付订单的商户订单号和设置不同的退款单号。申请退款总金额不能超过订单金额。 一笔退款失败后重新提交,请不要更换退款单号,请使用原商户退款单号;

● 请求频率限制:150qps,即每秒钟正常的申请退款请求次数不超过150次;
     错误或无效请求频率限制:6qps,即每秒钟异常或错误的退款申请请求不超过6次

● 每个支付订单的部分退款次数不能超过50次;

● 如果同一个用户有多笔退款,建议分不同批次进行退款,避免并发退款导致退款失败。

● 申请退款接口的返回仅代表业务的受理情况,具体退款是否成功,需要通过退款查询接口获取结果。


服务商模式下,退款接口需要单独申请权限,详见:特约商户退款权限授权及解除操作方法

接口说明

适用对象:直连商户 服务商

请求URL: https://api.mch.weixin.qq.com/secapi/pay/refund

冗灾备用URL:https://api2.mch.weixin.qq.com/secapi/pay/refund(备用域名)见跨城冗灾方案

请求方式: POST

数据格式: XML

是否需要证书: 需要双向证书。 详见证书使用

请求参数

参数名 变量 类型 必填 描述
应用ID appid string[1,32] 微信分配的应用ID
示例值:wx8888888888888888
商户号 mch_id string[1,32] 微信支付分配的商户号
示例值:1900000109
子商户应用ID sub_appid string[1,32] 微信分配的子商户应用ID,如需在支付完成后获取sub_openid则此参数必传。
注意:仅适用于服务商模式
示例值:wx8888888888888888
子商户号 sub_mch_id string[1,32] 微信支付分配的子商户号
注意:仅适用于服务商模式
示例值:1900000109
随机字符串 nonce_str string[1,32] 随机字符串,不长于32位。推荐随机数生成算法
示例值:5K8264ILTKCH16CQ2502SI8ZNMTM67VS
签名 sign string[1,64] 签名,详见签名生成算法
示例值:C380BEC2BFD727A4B6845133519F3AD6
签名类型 sign_type string[1,32] 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
示例值:HMAC-SHA256
微信支付订单号 transaction_id string[1,32] 二选一 微信的订单号,优先使用
示例值:1217752501201407033233368018
商户订单号 out_trade_no string[1,32] 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*@ ,且在同一个商户号下唯一。
示例值:1217752501201407033233368018
商户退款单号 out_refund_no string[1,64] 商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母_-|*@ ,同一退款单号多次请求只退一笔。
示例值:1217752501201407033233368018
订单金额 total_fee int 订单总金额,单位为分,只能为整数,详见交易金额
示例值:100
申请退款金额 refund_fee int 退款总金额,单位为分,只能为整数,可部分退款。详见交易金额
示例值:100
退款货币种类 refund_fee_type string[1,8] 退款货币类型,需与支付一致,或者不填。符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
示例值:CNY
退款原因 refund_desc string[1,80] 若商户传入,会在下发给用户的退款消息中体现退款原因
注意:若订单退款金额≤1元,且属于部分退款,则不会在退款消息中体现退款原因
示例值:商品已售完
退款资金来源 refund_account string[1,30] 仅针对老资金流商户使用
REFUND_SOURCE_UNSETTLED_FUNDS:未结算资金退款(默认使用未结算资金退款)
REFUND_SOURCE_RECHARGE_FUNDS:可用余额退款
示例值:REFUND_SOURCE_RECHARGE_FUNDS
退款结果通知url notify_url string[1,256] 异步接收微信支付退款结果通知的回调地址,通知URL必须为外网可访问的url,不允许带参数
如果参数中传了notify_url,则商户平台上配置的回调地址将不会生效。
示例值:https://weixin.qq.com/notify/

请求示例:


<xml>
  <appid>wx2421b1c4370ec43b</appid>
  <mch_id>10000100</mch_id>
  <nonce_str>6cefdb308e1e2e8aabd48cf79e546a02</nonce_str>
  <sub_mch_id>1415701182</sub_mch_id>
  <out_refund_no>1415701182</out_refund_no>
  <out_trade_no>1415757673</out_trade_no>
  <refund_fee>1</refund_fee>
  <total_fee>1</total_fee>
  <transaction_id>4006252001201705123297353072</transaction_id>
  <sign>FE56DD4AA85C0EECA82C35595A69E153</sign>
</xml>
    
{
JAVA示例代码
}
    

返回参数

参数名 变量 类型 必填 描述
返回状态码 return_code string[1,16] SUCCESS:退款申请接收成功,结果通过退款查询接口查询
FAIL:提交业务失败
此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
示例值:SUCCESS
返回信息 return_msg string[1,128] 返回信息,如非空,为错误原因 
签名失败 
参数格式校验错误
示例值:签名失败

返回状态码(return_code)为SUCCESS的时候,包含以下字段

参数名 变量 类型 必填 描述
业务结果 result_code string[1,16] SUCCESS/FAIL
示例值:SUCCESS
错误代码 err_code string[1,32] 详细参见错误列表
示例值:SYSTEMERROR
错误代码描述 err_code_des string[1,128] 结果信息描述
示例值:系统错误
应用ID appid string[1,32] 微信分配的应用ID
示例值:wx8888888888888888
商户号 mch_id string[1,32] 微信支付分配的商户号
示例值:1900000109
子商户应用ID sub_appid string[1,32] 微信分配的子商户应用ID,如需在支付完成后获取sub_openid则此参数必传。
注意:仅适用于服务商模式
示例值:wx8888888888888888
子商户号 sub_mch_id string[1,32] 微信支付分配的子商户号
注意:仅适用于服务商模式
示例值:1900000109
随机字符串 nonce_str string[1,32] 随机字符串,不长于32位。推荐随机数生成算法
示例值:5K8264ILTKCH16CQ2502SI8ZNMTM67VS
签名 sign string[1,64] 签名,详见签名生成算法
示例值:C380BEC2BFD727A4B6845133519F3AD6
微信支付订单号 transaction_id string[1,32] 微信支付订单号
示例值:1217752501201407033233368018
商户订单号 out_trade_no string[1,32] 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*@ ,且在同一个商户号下唯一。
示例值:1217752501201407033233368018
商户退款单号 out_refund_no string[1,64] 商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母_-|*@ ,同一退款单号多次请求只退一笔。
示例值:1217752501201407033233368018
微信退款单号 refund_id string[1,32] 微信退款单号
示例值:1217752501201407033233368018
申请退款金额 refund_fee int 退款总金额,单位为分,只能为整数,可部分退款。详见交易金额
示例值:100
退款金额 settlement_refund_fee int 去掉非充值代金券退款金额后的退款金额,退款金额=申请退款金额-非充值代金券退款金额,退款金额<=申请退款金额
示例值:100
订单金额 total_fee int 订单总金额,单位为分,只能为整数,详见交易金额
示例值:100
应结订单金额 settlement_total_fee int 应结订单金额=订单金额-免充值代金券金额,应结订单金额<=订单金额。
示例值:100
货币种类 fee_type string[1,8] 订单金额货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
示例值:CNY
现金支付金额 cash_fee int 现金支付金额,单位为分,只能为整数,详见交易金额
示例值:100
现金退款金额 cash_refund_fee int 现金退款金额,单位为分,只能为整数,详见交易金额
示例值:100
代金券退款总金额 coupon_refund_fee int 代金券退款金额<=退款金额,退款金额-代金券或立减优惠退款金额为现金,说明详见代金券或立减优惠
示例值:100
退款代金券使用数量 coupon_refund_count int 退款代金券使用数量
示例值:1
代金券类型 coupon_type_$n string[1,8] CASH:充值代金券
NO_CASH:非充值代金券
订单使用代金券时有返回(取值:CASH、NO_CASH)。$n为下标,从0开始编号,举例:coupon_type_0
示例值:CASH
退款代金券ID coupon_refund_id_$n string[1,20] 退款代金券ID,$n为下标,从0开始编号
示例值:100
单个代金券退款金额 coupon_refund_fee_$n int 单个退款代金券支付金额,$n为下标,从0开始编号
示例值:100

返回示例:


<xml>
  <return_code><![CDATA[SUCCESS]]></return_code>
  <return_msg><![CDATA[OK]]></return_msg>
  <appid><![CDATA[wx2421b1c4370ec43b]]></appid>
  <mch_id><![CDATA[10000100]]></mch_id>
  <sub_mch_id ><![CDATA[10000101]]></sub_mch_id >
  <nonce_str><![CDATA[NfsMFbUFpdbEhPXP]]></nonce_str>
  <sign><![CDATA[B7274EB9F8925EB93100DD2085FA56C0]]></sign>
  <result_code><![CDATA[SUCCESS]]></result_code>
  <transaction_id><![CDATA[1008450740201411110005820873]]></transaction_id>
  <out_trade_no><![CDATA[1415757673]]></out_trade_no>
  <out_refund_no><![CDATA[1415701182]]></out_refund_no>
  <refund_id><![CDATA[2008450740201411110000174436]]></refund_id>
  <refund_fee>1</refund_fee> 
</xml>

http://2323weixin.qq.com

错误码

错误码 描述 解决方案
SYSTEMERROR 接口返回错误 请不要更换商户退款单号,请使用相同参数再次调用API。
BIZERR_NEED_RETRY 退款业务流程错误,需要商户触发重试来解决 请不要更换商户退款单号,请使用相同参数再次调用API。
TRADE_OVERDUE 订单已经超过退款期限 请选择其他方式自行退款
ERROR 业务错误 该错误都会返回具体的错误原因,请根据实际返回做相应处理。
USER_ACCOUNT_ABNORMAL 退款请求失败 此状态代表退款申请失败,商户可自行处理退款。
INVALID_REQ_TOO_MUCH 无效请求过多 请检查业务是否正常,确认业务正常后请在1分钟后再来重试
NOTENOUGH 余额不足 此状态代表退款申请失败,商户可根据具体的错误提示做相应的处理。
INVALID_TRANSACTIONID 无效transaction_id 请求参数错误,检查原交易号是否存在或发起支付交易接口返回失败
PARAM_ERROR 参数错误 请求参数错误,请重新检查再调用退款申请
APPID_NOT_EXIST APPID不存在 请检查APPID是否正确
MCHID_NOT_EXIST MCHID不存在 请检查MCHID是否正确
ORDERNOTEXIST 订单号不存在 请检查你的订单号是否正确且是否已支付,未支付的订单不能发起退款
REQUIRE_POST_METHOD 请使用post方法 请检查请求参数是否通过post方法提交
SIGNERROR 签名错误 请检查签名参数和方法是否都符合签名算法要求
XML_FORMAT_ERROR XML格式错误 请检查XML参数格式是否正确
FREQUENCY_LIMITED 频率限制 该笔退款未受理,请降低频率后重试
NOAUTH 异常IP请求不予受理 如果是动态ip,请登录商户平台后台关闭ip安全配置;
如果是静态ip,请确认商户平台配置的请求ip 在不在配的ip列表里  
CERT_ERROR 证书校验错误 请检查证书是否正确,证书是否过期或作废。
REFUND_FEE_MISMATCH 订单金额或退款金额与之前请求不一致,请核实后再试 订单金额或退款金额与之前请求不一致,请核实后再试
INVALID_REQUEST 请求参数符合参数格式,但不符合业务规则 此状态代表退款申请失败,商户可根据具体的错误提示做相应的处理。
ORDER_NOT_READY 订单处理中,暂时无法退款,请稍后再试 订单处理中,暂时无法退款,请稍后再试  


版本说明

关闭
V1.0
2020.10.10
1. 申请退款接口上线

技术咨询

文档反馈