申请退款(按商户订单号)

更新时间:2025.06.19
||

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

  1. 交易时间超过一年的订单无法提交退款(按支付成功时间+365天计算)。

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

  3. 请求频率限制:150qps,即每秒钟正常的申请退款请求次数不超过150次,单笔订单请求频率限制:1qpm,即单笔订单每分钟申请退款请求次数不超过1次。

  4. 每个支付订单的部分退款次数不能超过50次。

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

接口说明

支持商户:【平台商户】

请求方式:【POST】/v3/ecommerce/refunds/apply

请求域名:【主域名】https://api.mch.weixin.qq.com 使用该域名将访问就近的接入点

     【备域名】https://api2.mch.weixin.qq.com 使用该域名将访问异地的接入点 ,指引点击查看

请求参数
折叠全部参数

Header  HTTP头参数

 Authorization  必填 string

请参考签名认证生成认证信息


 Accept  必填 string

请设置为application/json


 Content-Type  必填 string

请设置为application/json


body  包体参数

 sub_mchid  必填   string(32)

【二级商户号】 微信支付分配二级商户的商户号。


 sp_appid  必填   string(32)

【电商平台APPID】 电商平台在微信公众平台申请服务号对应的APPID,申请商户功能的时候微信支付会配置绑定关系


 sub_appid  选填   string(32)

【二级商户APPID】 二级商户在微信申请公众号成功后分配的帐号ID,需要电商平台侧有配置绑定关系才能传


 out_refund_no  必填   string(64)

【商户退款单号】 商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母_-|*@ ,同一退款单号多次请求只退一笔。


 out_trade_no  必填   string(32)

【还款明细单订单号】 商户系统内部对还款明细单定义的订单号,在同一个商户号下唯一。


 combine_mchid  必填   string(32)

【还款服务商商户号】 还款发起方商户号,是由微信支付系统生成并分配给每个服务商的唯一标识符。


 combine_out_trade_no  必填   string(32)

【还款订单号】 商户系统内部的交易单商户订单号,在同一个商户号下唯一。


 reason  选填   string(80)

【退款原因】 若商户传入,会在下发给用户的退款消息中体现退款原因


 amount  必填   object

【订单金额】 订单金额信息

属性

 refund  必填   integer

【退款金额】 退款金额,币种的最小单位,只能为整数,不能超过原订单支付金额。


 from  选填   array[object]

【退款出资账户及金额】 退款需要从指定账户出资时,传递此参数指定出资金额(币种的最小单位,只能为整数)。
该功能优先级高于通过资金账户(funds_account)参数来指定可用余额出资退款功能,且二者不可同时使用。
同时指定多个账户出资退款的使用场景需要满足以下条件:1、未开通退款支出分离产品功能;2、非电商平台垫付退款;3、订单属于分账订单,且分账处于待分账或分账中状态。
参数传递需要满足条件:1、基本账户可用余额出资金额与基本账户不可用余额出资金额之和等于退款金额;2、账户类型不能重复。
上述任一条件不满足将返回错误

属性

 account  必填   string(32)

【出资账户类型】 下面枚举值多选一。
枚举值:
AVAILABLE : 可用余额
UNAVAILABLE : 不可用余额


 amount  必填   integer

【出资金额】 对应账户出资金额


 total  必填   integer

【原订单金额】 原支付交易的订单总金额,币种的最小单位,只能为整数


 currency  选填   string(16)

【退款币种】 符合ISO 4217标准的三位字母代码,目前只支持人民币:CNY


 notify_url  选填   string(256)

【退款结果回调url】 异步接收微信支付退款结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。 如果参数中传了notify_url,则商户平台上配置的回调地址将不会生效,优先回调当前传的这个地址。


 funds_account  选填   string

【资金账户】 若订单处于待分账状态,可以传入此参数,指定退款资金来源账户。当该字段不存在时,默认使用订单交易资金所在账户出款,即待分账时使用不可用余额的资金进行退款,已分账或无分账时使用可用余额的资金进行退款。
AVAILABLE:可用余额

请求示例

POST

1curl -X POST \
2  https://api.mch.weixin.qq.com/v3/ecommerce/refunds/apply \
3  -H "Authorization: WECHATPAY2-SHA256-RSA2048 mchid=\"1900000001\",..." \
4  -H "Accept: application/json" \
5  -H "Content-Type: application/json" \
6  -d '{
7    "sub_mchid" : "1900000109",
8    "sp_appid" : "wx8888888888888888",
9    "sub_appid" : "wx8888888888888888",
10    "out_refund_no" : "1217752501201407033233368018",
11    "out_trade_no" : "20250506125346",    
12    "combine_mchid" : "1230000109",    
13    "combine_out_trade_no" : "P20150806125346",      
14    "reason" : "商品已售完",
15    "amount" : {
16      "refund" : 888,
17      "from" : [
18        {
19          "account" : "AVAILABLE",
20          "amount" : 444
21        }
22      ],
23      "total" : 888,
24      "currency" : "CNY"
25    },
26    "notify_url" : "https://weixin.qq.com",
27    "funds_account" : "AVAILABLE"
28  }'
29

