发起异常退款

更新时间:2024.11.28

提交退款申请后,退款结果通知查询退款确认状态为退款异常,可调用此接口发起异常退款处理。支持退款至用户、退款至交易商户银行账户两种处理方式。

注意:

  1. 退款至用户时,仅支持以下银行的借记卡:招行、交通银行、农行、建行、工商、中行、平安、浦发、中信、光大、民生、兴业、广发、邮储、宁波银行。

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

接口说明

支持商户:【服务商】

请求方式:【POST】/v3/refund/domestic/refunds/{refund_id}/apply-abnormal-refund

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


path 路径参数

refund_id  必填 string(32)

【微信支付退款单号】申请退款受理成功时,该笔退款单在微信支付侧生成的唯一标识。申请退款成功后会返回该参数,查询退款或者退款结果通知也会返回该参数。


body 包体参数

sub_mchid  必填 string(32)

【子商户号(也叫特约商户号)】 服务商下单时传入的子商户号sub_mchid。


out_refund_no  必填 string(64)

【商户退款单号】 商户申请退款时传的商户系统内部退款单号。


type  必填 string

【异常退款处理方式】 可选:退款至用户银行卡、退款至交易商户银行账户

可选取值

  • USER_BANK_CARD: 退款到用户银行卡

  • MERCHANT_BANK_CARD: 退款至交易商户银行账户


bank_type  选填 string(16)

【开户银行】 银行类型,采用字符串类型的银行标识,值列表详见银行类型。仅支持招行、交通银行、农行、建行、工商、中行、平安、浦发、中信、光大、民生、兴业、广发、邮储、宁波银行的借记卡。
若退款至用户此字段必填。


bank_account  选填 string(1024)

【收款银行卡号】用户的银行卡账号,该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号平台证书加密敏感信息指引
若退款至用户此字段必填。


real_name  选填 string(1024)

【收款用户姓名】 收款用户姓名,该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号平台证书加密敏感信息指引
若退款至用户此字段必填。

请求示例

POST

1curl -X POST \
2  https://api.mch.weixin.qq.com/v3/refund/domestic/refunds/50000000382019052709732678859/apply-abnormal-refund \
3  -H "Authorization: WECHATPAY2-SHA256-RSA2048 mchid=\"1900000001\",..." \
4  -H "Accept: application/json" \
5  -H "Wechatpay-Serial: 5157F09EFDC096DE15EBE81A47057A7232F1B8E1"  \
6  -H "Content-Type: application/json" \
7  -d '{
8    "sub_mchid" : "1900000109",
9    "out_refund_no" : "1217752501201407033233368018",
10    "type" : "USER_BANK_CARD",
11    "bank_type" : "ICBC_DEBIT",
12    "bank_account" : "d+xT+MQCvrLHUVDWv/8MR/dB7TkXLVfSrUxMPZy6jWWYzpRrEEaYQE8ZRGYoeorwC+w==",
13    "real_name" : "UPgQcZSdq3zOayJwZ5XLrHY2dZU1W2Cd"
14  }'
15

应答参数

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)退回企业支付商户:企业支付商户


success_time  必填 string(64)

【退款成功时间】

1、定义:退款成功的时间,该字段在退款状态status为SUCCESS(退款成功)时返回。

2、格式遵循rfc3339标准格式:yyyy-MM-DDTHH:mm:ss+TIMEZONEyyyy-MM-DD 表示年月日;T 字符用于分隔日期和时间部分;HH:mm:ss 表示具体的时分秒;TIMEZONE 表示时区(例如,+08:00 对应东八区时间,即北京时间)。

示例:2015-05-20T13:29:35+08:00 表示北京时间2015年5月20日13点29分35秒。


create_time  必填 string(64)

【退款创建时间】

1、定义:提交退款申请成功,微信受理退款申请单的时间。

2、格式遵循rfc3339标准格式:yyyy-MM-DDTHH:mm:ss+TIMEZONEyyyy-MM-DD 表示年月日;T 字符用于分隔日期和时间部分;HH:mm:ss 表示具体的时分秒;TIMEZONE 表示时区(例如,+08:00 对应东八区时间,即北京时间)。

示例:2015-05-20T13:29:35+08:00 表示北京时间2015年5月20日13点29分35秒。


status  必填 string

【退款状态】退款单的退款处理状态。

  • SUCCESS: 退款成功

  • CLOSED: 退款关闭

  • PROCESSING: 退款处理中

  • ABNORMAL: 退款异常,退款到银行发现用户的卡作废或者冻结了,导致原路退款银行卡失败,可前往服务商平台-交易中心,手动处理此笔退款,可参考: 退款异常的处理,或者通过发起异常退款接口进行处理。
    注:状态流转说明请参考状态流转图


funds_account  必填 string

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

  • UNSETTLED: 未结算资金

  • AVAILABLE: 可用余额

  • UNAVAILABLE: 不可用余额

  • OPERATION: 运营账户

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

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


amount  必填 object

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

属性

promotion_detail  选填 array[object]

【优惠退款详情】 订单各个代金券的退款详情,订单使用了代金券且代金券发生退款时返回。

属性

应答示例

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}

错误码

公共错误码

状态码

错误码

描述

解决方案

400

PARAM_ERROR

参数错误

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

400

INVALID_REQUEST

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

请参阅 接口规则

401

SIGN_ERROR

验证不通过

请参阅 签名常见问题

500

SYSTEM_ERROR

系统异常,请稍后重试

请稍后重试

业务错误码

状态码

错误码

描述

解决方案

400

INVALID_REQUEST

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

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

401

SIGN_ERROR

签名错误

请检查签名参数和方法是否都符合签名算法要求,参考:如何生成签名

404

RESOURCE_NOT_EXISTS

退款单不存在

请检查退款单号是否有误

429

FREQUENCY_LIMITED

频率限制

该笔退款未受理,请降低频率后重试

500

SYSTEM_ERROR

系统超时等

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

 

反馈
咨询
目录
置顶