微信交易退款接口

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

    1. 交易时间超过一年的订单无法提交退款(按支付成功时间+365天计算)。
    2. 微信支付退款支持单笔交易分多次退款,多次退款需要提交原支付订单的商户订单号和设置不同的退款单号。申请退款总金额不能超过订单金额。 一笔退款失败后重新提交,请不要更换退款单号,请使用原商户退款单号。
    3. 请求频率限制:150qps,即每秒钟正常的申请退款请求次数不超过150次,单笔订单请求频率限制:1qpm,即单笔订单每分钟申请退款请求次数不超过1次。
    4. 每个支付订单的部分退款次数不能超过50次。

二、请求地址:

https://kf.fw199.com/gateway/partner/pay/wx/personal/refund

请求参数

参数名 类型 必填 说明 示例
appid String 必填 合作伙伴Id
timestamp String 必填 时间戳 请求时的时间,unixtime格式
tppay_trade_no String 2选1 微信交易号,支付成功回调时返回的tppay_trade_no。 微信交易号,和蜂巢交易号不能同时为空
quickpay_trade_no String 2选1 蜂巢交易号,支付成功回调时返回的quickpay_trade_no。 微信交易号,和蜂巢交易号不能同时为空
refund_amount Int 必填
退款金额。
需要退款的金额,该金额不能大于订单金额,单位为分
100
out_request_no String 必填
退款请求号。
标识一次退款请求,需要保证在交易号下唯一,如需部分退款,则此参数必传。
注:针对同一次退款请求,如果调用接口失败或异常了,重试时需要保证退款请求号不能变更,防止该笔交易重复退款。微信保证同样的退款请求号多次请求只会退一次。
refund_reason String 必填 退款原因说明。 商家自定义,将在会在商户和用户的pc退款账单详情中展示
sign String 必填 签名 对各参数使用提供的AppSecret进行签名,签名逻辑具体实现见示例代码

请求示例

 @Test
    public void WxSFTRefundPayTrade() throws Exception {
        String tppay_trade_no = "4200003208202606160490456846";
        String outRefundNo = "20260618-001";
        String refund_amount = "10"; //单位是分
        String refundReason = "双方达成一致";
        Map<String, String> data = new HashMap<String, String>();
        data.put("appid",  Config.AppId);
        Long timestamp = System.currentTimeMillis() / 1000;
        data.put("timestamp", timestamp.toString());
        data.put("tppay_trade_no",tppay_trade_no );
        data.put("out_request_no",outRefundNo );
        data.put("refund_reason",refundReason );
        data.put("refund_amount",refund_amount );
        data.put("sign", Utils.Sign(data, Config.AppSecret));
        String result = doHttpRequest(Config.WXPersonalRefundTradeUrl, data);
        System.out.println(result);

}

三、接口返回结果:

{
  "code": 0,
  "message": "ok",
  "data": {
    "refund_id": "50300607562026061842394414906",
    "out_refund_no": "20260618-001",
    "create_time": "2026-06-18T14:04:20+08:00",
    "amount": {
      "refund": 10,
      "payer_refund": 10,
      "currency": "CNY"
    },
    "refund_account": "REFUND_SOURCE_SUB_MERCHANT"
  },
  "trace_id": "4da9e8fa-44ee-497e-920c-39302fc3e333"
}

四、返回参数说明

返回字段中code为0表示成功,非0失败,失败的话message会有失败原因。成功的往左,会有以下字段。

参数 类型 是否必选 描述
refund_id String 必选 微信支付退款订单号
out_refund_no String 必选 商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母,同一退款单号多次请求只退一笔。
create_time String 必填 退款受理时间,遵循rfc3339标准格式,格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE
amount 可选 退款使用的资金渠道。
—– refund integer 必选 退款金额,单位为分,只能为整数,不能超 过原订单支付金额
—– payer_refund integer 必选 退款给用户的金额,不包含所有优惠券金额
—– currency String 选填 符合ISO4217标准的三位字母代码,目前只支持人民币:CNY
文档更新时间: 2026-06-18 14:34   作者:admin