alipay.trade.refund(统一收单交易退款接口)

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

公共参数

请求地址

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

公共请求参数

参数 类型 是否必填最大长度描述示例值
app_id String 32 支付宝分配给开发者的应用ID 2014072300007148
method String 128 接口名称 alipay.trade.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 请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递,具体参照各产品快速接入文档

请求参数

参数 类型 是否必填 最大长度 描述 示例值
out_trade_no String 特殊可选 64 订单支付时传入的商户订单号,不能和 trade_no同时为空。 20150320010101001
trade_no String 特殊可选 64 支付宝交易号,和商户订单号不能同时为空 2014112611001004680073956707
refund_amount Price 必选 9 需要退款的金额,该金额不能大于订单金额,单位为元,支持两位小数 200.12
refund_currency String 可选 8 订单退款币种信息 USD
refund_reason String 可选 256 退款的原因说明 正常退款
out_request_no String 可选 64 标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传。 HZ01RF001
operator_id String 可选 30 商户的操作员编号 OP001
store_id String 可选 32 商户的门店编号 NJ_S_001
terminal_id String 可选 32 商户的终端编号 NJ_T_001
goods_detail GoodsDetail[] 可选 退款包含的商品列表信息,Json格式。
其它说明详见:“商品明细说明”
goods_id String 必填 32 商品的编号 apple-01
alipay_goods_id String 可选 32 支付宝定义的统一商品编号 20010001
goods_name String 必填 256 商品名称 ipad
quantity Number 必填 10 商品数量 1
price Price 必填 9 商品单价,单位为元 2000
goods_category String 可选 24 商品类目 34543238
categories_tree String 可选 128 商品类目树,从商品类目根节点到叶子节点的类目id组成,类目id值使用|分割 124868003|126232002|126252004
body String 可选 1000 商品描述信息 特价手机
show_url String 可选 400 商品的展示地址 http://www.alipay.com/xxx.jpg
refund_royalty_parameters OpenApiRoyaltyDetailInfoPojo[] 可选 退分账明细信息
royalty_type String 可选 32 分账类型.
普通分账为:transfer;
补差为:replenish;
为空默认为分账transfer;
transfer
trans_out String 可选 16 支出方账户。如果支出方账户类型为userId,本参数为支出方的支付宝账号对应的支付宝唯一用户号,以2088开头的纯16位数字;如果支出方类型为loginName,本参数为支出方的支付宝登录号; 2088101126765726
trans_out_type String 可选 64 支出方账户类型。userId表示是支付宝账号对应的支付宝唯一用户号;loginName表示是支付宝登录号; userId
trans_in_type String 可选 64 收入方账户类型。userId表示是支付宝账号对应的支付宝唯一用户号;cardSerialNo表示是卡编号;loginName表示是支付宝登录号; userId
trans_in String 可选 16 收入方账户。如果收入方账户类型为userId,本参数为收入方的支付宝账号对应的支付宝唯一用户号,以2088开头的纯16位数字;如果收入方类型为cardSerialNo,本参数为收入方在支付宝绑定的卡编号;如果收入方类型为loginName,本参数为收入方的支付宝登录号; 2088101126708402
amount Number 可选 9 分账的金额,单位为元 0.1
amount_percentage Number 可选 3 分账信息中分账百分比。取值范围为大于0,少于或等于100的整数。 100
desc String 可选 1000 分账描述 分账给2088101126708402
org_pid String 可选 16 银行间联模式下有用,其它场景请不要使用;
双联通过该参数指定需要退款的交易所属收单机构的pid;
2088101117952222

响应参数

参数 类型 是否必填 最大长度 描述 示例值
trade_no String 必填 64 2013112011001004330000121536 支付宝交易号
out_trade_no String 必填 64 商户订单号 6823789339978248
buyer_logon_id String 必填 100 用户的登录id 159****5620
fund_change String 必填 1 本次退款是否发生了资金变化 Y
refund_fee Price 必填 11 退款总金额 88.88
refund_currency String 选填 8 退款币种信息 USD
gmt_refund_pay Date 必填 32 退款支付时间 2014-11-27 15:45:57
refund_detail_item_list TradeFundBill 选填 退款使用的资金渠道
fund_channel String 必填 32 交易使用的资金渠道,详见 支付渠道列表 ALIPAYACCOUNT
amount Price 必填 32 该支付工具类型所使用的金额 10
real_amount Price 可选 11 渠道实际付款金额 11.21
fund_type String 可选 32 渠道所使用的资金类型,目前只在资金渠道(fund_channel)是银行卡渠道(BANKCARD)的情况下才返回该信息(DEBIT_CARD:借记卡,CREDIT_CARD:信用卡,MIXED_CARD:借贷合一卡) DEBIT_CARD
store_name String 选填 512 交易在支付时候的门店名称 望湘园联洋店
buyer_user_id String 必填 28 买家在支付宝的用户id 2088101117955611
refund_preset_paytool_list PresetPayToolInfo 选填 退回的前置资产列表
amount Price[] 必填 32 前置资产金额 12.21
assert_type_code String 必填 32 前置资产类型编码,和收单支付传入的preset_pay_tool里面的类型编码保持一致。 盒马礼品卡:HEMA;抓猫猫红包:T_CAT_COUPON
refund_charge_amount String 选填 11 本次退款针对收款方的退收费金额;
默认不返回该信息,需与支付宝约定后配置返回;
8.88
refund_settlement_id String 选填 64 退款清算编号,用于清算对账使用;
只在银行间联交易场景下返回该信息;
2018101610032004620239146945
present_refund_buyer_amount String 选填 11 本次退款金额中买家退款金额 88.88
present_refund_discount_amount String 选填 11 本次退款金额中平台优惠退款金额 88.88
present_refund_mdiscount_amount String 选填 11 本次退款金额中商家优惠退款金额 88.88

