您的位置:首页 > 其它

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

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

公共参数

请求地址

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

公共请求参数

参数类型是否必填最大长度描述示例值
app_idString32支付宝分配给开发者的应用ID2014072300007148
methodString128接口名称alipay.trade.refund
formatString40仅支持JSONJSON
charsetString10请求使用的编码格式,如utf-8,gbk,gb2312等utf-8
sign_typeString10商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2RSA2
signString344商户请求参数的签名串,详见签名详见示例
timestampString19发送请求的时间,格式"yyyy-MM-dd HH:mm:ss"2014-07-24 03:07:50
versionString3调用的接口版本,固定为:1.01.0
app_auth_tokenString40详见应用授权概述 
biz_contentString 请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递,具体参照各产品快速接入文档 

请求参数

参数类型是否必填最大长度描述示例值
out_trade_noString特殊可选64订单支付时传入的商户订单号,不能和 trade_no同时为空。20150320010101001
trade_noString特殊可选64支付宝交易号,和商户订单号不能同时为空2014112611001004680073956707
refund_amountPrice必选9需要退款的金额,该金额不能大于订单金额,单位为元,支持两位小数200.12
refund_reasonString可选256退款的原因说明正常退款
out_request_noString可选64标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传。HZ01RF001
operator_idString可选30商户的操作员编号OP001
store_idString可选32商户的门店编号NJ_S_001
terminal_idString可选32商户的终端编号NJ_T_001
 goods_detailGoodsDetail[]可选 退款包含的商品列表信息,Json格式。 
其它说明详见:“商品明细说明”
 

公共响应参数

参数类型是否必填最大长度描述示例值
codeString-网关返回码,详见文档40004
msgString-网关返回码描述,详见文档Business Failed
sub_codeString-业务返回码,参见具体的API接口文档ACQ.TRADE_HAS_SUCCESS
sub_msgString-业务返回码描述,参见具体的API接口文档交易已被支付
signString-签名,详见文档DZXh8eeTuAHoYE3w1J+POiPhfDxOYBfUNn1lkeT/V7P4zJdyojWEa6IZs6Hz0yDW5Cp/viufUb5I0/V5WENS3OYR8zRedqo6D+fUTdLHdc+EFyCkiQhBxIzgngPdPdfp1PIS7BdhhzrsZHbRqb7o4k3Dxc+AAnFauu4V6Zdwczo=

响应参数

参数类型是否必填最大长度描述示例值
trade_noString必填642013112011001004330000121536支付宝交易号
out_trade_noString必填64商户订单号6823789339978248
buyer_logon_idString必填100用户的登录id159****5620
fund_changeString必填1本次退款是否发生了资金变化Y
refund_feePrice必填11退款总金额88.88
gmt_refund_payDate必填32退款支付时间2014-11-27 15:45:57
refund_detail_item_listTradeFundBill选填 退款使用的资金渠道 
store_nameString选填512交易在支付时候的门店名称望湘园联洋店
buyer_user_idString必填28买家在支付宝的用户id2088101117955611
present_refund_buyer_amountString选填11本次退款金额中买家退款金额88.88
present_refund_discount_amountString选填11本次退款金额中平台优惠退款金额88.88
present_refund_mdiscount_amountString选填11本次退款金额中商家优惠退款金额88.88

请求示例

JAVA 
.NET 
PHP 
HTTP请求源码
$aop = new AopClient ();
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->appId = 'your app_id';
$aop->rsaPrivateKey = '请填写开发者私钥去头去尾去回车,一行字符串';
$aop->alipayrsaPublicKey='请填写支付宝公钥,一行字符串';
$aop->apiVersion = '1.0';
$aop->signType = 'RSA2';
$aop->postCharset='GBK';
$aop->format='json';
$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\"," .
"\"body\":\"特价手机\"," .
"\"show_url\":\"http://www.alipay.com/xxx.jpg\"" .
"        }]" .
"  }");
$result = $aop->execute ( $request);

$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$resultCode = $result->$responseNode->code;
if(!empty($resultCode)&&$resultCode == 10000){
echo "成功";
} else {
echo "失败";
}

响应示例

JSON 示例 
XML 示例
{
"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,
"gmt_refund_pay": "2014-11-27 15:45:57",
"refund_detail_item_list": [
{
"fund_channel": "ALIPAYACCOUNT",
"bank_code": "CEB",
"amount": 10,
"real_amount": 11.21,
"fund_type": "DEBIT_CARD"
}
],
"store_name": "望湘园联洋店",
"buyer_user_id": "2088101117955611",
"present_refund_buyer_amount": "88.88",
"present_refund_discount_amount": "88.88",
"present_refund_mdiscount_amount": "88.88"
},
"sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}

异常示例

JSON 示例
{
"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当前交易不允许退款检查当前交易的状态是否为交易成功状态以及签约的退款属性是否允许退款,确认后,重新发起请求
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: