支付宝统一收单交易退款接口
当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退还给买家,支付宝将在收到退款请求并且验证成功之后,按照退款规则将支付款按原路退到买家帐号上。
交易超过约定时间(签约时设置的可退款时间)的订单无法进行退款。
支付宝退款支持单笔交易分多次退款,多次退款需要提交原支付订单的订单号和设置不同的退款请求号。一笔退款失败后重新提交,要保证重试时退款请求号不能变更,防止该笔交易重复退款。
同一笔交易累计提交的退款金额不能超过原始交易总金额。
注意:
- 同一笔交易的退款至少间隔3s后发起
- 请严格按照接口文档中的参数进行接入。若在此接口中传入【非当前接口文档中的参数】会造成【退款失败或重复退款】。
- 该接口不可与其他退款产品混用。若商户侧同一笔退款请求已使用了当前接口退款的情况下,【再使用其他退款产品进行退款】可能会造成【重复退款】。
- 退款成功判断说明:接口返回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