请求示例

AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");
AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
request.setBizContent("{" +
"\"out_trade_no\":\"20150320010101001\"," +
"\"trade_no\":\"2014112611001004680073956707\"," +
"\"refund_amount\":200.12," +
"\"refund_currency\":\"USD\"," +
"\"refund_reason\":\"正常退款\"," +
"\"out_request_no\":\"HZ01RF001\"," +
"\"operator_id\":\"OP001\"," +
"\"store_id\":\"NJ_S_001\"," +
"\"terminal_id\":\"NJ_T_001\"," +
"      \"goods_detail\":[{" +
"        \"goods_id\":\"apple-01\"," +
"\"alipay_goods_id\":\"20010001\"," +
"\"goods_name\":\"ipad\"," +
"\"quantity\":1," +
"\"price\":2000," +
"\"goods_category\":\"34543238\"," +
"\"categories_tree\":\"124868003|126232002|126252004\"," +
"\"body\":\"特价手机\"," +
"\"show_url\":\"http://www.alipay.com/xxx.jpg\"" +
"        }]," +
"      \"refund_royalty_parameters\":[{" +
"        \"royalty_type\":\"transfer\"," +
"\"trans_out\":\"2088101126765726\"," +
"\"trans_out_type\":\"userId\"," +
"\"trans_in_type\":\"userId\"," +
"\"trans_in\":\"2088101126708402\"," +
"\"amount\":0.1," +
"\"amount_percentage\":100," +
"\"desc\":\"分账给2088101126708402\"" +
"        }]," +
"\"org_pid\":\"2088101117952222\"" +
"  }");
AlipayTradeRefundResponse response = alipayClient.execute(request);
if(response.isSuccess()){
System.out.println("调用成功");
} else {
System.out.println("调用失败");
}

响应示例

{
    "alipay_trade_refund_response": {
        "code": "10000",
        "msg": "Success",
        "trade_no": "支付宝交易号",
        "out_trade_no": "6823789339978248",
        "buyer_logon_id": "159****5620",
        "fund_change": "Y",
        "refund_fee": 88.88,
        "refund_currency": "USD",
        "gmt_refund_pay": "2014-11-27 15:45:57",
        "refund_detail_item_list": [
            {
                "fund_channel": "ALIPAYACCOUNT",
                "amount": 10,
                "real_amount": 11.21,
                "fund_type": "DEBIT_CARD"
            }
        ],
        "store_name": "望湘园联洋店",
        "buyer_user_id": "2088101117955611",
        "refund_preset_paytool_list": {
            "amount": [
                12.21
            ],
            "assert_type_code": "盒马礼品卡:HEMA;抓猫猫红包:T_CAT_COUPON"
        },
        "refund_charge_amount": "8.88",
        "refund_settlement_id": "2018101610032004620239146945",
        "present_refund_buyer_amount": "88.88",
        "present_refund_discount_amount": "88.88",
        "present_refund_mdiscount_amount": "88.88"
    },
    "sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}

异常示例

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

业务错误码

公共错误码

错误码错误描述解决方案
ACQ.SYSTEM_ERROR 系统错误 请使用相同的参数再次调用
ACQ.INVALID_PARAMETER 参数无效 请求参数有错,重新检查请求后,再调用退款
ACQ.SELLER_BALANCE_NOT_ENOUGH 卖家余额不足 商户支付宝账户充值后重新发起退款即可
ACQ.REFUND_AMT_NOT_EQUAL_TOTAL 退款金额超限 检查退款金额是否正确,重新修改请求后,重新发起退款
ACQ.REASON_TRADE_BEEN_FREEZEN 请求退款的交易被冻结 联系支付宝小二,确认该笔交易的具体情况
ACQ.TRADE_NOT_EXIST 交易不存在 检查请求中的交易号和商户订单号是否正确,确认后重新发起
ACQ.TRADE_HAS_FINISHED 交易已完结 该交易已完结,不允许进行退款,确认请求的退款的交易信息是否正确
ACQ.TRADE_STATUS_ERROR 交易状态非法 查询交易,确认交易是否已经付款
ACQ.DISCORDANT_REPEAT_REQUEST 不一致的请求 检查该退款号是否已退过款或更换退款号重新发起请求
ACQ.REASON_TRADE_REFUND_FEE_ERR 退款金额无效 检查退款请求的金额是否正确
ACQ.TRADE_NOT_ALLOW_REFUND 当前交易不允许退款 检查当前交易的状态是否为交易成功状态以及签约的退款属性是否允许退款,确认后,重新发起请求
ACQ.REFUND_FEE_ERROR 交易退款金额有误 请检查传入的退款金额是否正确
onlineServer