用于订单支付后向用户发起退款。 支持部分退款(视为业务成功)。 指定退款来源账号可以增大退款处理成功的几率,特别是对于资金已经结算给机构的订单,要成功退款必须指定合法的退款来源账号。
环境 | HTTPS请求地址 |
---|---|
正式环境 | https://openapi.alipay.com/gateway.do |
参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 |
---|---|---|---|---|---|
app_id | String | 是 | 32 | 支付宝分配给开发者的应用ID | 2014072300007148 |
method | String | 是 | 128 | 接口名称 | alipay.ebpp.bill.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 | 是 | 256 | 商户请求参数的签名串,详见签名 | 详见示例 |
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_order_no | String | 必须 | 32 | ISV流水号,用于控制幂等,须确保全局唯一(缴税业务:可采用{征收机关代码}-{外部申报号}的形式)
out_order_no与alipay_bill_no二者中至少要传一个 |
13201020000-320170608005900006 |
alipay_bill_no | String | 特殊可选 | 32 | 支付宝流水号。 | 2017081100003001350000013884 |
refund_amount | Price | 必须 | 10 | 退款金额,单位:元
不可超过创单时的金额。 如果scene是TOTAL_FAILURE,则强制要求全额退款,不支持部分退款。 |
30.50 |
scene | String | 必须 | 40 | 退款场景,不同场景由不同策略处理。
OVERPAYMENT:退掉用户多支付的金额 PARTIALLY_DONE:业务上部分失败导致退款 TOTAL_FAILURE:完全失败导致的退款 |
PARTIALLY_DONE |
refund_from | String | 可选 | 32 | 退款来源账户。
仅在退款请求对应的业务流水资金已经结算的情况下有用,不指定则不能对已结算业务流水发起退款。 取值可以给定受管控账户2088****************,需要事先在支付宝备案通过方可使用;亦可以填入THIS_ACCOUNT,表示会从当前调用者的账户退款给用户。 |
20881030507841230156 |
memo | String | 必须 | 30 | 退款备注 | memo |
extend_field | String | 可选 | 3000 | 扩展字段,json格式的一系列键值对,示例只是个形式,具体的Key-Value需要根据具体业务另行约定。
无特别约定时,此字段不必传。 |
{"Key1": "Value1", "Key2": "Value2"} |
参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 |
---|---|---|---|---|---|
code | String | 是 | - | 网关返回码,详见文档 | 40004 |
msg | String | 是 | - | 网关返回码描述,详见文档 | Business Failed |
sub_code | String | 否 | - | 业务返回码,详见文档 | ACQ.TRADE_HAS_SUCCESS |
sub_msg | String | 否 | - | 业务返回码描述,详见文档 | 交易已被支付 |
sign | String | 是 | - | 签名,详见文档 | DZXh8eeTuAHoYE3w1J+POiPhfDxOYBfUNn1lkeT/V7P4zJdyojWEa6IZs6Hz0yDW5Cp/viufUb5I0/V5WENS3OYR8zRedqo6D+fUTdLHdc+EFyCkiQhBxIzgngPdPdfp1PIS7BdhhzrsZHbRqb7o4k3Dxc+AAnFauu4V6Zdwczo= |
参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 |
---|---|---|---|---|---|
out_order_no | String | 必填 | 32 | 回传ISV流水号 | 13201020000-320170608005900006 |
alipay_bill_no | String | 必填 | 32 | 回传支付宝流水号。 | 2017081100003001350000013884 |
result | String | 必填 | 10 |
ACCEPTED:退款请求被接受
REJECTED:退款请求被驳回 本接口的业务逻辑具备幂等性,一旦拿到确定的结果ACCEPTED/REJECTED,再重试是没有意义的。 |
REJECTED |
extend_field | String | 选填 | 3000 | 扩展字段,一系列键值对,示例只是个形式,具体的Key-Value需要根据具体业务另行约定。 | {"Key1":"Value1", "Key2":"Value2"} |
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2"); AlipayEbppBillRefundRequest request = new AlipayEbppBillRefundRequest(); request.setBizContent("{" + "\"out_order_no\":\"13201020000-320170608005900006\"," + "\"alipay_bill_no\":\"2017081100003001350000013884\"," + "\"refund_amount\":30.50," + "\"scene\":\"PARTIALLY_DONE\"," + "\"refund_from\":\"20881030507841230156\"," + "\"memo\":\"memo\"," + "\"extend_field\":\"{\\\"Key1\\\":\\\"Value1\\\",\\\"Key2\\\":\\\"Value2\\\"}\"" + "}"); AlipayEbppBillRefundResponse response = alipayClient.execute(request); if(response.isSuccess()){ System.out.println("调用成功"); } else { System.out.println("调用失败"); }
{ "alipay_ebpp_bill_refund_response":{ "msg":"Success", "result":"REJECTED", "code":"10000", "out_order_no":"13201020000-320170608005900006", "extend_field":"{\"Key1\":\"Value1\", \"Key2\":\"Value2\"}", "alipay_bill_no":"2017081100003001350000013884" }, "sign":"ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE" }
{ "alipay_ebpp_bill_refund_response":{ "msg":"Service Currently Unavailable", "code":"20000", "sub_msg":"系统繁忙", "sub_code":"isp.unknow-error" }, "sign":"ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE" }
错误码 | 错误描述 | 解决方案 |
---|---|---|
INVALID_PARAMETER | 参数有误参数有误参数有误入参不符合要求 | 请确保入参格式、内容符合接口文档描述中的要求 |
BIZ_ERROR | 业务异常撤销受理单据失败 | 请确保请求中的参数具备业务上的合理性,从而能够被成功处理 |
SYSTEM_ERROR | 系统繁忙 | 请稍后重试 |
INVALID_PARAMETER | 参数有误 | 请确保入参格式、内容符合接口文档描述中的要求 |
BIZ_ERROR | 业务异常 | 请确保请求中的参数具备业务上的合理性,从而能够被成功处理 |
INVALID_PARAMETER | 参数有误机构权限未开通 | 请确认是否有权限访问此机构的单据 |