alipay.fund.trans.refund(资金退回接口) 在线调试(沙箱环境)

当资金支付一段时间后,由于收款方一直没有收钱(比如抢红包),可以通过退款接口将资金退换给付款方。支付宝将会按照退款规则将支付款按原路退到付款方帐号上。 交易超过约定时间(签约时设置的可退款时间)的订单无法进行退款。支付宝退款支持单笔交易分多次退回,多次退款需要提交原支付订单的商户订单号和设置不同的退款单号。一笔退款失败后重新提交,要采用原来的退款单号。总退款金额不能超过(用户实际支付金额-已领红包)的金额。

公共参数

请求地址

环境HTTPS请求地址
正式环境 https://openapi.alipay.com/gateway.do

公共请求参数

参数 类型 是否必填最大长度描述示例值
app_id String 32 支付宝分配给开发者的应用ID 2014072300007148
method String 128 接口名称 alipay.fund.trans.refund
format String 40 仅支持JSON JSON
charset String 10 请求使用的编码格式,如utf-8,gbk,gb2312等 utf-8
sign_type String 10 商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2 RSA2
sign String 344 商户请求参数的签名串,详见签名 详见示例
timestamp String 19 发送请求的时间,格式"yyyy-MM-dd HH:mm:ss" 2014-07-24 03:07:50
version String 3 调用的接口版本,固定为:1.0 1.0
app_auth_token String 40 详见应用授权概述
biz_content String 请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递,具体参照各产品快速接入文档

请求参数

参数 类型 是否必填 最大长度 描述 示例值
order_id String 必选 64 发红包时支付宝返回的支付宝订单号order_id。 20190703110075000006530004756875
out_request_no String 必选 64 标识一次资金退回请求,一笔资金退回失败后重新提交,要采用原来的资金退回单号。总退款金额不能超过用户实际支付金额。 2018999960760005838333
refund_amount Price 必选 16 需要退款的金额,该金额不能大于订单金额,单位为元,支持两位小数 8.88
remark String 可选 200 资金退回备注 红包超时退回

响应参数

参数 类型 是否必填 最大长度 描述 示例值
refund_order_id String 必填 64 退款的支付宝系统内部单据id 2088000000300210312
order_id String 必填 64 发红包时支付宝返回的支付宝订单号order_id。 20881030507841230156
out_request_no String 必填 64 标识一次资金退回请求,一笔资金退回失败后重新提交,要采用原来的资金退回单号。总退款金额不能超过用户实际支付金额。 2019063050784123
status String 必填 64 SUCCESS:退款成功 SUCCESS
refund_amount String 必填 16 本次退款的金额,单位为元,支持两位小数 8.88
refund_date String 必填 20 退款资金退回 2019-01-01 08:08:08

请求示例

AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");
AlipayFundTransRefundRequest request = new AlipayFundTransRefundRequest();
request.setBizContent("{" +
"\"order_id\":\"20190703110075000006530004756875\"," +
"\"out_request_no\":\"2018999960760005838333\"," +
"\"refund_amount\":8.88," +
"\"remark\":\"红包超时退回\"" +
"  }");
AlipayFundTransRefundResponse response = alipayClient.execute(request);
if(response.isSuccess()){
System.out.println("调用成功");
} else {
System.out.println("调用失败");
}

响应示例

{
    "alipay_fund_trans_refund_response": {
        "code": "10000",
        "msg": "Success",
        "refund_order_id": "2088000000300210312",
        "order_id": "20881030507841230156",
        "out_request_no": "2019063050784123",
        "status": "SUCCESS",
        "refund_amount": "8.88",
        "refund_date": "2019-01-01 08:08:08"
    },
    "sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}

异常示例

{
    "alipay_fund_trans_refund_response": {
        "code": "20000",
        "msg": "Service Currently Unavailable",
        "sub_code": "isp.unknow-error",
        "sub_msg": "系统繁忙"
    },
    "sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}

业务错误码

公共错误码

错误码错误描述解决方案
INVALID_PARAMETER 参数有误参数有误 参数异常
SYSTEM_ERROR 系统繁忙 可能发生了网络或者系统异常,导致无法判定准确的转账结果。此时,商户不能直接当做退款成功或者失败处理,可以考虑采用相同的out_biz_no重发请求,或者通过调用“(alipay.fund.trans.order.query)”来查询该笔转账订单的最终状态。
NO_ORDER_PERMISSION 不是当前商户的资金单据 不是当前商户的资金单据,该商户无退款权限
PRODUCT_NOT_ALLOW_REFUND 该产品不允许退款 该产品不允许退款
ORDER_STATUS_ERROR 业务单据状态异常 业务单据状态异常
REFUND_MONEY_NOT_ENOUGH 可用金额为0或不足 资金池可用金额为0或退款金额超过资金池里可使用的金额
REFUND_INFO_INCONSISTENCY 不一致的请求 检查该退款号是否已退过款或更换退款号重新发起请求
ORDER_NOT_EXIST 退款单据不存在 退款单据不存在,请商户确认传入的退款订单号是否正确
ORDER_STATUS_INVALID 原始单据状态异常,不可操作 原始单据状态异常,不可操作,请查看原支付单的状态是否为正常状态
onlineServer