退款申请
更新时间:2023.08.23当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退还给买家,微信支付将在收到退款请求并且验证成功之后,按照退款规则将支付款按原路退到买家帐号上。
注意:
- 交易时间超过一年的订单无法提交退款(按支付成功时间+365天计算)
- 微信支付退款支持单笔交易分多次退款,多次退款需要提交原支付订单的商户订单号和设置不同的退款单号。申请退款总金额不能超过订单金额。 一笔退款失败后重新提交,请不要更换退款单号,请使用原商户退款单号
- 请求频率限制:150qps,即每秒钟正常的申请退款请求次数不超过150次
- 每个支付订单的部分退款次数不能超过50次
- 如果同一个用户有多笔退款,建议分不同批次进行退款,避免并发退款导致退款失败
- 申请退款接口的返回仅代表业务的受理情况,具体退款是否成功,需要通过退款查询接口获取结果
- 错误或无效请求频率限制:6qps,即每秒钟异常或错误的退款申请请求不超过6次
- 一个月之前的订单申请退款频率限制为:5000/min
- 同一笔订单多次退款的请求需相隔1分钟
# 接口说明
支持商户:
【普通商户】
请求方式:
【POST】/v3/refund/domestic/refunds
请求域名:
【主域名】
https://api.mch.weixin.qq.com
使用该域名将访问就近的接入点【备域名】
https://api2.mch.weixin.qq.com
使用该域名将访问异地的接入点 ,指引点击查看
# 请求参数
- Authorization 必填请参考 签名认证 生成认证信息
- Accept 必填请设置为
application/json
- Content-Type 必填请设置为
application/json
Header HTTP头参数
- transaction_id 选填【微信支付订单号】 原支付交易对应的微信订单号,与out_trade_no二选一
- out_trade_no 选填【商户订单号】 原支付交易对应的商户订单号,与transaction_id二选一
- out_refund_no 必填【商户退款单号】 商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母_-|*@ ,同一退款单号多次请求只退一笔。
- reason 选填【退款原因】 若商户传入,会在下发给用户的退款消息中体现退款原因
- notify_url 选填【退款结果回调url】 异步接收微信支付退款结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。 如果参数中传了notify_url,则商户平台上配置的回调地址将不会生效,优先回调当前传的这个地址。
- funds_account 选填【退款资金来源】 若传递此参数则使用对应的资金账户退款,否则默认使用未结算资金退款(仅对老资金流商户适用)。
AVAILABLE:可用余额
出行预付押金退款可以指定从未结算资金出资。
UNSETTLED:未结算资金
可选取值:AVAILABLE
: 仅对老资金流商户适用,指定从可用余额账户出资UNSETTLED
: 仅对出行预付押金退款适用,指定从未结算资金出资
- amount 必填【金额信息】 订单金额信息
- 属性
- goods_detail 选填【退款商品】 指定商品退款需要传此参数,其他场景无需传递
- 属性
Body 包体参数
请求示例
POST
# 应答参数
- refund_id 必填【微信支付退款号】 微信支付退款号
- out_refund_no 必填【商户退款单号】 商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母_-|*@ ,同一退款单号多次请求只退一笔。
- transaction_id 必填【微信支付订单号】 微信支付交易订单号
- out_trade_no 必填【商户订单号】 原支付交易对应的商户订单号
- channel 必填【退款渠道】 退款渠道
可选取值:ORIGINAL
: 原路退款BALANCE
: 退回到余额OTHER_BALANCE
: 原账户异常退到其他余额账户OTHER_BANKCARD
: 原银行卡异常退到其他银行卡
- user_received_account 必填【退款入账账户】 取当前退款单的退款入账方,有以下几种情况:
1)退回银行卡:{银行名称}{卡类型}{卡尾号}
2)退回支付用户零钱:支付用户零钱
3)退还商户:商户基本账户商户结算银行账户
4)退回支付用户零钱通:支付用户零钱通
5)退回支付用户银行电子账户:支付用户银行电子账户
6)退回支付用户零花钱:支付用户零花钱
7)退回用户经营账户:用户经营账户
8)退回支付用户来华零钱包:支付用户来华零钱包
9)退回企业支付商户:企业支付商户 - success_time 选填【退款成功时间】 退款成功时间,退款状态status为SUCCESS(退款成功)时,返回该字段。遵循rfc3339标准格式,格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE,YYYY-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日13点29分35秒。
- create_time 必填【退款创建时间】 退款受理时间,遵循rfc3339标准格式,格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE,YYYY-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日13点29分35秒。
- status 必填【退款状态】 退款到银行发现用户的卡作废或者冻结了,导致原路退款银行卡失败,可前往商户平台(pay.weixin.qq.com)-交易中心,手动处理此笔退款。
可选取值:SUCCESS
: 退款成功CLOSED
: 退款关闭PROCESSING
: 退款处理中ABNORMAL
: 退款异常
- funds_account 选填【资金账户】 退款所使用资金对应的资金账户类型
可选取值:UNSETTLED
: 未结算资金AVAILABLE
: 可用余额UNAVAILABLE
: 不可用余额OPERATION
: 运营户BASIC
: 基本账户(含可用余额和不可用余额)ECNY_BASIC
: 数字人民币基本账户
- amount 必填【金额信息】 金额详细信息
- 属性
- promotion_detail 选填【优惠退款信息】 优惠退款信息
- 属性
200OK
应答示例
200 OK
# 错误码
# 公共错误码
状态码 | 错误码 | 描述 | 解决方案 |
---|---|---|---|
400 | PARAM_ERROR | 参数错误 | 请根据错误提示正确传入参数 |
400 | INVALID_REQUEST | HTTP 请求不符合微信支付 APIv3 接口规则 | 请参阅 接口规则 |
401 | SIGN_ERROR | 验证不通过 | 请参阅 签名常见问题 |
500 | SYSTEM_ERROR | 系统异常,请稍后重试 | 请稍后重试 |
# 业务错误码
状态码 | 错误码 | 描述 | 解决方案 |
---|---|---|---|
400 | INVALID_REQUEST | 请求参数符合参数格式,但不符合业务规则 | 此状态代表退款申请失败,商户可根据具体的错误提示做相应的处理。 |
401 | SIGN_ERROR | 签名错误 | 请检查签名参数和方法是否都符合签名算法要求 |
403 | NO_AUTH | 没有退款权限 | 此状态代表退款申请失败,请检查是否有该笔订单的退款权限 |
403 | NOT_ENOUGH | 余额不足 | 此状态代表退款申请失败,商户可根据具体的错误提示做相应的处理。 |
403 | USER_ACCOUNT_ABNORMAL | 退款请求失败 | 此状态代表退款申请失败,商户可自行处理退款。 |
404 | MCH_NOT_EXISTS | MCHID不存在 | 请检查MCHID是否正确 |
404 | RESOURCE_NOT_EXISTS | 订单号不存在 | 请检查你的订单号是否正确且是否已支付,未支付的订单不能发起退款 |
429 | FREQUENCY_LIMITED | 频率限制 | 该笔退款未受理,请降低频率后重试 |
500 | SYSTEM_ERROR | 系统超时 | 请不要更换商户退款单号,请使用相同参数再次调用API。 |
文档是否有帮助