本文主要是Java实现支付宝一个/批量退款、查询退款结果:
/**
* 支付宝退款接口
* @author Mark
* @param out_trade_no
* 订单支付时传入的商户订单号,不能和支付宝交易号(trade_no)同时为空。
* @param trade_no
* 支付宝交易号
* @param refund_amount
* 需要退款的金额,该金额不能大于订单金额,单位为元,支持两位小数
* @return 将提示信息返回
*/
public synchronized static String alipayRefundRequest(String out_trade_no, String trade_no, double refund_amount) {
String returnStr = null;
String out_request_no = "BZ35581R88001";// 随机数 不是全额退款,部分退款使用该参数
try {
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",
PropertiesUtils.getProperty("ALIPAY_APPID"), PropertiesUtils.getProperty("ALIPAY_PRAVITEKEY"),
"json", "GBK", PropertiesUtils.getProperty("ALIPAY_PUBLICKEY"), "RSA2");
AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
request.setBizContent("{"
+ "\"out_trade_no\":\""+out_trade_no+"\","
+ "\"trade_no\":\""+trade_no+"\","
+ "\"refund_amount\":\""+refund_amount+"\","
+"\"out_request_no\":\""+out_request_no+"\","
+ "\"refund_reason\":\"正常退款\"" + " }");
AlipayTradeRefundResponse response;
response = alipayClient.execute(request);
if (response.isSuccess()) {
//System.out.println("支付宝退款成功");
returnStr="SUCCESS";
} else {
returnStr = response.getSubMsg();// 失败会返回错误信息
}
} catch (Exception e) {
e.printStackTrace();
}
return returnStr;
}
/**
* 支付宝退款查询接口
* @author Mark
* @param out_trade_no
* 订单支付时传入的商户订单号,不能和支付宝交易号(trade_no)同时为空。
* @param trade_no
* 支付宝交易号
* @param refund_amount
* 需要退款的金额,该金额不能大于订单金额,单位为元,支持两位小数
* @return 将提示信息返回
*/
public synchronized static String alipayRefundQueryRequest(String out_trade_no, String trade_no) {
String returnStr = null;
try {
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",
PropertiesUtils.getProperty("ALIPAY_APPID"), PropertiesUtils.getProperty("ALIPAY_PRAVITEKEY"),
"json", "GBK", PropertiesUtils.getProperty("ALIPAY_PUBLICKEY"), "RSA2");
AlipayTradeFastpayRefundQueryRequest request = new AlipayTradeFastpayRefundQueryRequest();
request.setBizContent("{"
+ "\"out_trade_no\":\""+out_trade_no+"\","
+ "\"trade_no\":\""+trade_no+"\","
+"\"out_request_no\":\""+out_trade_no+"\""
+ " }");
AlipayTradeFastpayRefundQueryResponse response = alipayClient.execute(request);
if (response.isSuccess()) {
returnStr="SUCCESS";
// System.out.println("退款成功");
} else {
returnStr = response.getSubMsg();// 失败会返回错误信息
}
} catch (Exception e) {
e.printStackTrace();
}
return returnStr;
}