跳转到内容
返回官网

支付宝交易退款

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

注意:

  1. 同一笔交易的退款至少间隔3s后发起

  2. 请严格按照接口文档中的参数进行接入。若在此接口中传入【非当前接口文档中的参数】会造成【退款失败或重复退款】。

  3. 该接口不可与其他退款产品混用。若商户侧同一笔退款请求已使用了当前接口退款的情况下,【再使用其他退款产品进行退款】可能会造成【重复退款】。

  4. 退款成功判断说明:接口返回fund_change=Y为退款成功,fund_change=N或无此字段值返回时需通过退款查询接口进一步确认退款状态。

一、请求地址

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

二、请求参数

参数名类型说明示例
appidString合作伙伴Id
timestampString时间戳请求时的时间,unixtime格式
trade_noString支付宝交易号支付宝交易号,和商户订单号不能同时为空
out_trade_noString商户订单号。 订单支付时传入的商户订单号,商家自定义且保证商家系统中唯一。与支付宝交易号 trade_no 不能同时为空。
refund_amountInt
退款金额。
需要退款的金额,该金额不能大于订单金额,单位为分
100
out_request_noString
退款请求号。
标识一次退款请求,需要保证在交易号下唯一,如需部分退款,则此参数必传。
注:针对同一次退款请求,如果调用接口失败或异常了,重试时需要保证退款请求号不能变更,防止该笔交易重复退款。支付宝会保证同样的退款请求号多次请求只会退一次。
refund_reasonString退款原因说明。 商家自定义,将在会在商户和用户的pc退款账单详情中展示
signString签名对各参数使用提供的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_noString必选64支付宝交易号
out_trade_noString必选64商家订单号
buyer_logon_idString必选100买家支付宝账号
buyer_user_idString特殊可选买家在支付宝的用户id
fund_changeString必选
refund_feeString必选11退款总金额。单位:分。 指该笔交易累计已经退款成功的金额。
store_nameString特殊可选11交易在支付时候的门店名称
refund_detail_item_listrefund_detail_item_list[]可选退款使用的资金渠道。
—– fund_channelString必选交易使用的资金渠道
—– amountString必选该支付工具类型所使用的金额。单位:分。