应答参数
折叠全部参数

200 OK

 refund_id  必填   string(32)

【微信支付退款订单号】 微信支付退款订单号


 out_refund_no  必填   string(64)

【商户退款单号】 商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母_-|*@ ,同一退款单号多次请求只退一笔。


 create_time  必填   string(64)

【退款创建时间】 退款受理时间,遵循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秒。


 amount  必填   object

【退款金额】 订单退款金额信息

属性

 refund  必填   integer

【退款金额】 退款金额,单位为分,只能为整数,不能超 过原订单支付金额


 from  选填   array[object]

【退款出资账户及金额】 退款出资的账户类型及金额信息

属性

 account  必填   string(32)

【出资账户类型】 下面枚举值多选一。
枚举值:
AVAILABLE : 可用余额
UNAVAILABLE : 不可用余额


 amount  必填   integer

【出资金额】 对应账户出资金额


 payer_refund  必填   integer

【用户退款金额】 退款给用户的金额,不包含所有优惠券金额


 discount_refund  选填   integer

【优惠退款金额】 优惠券的退款金额,原支付单的优惠按比例退款


 currency  选填   string(16)

【货币类型】 符合ISO4217标准的三位字母代码,目前只支持人民币:CNY


 promotion_detail  选填   array[object]

【优惠退款详情】 优惠退款功能信息

属性

 promotion_id  必填   string(32)

【券ID】 券或者立减优惠id


 scope  必填   string(32)

【优惠范围】 GLOBAL- 全场代金券
SINGLE- 单品优惠


 type  必填   string(32)

【优惠类型】 COUPON- 代金券,需要走结算资金的充值型代金券
DISCOUNT- 优惠券,不走结算资金的免充值型优惠券


 amount  必填   integer

【优惠券面额】 用户享受优惠的金额(优惠券面额=微信出资金额+商家出资金额+其他出资方金额 )


 refund_amount  必填   integer

【优惠退款金额】 代金券退款金额<=退款金额,退款金额-代金券或立减优惠退款金额为现金,说明详见代金券或立减优惠

应答示例

200 OK

1{
2  "refund_id" : "1217752501201407033233368018",
3  "out_refund_no" : "1217752501201407033233368018",
4  "create_time" : "2018-06-08T10:34:56+08:00",
5  "amount" : {
6    "refund" : 888,
7    "from" : [
8      {
9        "account" : "AVAILABLE",
10        "amount" : 444
11      }
12    ],
13    "payer_refund" : 888,
14    "discount_refund" : 888,
15    "currency" : "CNY"
16  },
17  "promotion_detail" : [
18    {
19      "promotion_id" : "109519",
20      "scope" : "SINGLE",
21      "type" : "DISCOUNT",
22      "amount" : 5,
23      "refund_amount" : 100
24    }
25  ]
26}
27

 

错误码

公共错误码

状态码

错误码

描述

解决方案

400

PARAM_ERROR

参数错误

请根据错误提示正确传入参数

400

INVALID_REQUEST

HTTP 请求不符合微信支付 APIv3 接口规则

请参阅 接口规则

401

SIGN_ERROR

验证不通过

请参阅 签名常见问题

500

SYSTEM_ERROR

系统异常,请稍后重试

请稍后重试

业务错误码

状态码

错误码

描述

解决方案

400

INVALID_REQUEST

请求参数符合参数格式,但不符合业务规则

此状态代表本次请求的退款申请失败,请根据具体的错误提示做相应处理

400

MCH_NOT_EXISTS

商户号不存在

请检查商户号是否正确

401

SIGN_ERROR

签名错误

请检查签名参数和方法是否都符合签名算法要求

403

NO_AUTH

没有退款权限

此状态代表退款申请失败,请检查是否有退这笔订单的权限

403

NOT_ENOUGH

余额不足

根据提示进行充值后重试

403

USER_ACCOUNT_ABNORMAL

用户账户异常或已注销,不能原路退回,请使用其他方式进行退款

此状态代表退款申请失败,商户可自行处理退款。或前往服务商-交易中心,重新发起退款

404

RESOURCE_NOT_EXISTS

订单不存在

请检查订单号是否正确且是否已支付,未支付的订单不能发起退款

429

FREQUENCY_LIMITED

频率限制

该笔退款为受理中,请调用查单接口确认或降低频率原单重试,重试请勿更换单号

500

SYSTEM_ERROR

接口返回错误

请不要更换商户退款单号,请使用相同参数再次调用API

 

 

元宝AI
反馈
目录
置顶