diff --git a/pay-java-ali/src/main/java/in/egan/pay/ali/before/api/AliPayService.java b/pay-java-ali/src/main/java/in/egan/pay/ali/before/api/AliPayService.java index 55f6f8c..390fa59 100644 --- a/pay-java-ali/src/main/java/in/egan/pay/ali/before/api/AliPayService.java +++ b/pay-java-ali/src/main/java/in/egan/pay/ali/before/api/AliPayService.java @@ -315,9 +315,9 @@ public class AliPayService extends BasePayService { } @Override - public Map refund(String tradeNo, String outTradeNo) { + public Map refund(String tradeNo, String outTradeNo, BigDecimal refundAmount, BigDecimal totalAmount) { - return refund(tradeNo, outTradeNo, new Callback>() { + return refund(tradeNo, outTradeNo, refundAmount, totalAmount, new Callback>() { @Override public Map perform(Map map) { return map; @@ -326,10 +326,18 @@ public class AliPayService extends BasePayService { } @Override - public T refund(String tradeNo, String outTradeNo, Callback callback) { - return secondaryInterface(tradeNo, outTradeNo, AliTransactionType.REFUND, callback); - } + public T refund(String tradeNo, String outTradeNo, BigDecimal refundAmount, BigDecimal totalAmount, Callback callback) { + //获取公共参数 + Map parameters = getPublicParameters(AliTransactionType.REFUND); + Map bizContent = getBizContent(tradeNo, outTradeNo, null); + bizContent.put("refund_amount", refundAmount); + //设置请求参数的集合 + parameters.put("biz_content", JSON.toJSONString(bizContent)); + //设置签名 + setSign(parameters); + return callback.perform(requestTemplate.getForObject(queryReqUrl + "?" + ClientHttpRequest.getMapToParameters(parameters), JSONObject.class)); + } @Override public Map refundquery(String tradeNo, String outTradeNo) { return refundquery(tradeNo, outTradeNo, new Callback>() { @@ -421,6 +429,27 @@ public class AliPayService extends BasePayService { } + + /** + * 获取biz_content。请求参数的集合 不包含下载账单 + * @param tradeNo 支付平台订单号 + * @param outTradeNo 商户单号 + * @param bizContent 请求参数的集合 + * @return + */ + private Map getBizContent(String tradeNo, String outTradeNo, Map bizContent){ + if (null == bizContent){ + bizContent = new TreeMap<>(); + } + if (null != outTradeNo){ + bizContent.put("out_trade_no", outTradeNo); + } + if (null != tradeNo){ + bizContent.put("trade_no", tradeNo); + } + return bizContent; + } + /** * 获取biz_content。不包含下载账单 * @param tradeNo 支付平台订单号 @@ -428,14 +457,8 @@ public class AliPayService extends BasePayService { * @return */ private String getContentToJson(String tradeNo, String outTradeNo){ - Map bizContent = new TreeMap<>(); - if (null != outTradeNo){ - bizContent.put("out_trade_no", outTradeNo); - } - if (null != tradeNo){ - bizContent.put("trade_no", tradeNo); - } - return JSON.toJSONString(bizContent); + + return JSON.toJSONString(getBizContent(tradeNo, outTradeNo, null)); } }