记得上下班打卡 | git大法好,push需谨慎

Commit fd338d8d authored by zhoujianping's avatar zhoujianping

1.支付宝小程序退款接口增加回调地址修改

parent a35c62ab
...@@ -101,7 +101,12 @@ public class PayChannelStrategyAlipayImpl extends AbstractPayChannelStrategyImpl ...@@ -101,7 +101,12 @@ public class PayChannelStrategyAlipayImpl extends AbstractPayChannelStrategyImpl
//退款 //退款
if(notifyMap.containsKey("refund_fee") || notifyMap.containsKey("gmt_refund") || notifyMap.containsKey("out_biz_no")) { if(notifyMap.containsKey("refund_fee") || notifyMap.containsKey("gmt_refund") || notifyMap.containsKey("out_biz_no")) {
returnStr = dragonOrderRefundsService.aliPayRefundCallBack(JSON.toJSONString(notifyMap),payType,deviceFrom); //小程序退款不需要退款回调,手动修改退款状态
if(!(payType.equals(DragonConstant.PayChannelEnum.ALIPAY.getCode()) && deviceFrom.equals(DragonConstant.DeviceFromEnum.APPLET.getCode()))){
returnStr = dragonOrderRefundsService.aliPayRefundCallBack(JSON.toJSONString(notifyMap),null);
}else {
returnStr="success";
}
return returnStr; return returnStr;
} }
......
...@@ -44,6 +44,7 @@ import javax.servlet.http.HttpServletResponse; ...@@ -44,6 +44,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.InputStream; import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
...@@ -71,6 +72,8 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -71,6 +72,8 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
private String unionMerchantId; private String unionMerchantId;
@Autowired @Autowired
private UnionpayBiz unionpayBiz; private UnionpayBiz unionpayBiz;
@Autowired
private DragonOrderRefundsServiceImpl dragonOrderRefundsService;
@Override @Override
public ResponseDto<DragonRefundAppDto> dragonRefund(String orderCode, String code, String orderRefundCode, String reason, String notifyUrl, BigDecimal price, String paymentType, String paymentId, BigDecimal priceTotal) { public ResponseDto<DragonRefundAppDto> dragonRefund(String orderCode, String code, String orderRefundCode, String reason, String notifyUrl, BigDecimal price, String paymentType, String paymentId, BigDecimal priceTotal) {
...@@ -576,7 +579,7 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -576,7 +579,7 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
// 修改退款订单 // 修改退款订单
mqHandleUtil.sendMySqlRedis( mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_order_refund_error.update"), SqlMapping.get("dragon_order_refund_error.update"),
new Object[]{nowTime, refundError, refundStatus, code}, new Object[]{nowTime, refundError, refundStatus, refundCode},
DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode() DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode()
); );
} catch (Exception e) { } catch (Exception e) {
...@@ -613,12 +616,23 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -613,12 +616,23 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
} else { } else {
refundStatus = DragonConstant.RefundStatusEnum.STATUS_REFUNDING.getCode(); refundStatus = DragonConstant.RefundStatusEnum.STATUS_REFUNDING.getCode();
} }
log.info("支付宝退款成功code={},refundStatus={}",code,refundStatus); log.info("支付宝退款成功refundCode{},refundStatus={}",refundCode,refundStatus);
//支付宝小程序全额退款不会异步通知
if(paymentType.equals(DragonConstant.REFUND_TYPE_APPLET_ALIPAY)){
AliPayRefundReturnCallBackDto aliPayRefundReturnCallBackDto = new AliPayRefundReturnCallBackDto();
aliPayRefundReturnCallBackDto.setOutTradeNo(code);
aliPayRefundReturnCallBackDto.setTradeNo(response.getTradeNo());
aliPayRefundReturnCallBackDto.setOutBizNo(refundCode);
//手动触发通知
dragonOrderRefundsService.aliPayRefundCallBack(JSON.toJSONString(aliPayRefundReturnCallBackDto),paymentType);
}else {
mqHandleUtil.sendMySqlRedis( mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_order_refund_success.update"), SqlMapping.get("dragon_order_refund_success.update"),
new Object[]{nowTime, refundAt, refundStatus, code}, new Object[]{nowTime, refundAt, refundStatus, refundCode},
DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode() DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode()
); );
}
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
channelDto.setResult("exception"); channelDto.setResult("exception");
...@@ -917,7 +931,6 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -917,7 +931,6 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
dto.setRefundCode(response.getOutTradeNo()); dto.setRefundCode(response.getOutTradeNo());
dto.setRefundPrice(response.getRefundAmount()); dto.setRefundPrice(response.getRefundAmount());
dto.setRefundAt(DateUtil.Formatter.yyyyMMddHHmmss.format(LocalDateTime.now())); dto.setRefundAt(DateUtil.Formatter.yyyyMMddHHmmss.format(LocalDateTime.now()));
dto.setRefundPrice(response.getRefundAmount());
dto.setRefundError(""); dto.setRefundError("");
sendNotifyUrl(dto, callBackUrl); sendNotifyUrl(dto, callBackUrl);
...@@ -951,7 +964,7 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -951,7 +964,7 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
return null; return null;
} }
public String aliPayRefundCallBack(String jsonStr,String payType,String deviceFrom) { public String aliPayRefundCallBack(String jsonStr,String paymentType) {
LocalDateTime nowTime = LocalDateTime.now(); LocalDateTime nowTime = LocalDateTime.now();
try { try {
AliPayRefundReturnCallBackDto callBackDto = JsonUtils.fromJson(jsonStr, AliPayRefundReturnCallBackDto.class); AliPayRefundReturnCallBackDto callBackDto = JsonUtils.fromJson(jsonStr, AliPayRefundReturnCallBackDto.class);
...@@ -961,8 +974,7 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -961,8 +974,7 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
"\"trade_no\":\"" + callBackDto.getTradeNo() + "\"," + "\"trade_no\":\"" + callBackDto.getTradeNo() + "\"," +
"\"out_request_no\":\"" + callBackDto.getOutBizNo() + "\"}"); //设置业务参数 "\"out_request_no\":\"" + callBackDto.getOutBizNo() + "\"}"); //设置业务参数
AlipayClient httpClient=null; AlipayClient httpClient=null;
if(payType.equals(DragonConstant.PayChannelEnum.ALIPAY.getCode()) && deviceFrom.equals(DragonConstant.DeviceFromEnum.APPLET.getCode())){ if(null!=paymentType && paymentType.equals(DragonConstant.REFUND_TYPE_APPLET_ALIPAY)){
//支付小程序
httpClient=PayAlipayUtils.getInstance().getHttpClientApplet(); httpClient=PayAlipayUtils.getInstance().getHttpClientApplet();
}else { }else {
httpClient=PayAlipayUtils.getInstance().getHttpClient(); httpClient=PayAlipayUtils.getInstance().getHttpClient();
...@@ -982,7 +994,6 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -982,7 +994,6 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
dto.setRefundCode(response.getOutTradeNo()); dto.setRefundCode(response.getOutTradeNo());
dto.setRefundPrice(response.getRefundAmount()); dto.setRefundPrice(response.getRefundAmount());
dto.setRefundAt(callBackDto.getGmtRefund()); dto.setRefundAt(callBackDto.getGmtRefund());
dto.setRefundPrice(response.getRefundAmount());
dto.setRefundError(""); dto.setRefundError("");
sendNotifyUrl(dto, null); sendNotifyUrl(dto, null);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment