申请退款

更新时间:2024.12.02

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

注意:

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

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

  3. 请求频率限制:150qps,即每秒钟正常的申请退款请求次数不超过150次

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

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

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

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

  8. 一个月之前的订单申请退款频率限制为:5000/min

  9. 同一笔订单多次退款的请求需相隔1分钟

接口说明

支持商户:【普通商户】

请求方式:【POST】/v3/refund/domestic/refunds

请求域名:【主域名】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  包体参数

 transaction_id  选填   string(32)

【微信支付订单号】原支付交易对应的微信订单号,与out_trade_no二选一


 out_trade_no  选填   string(32)

【商户订单号】原支付交易对应的商户订单号,与transaction_id二选一


 out_refund_no  必填   string(64)

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


 reason  选填   string(80)

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


 notify_url  选填   string(256)

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


 funds_account  选填   string

【退款资金来源】若传递此参数则使用对应的资金账户退款,否则默认使用未结算资金退款(仅对老资金流商户适用)

可选取值:

  • AVAILABLE: 仅对老资金流商户适用,指定从可用余额账户出资


 amount  必填   object

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

属性

 refund  必填   integer

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


 from  选填   array[object]

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

属性

 account  必填   string

【出资账户类型】出资账户类型

可选取值:

  • AVAILABLE: 可用余额

  • UNAVAILABLE: 不可用余额


 amount  必填   integer

【出资金额】对应账户出资金额,单位为分


 total  必填   integer

【原订单金额】原支付交易的订单总金额,单位为分,只能为整数。


 currency  必填   string(16)

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


 goods_detail  选填   array

【退款商品】指定商品退款需要传此参数,其他场景无需传递

属性

 merchant_goods_id  必填   string(32)

【商户侧商品编码】商品编码,由半角的大小写字母、数字、中划线、下划线中的一种或几种组成。


 wechatpay_goods_id  选填   string(32)

【微信侧商品编码】微信支付定义的统一商品编号(没有可不传)


 goods_name  选填   string(256)

【商品名称】商品的实际名称


 unit_price  必填   integer

【商品单价】商品单价金额,单位为分


 refund_amount  必填   integer

【商品退款金额】商品退款金额,单位为分


 refund_quantity  必填   integer

【商品退货数量】对应商品的退货数量

请求示例

POST

1{
2  "transaction_id": "1217752501201407033233368018",
3  "out_refund_no": "1217752501201407033233368018",
4  "reason": "商品已售完",
5  "notify_url": "https://weixin.qq.com",
6  "funds_account": "AVAILABLE",
7  "amount": {
8    "refund": 888,
9    "from": [
10      {
11        "account": "AVAILABLE",
12        "amount": 444
13      }
14    ],
15    "total": 888,
16    "currency": "CNY"
17  },
18  "goods_detail": [
19    {
20      "merchant_goods_id": "1217752501201407033233368018",
21      "wechatpay_goods_id": "1001",
22      "goods_name": "iPhone6s 16G",
23      "unit_price": 528800,
24      "refund_amount": 528800,
25      "refund_quantity": 1
26    }
27  ]
28}

应答参数
折叠全部参数

200 OK

 refund_id  必填   string(32)

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


 out_refund_no  必填   string(64)

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


 transaction_id  必填   string(32)

【微信支付订单号】微信支付交易订单号


 out_trade_no  必填   string(32)

【商户订单号】原支付交易对应的商户订单号


 channel  必填   string

【退款渠道】退款渠道

可选取值:

  • ORIGINAL: 原路退款

  • BALANCE: 退回到余额

  • OTHER_BALANCE: 原账户异常退到其他余额账户

  • OTHER_BANKCARD: 原银行卡异常退到其他银行卡


 user_received_account  必填   string(64)

【退款入账账户】 取当前退款单的退款入账方,有以下几种情况:
1)退回银行卡:{银行名称}{卡类型}{卡尾号}
2)退回支付用户零钱:支付用户零钱
3)退还商户:商户基本账户商户结算银行账户
4)退回支付用户零钱通:支付用户零钱通
5)退回支付用户银行电子账户:支付用户银行电子账户
6)退回支付用户零花钱:支付用户零花钱
7)退回用户经营账户:用户经营账户
8)退回支付用户来华零钱包:支付用户来华零钱包
9)退回企业支付商户:企业支付商户
10)退回支付用户小金罐:支付用户小金罐
11)退回支付用户分付:支付用户分付
12)退回微银通:{银行名称}微银通


 success_time  选填   string(64)

【退款成功时间】退款成功时间,退款状态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  必填   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秒。


 status  必填   string

【退款状态】退款到银行发现用户的卡作废或者冻结了,导致原路退款银行卡失败,可前往商户平台(pay.weixin.qq.com)-交易中心,手动处理此笔退款。

可选取值:

  • SUCCESS: 退款成功

  • CLOSED: 退款关闭

  • PROCESSING: 退款处理中

  • ABNORMAL: 退款异常


 funds_account  选填   string

【资金账户】退款所使用资金对应的资金账户类型

