支付宝统一收单交易退款接口

当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退还给买家,支付宝将在收到退款请求并且验证成功之后,按照退款规则将支付款按原路退到买家帐号上。
交易超过约定时间(签约时设置的可退款时间)的订单无法进行退款。
支付宝退款支持单笔交易分多次退款,多次退款需要提交原支付订单的订单号和设置不同的退款请求号。一笔退款失败后重新提交,要保证重试时退款请求号不能变更,防止该笔交易重复退款。
同一笔交易累计提交的退款金额不能超过原始交易总金额。

注意:

  1. 同一笔交易的退款至少间隔3s后发起
  2. 请严格按照接口文档中的参数进行接入。若在此接口中传入【非当前接口文档中的参数】会造成【退款失败或重复退款】。
  3. 该接口不可与其他退款产品混用。若商户侧同一笔退款请求已使用了当前接口退款的情况下,【再使用其他退款产品进行退款】可能会造成【重复退款】。
  4. 退款成功判断说明:接口返回fund_change=Y为退款成功,fund_change=N或无此字段值返回时需通过退款查询接口进一步确认退款状态。

二、请求地址:

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

请求参数

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

请求示例

   @Test  
public void PayAlipayPersonalTradeQuery() throws Exception {  
    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("trade_no","2023090622001464271436832807" );  
    data.put("sign", Utils.Sign(data, Config.AppSecret   ));  
    String result = doHttpRequest(Config.PayAlipayPersonalTradeQueryUrl,data);  
    System.out.println(result);   
}

三、接口返回结果:

 {
    "code": 0,
    "message": "ok",
    "data": {
        "trade_no": "2023090622001464271436832807",
        "out_trade_no": "20230906115624999565",
        "buyer_logon_id": "sup***@163.com",
        "buyer_user_id": "2088002269364279",
        "fund_change": "Y",
        "refund_fee": "909",
        "store_name": "",
        "refund_detail_item_list": [
            {
                "fund_channel": "ALIPAYACCOUNT",
                "amount": "3"
            }
        ]
    },
    "trace_id": ""
}

四、返回参数说明

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

参数 类型 是否必选 最大长度 描述
trade_no String 必选 64 支付宝交易号
out_trade_no String 必选 64 商家订单号
buyer_logon_id String 必选 100 买家支付宝账号
buyer_user_id String 特殊可选 买家在支付宝的用户id
fund_change String 必选
refund_fee String 必选 11 退款总金额。单位:分。 指该笔交易累计已经退款成功的金额。
store_name String 特殊可选 11 交易在支付时候的门店名称
refund_detail_item_list refund_detail_item_list[] 可选 退款使用的资金渠道。
—– fund_channel String 必选 交易使用的资金渠道
—– amount String 必选 该支付工具类型所使用的金额。单位:分。
文档更新时间: 2023-09-07 18:14   作者:admin