可选取值:

  • UNSETTLED: 未结算资金

  • AVAILABLE: 可用余额

  • UNAVAILABLE: 不可用余额

  • OPERATION: 运营户

  • BASIC: 基本账户(含可用余额和不可用余额)

  • ECNY_BASIC: 数字人民币基本账户


 amount  必填   object

【金额信息】金额详细信息

属性

 total  必填   integer

【订单金额】订单总金额,单位为分


 refund  必填   integer

【退款金额】退款标价金额,单位为分,可以做部分退款


 from  选填   array[object]

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

属性

 account  必填   string

【出资账户类型】出资账户类型

可选取值:

  • AVAILABLE: 可用余额

  • UNAVAILABLE: 不可用余额


 amount  必填   integer

【出资金额】对应账户出资金额,单位为分


 payer_total  必填   integer

【用户支付金额】现金支付金额,单位为分,只能为整数


 payer_refund  必填   integer

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


 settlement_refund  必填   integer

【应结退款金额】去掉非充值代金券退款金额后的退款金额,单位为分,退款金额=申请退款金额-非充值代金券退款金额,退款金额<=申请退款金额


 settlement_total  必填   integer

【应结订单金额】应结订单金额=订单金额-免充值代金券金额,应结订单金额<=订单金额,单位为分


 discount_refund  必填   integer

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


 currency  必填   string(16)

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


 refund_fee  选填   integer

【手续费退款金额】手续费退款金额,单位为分


 promotion_detail  选填   array[object]

【优惠退款信息】优惠退款信息

属性

 promotion_id  必填   string(32)

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


 scope  必填   string

【优惠范围】优惠范围

可选取值:

  • GLOBAL: 全场优惠类型

  • SINGLE: 单品优惠类型


 type  必填   string

【优惠类型】优惠类型

可选取值:

  • COUPON: 代金券类型,需要走结算资金的充值型代金券

  • DISCOUNT: 优惠券类型,不走结算资金的免充值型优惠券


 amount  必填   integer

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


 refund_amount  必填   integer

【优惠退款金额】优惠退款金额<=退款金额,退款金额-代金券或立减优惠退款金额为用户支付的现金,说明详见代金券或立减优惠,单位为分


 goods_detail  选填   array

【商品列表】优惠商品发生退款时返回商品信息

属性

 merchant_goods_id  必填   string(32)

【商户侧商品编码】商品编码,由半角的大小写字母、数字、中划线、下划线中的一种或几种组成。


 wechatpay_goods_id  选填   string(32)

【微信侧商品编码】微信支付定义的统一商品编号(没有可不传)


 goods_name  选填   string(256)

【商品名称】商品的实际名称


 unit_price  必填   integer

【商品单价】商品单价金额,单位为分


 refund_amount  必填   integer

【商品退款金额】商品退款金额,单位为分


 refund_quantity  必填   integer

【商品退货数量】对应商品的退货数量

应答示例

200 OK

1{
2  "refund_id" : "50000000382019052709732678859",
3  "out_refund_no" : "1217752501201407033233368018",
4  "transaction_id" : "1217752501201407033233368018",
5  "out_trade_no" : "1217752501201407033233368018",
6  "channel" : "ORIGINAL",
7  "user_received_account" : "招商银行信用卡0403",
8  "success_time" : "2020-12-01T16:18:12+08:00",
9  "create_time" : "2020-12-01T16:18:12+08:00",
10  "status" : "SUCCESS",
11  "funds_account" : "UNSETTLED",
12  "amount" : {
13    "total" : 100,
14    "refund" : 100,
15    "from" : [
16      {
17        "account" : "AVAILABLE",
18        "amount" : 444
19      }
20    ],
21    "payer_total" : 90,
22    "payer_refund" : 90,
23    "settlement_refund" : 100,
24    "settlement_total" : 100,
25    "discount_refund" : 10,
26    "currency" : "CNY",
27    "refund_fee" : 100
28  },
29  "promotion_detail" : [
30    {
31      "promotion_id" : "109519",
32      "scope" : "GLOBAL",
33      "type" : "COUPON",
34      "amount" : 5,
35      "refund_amount" : 100,
36      "goods_detail" : [
37        {
38          "merchant_goods_id" : "1217752501201407033233368018",
39          "wechatpay_goods_id" : "1001",
40          "goods_name" : "iPhone6s 16G",
41          "unit_price" : 528800,
42          "refund_amount" : 528800,
43          "refund_quantity" : 1
44        }
45      ]
46    }
47  ]
48}
49

 

错误码

公共错误码

状态码

错误码

描述

解决方案

400

PARAM_ERROR

参数错误

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

400

INVALID_REQUEST

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

请参阅 接口规则

401

SIGN_ERROR

验证不通过

请参阅 签名常见问题

500

SYSTEM_ERROR

系统异常,请稍后重试

请稍后重试

业务错误码

状态码

错误码

描述

解决方案

400

INVALID_REQUEST

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

此状态代表退款申请失败,商户可根据具体的错误提示做相应的处理。

400

PARAM_ERROR

参数错误

请求参数错误,请重新检查再调用申请退款接口

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。

 

 

元宝AI
反馈
目录
置顶