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

Commit 5e1d3567 authored by anjiabin's avatar anjiabin

提交redis queue队列

parent af5a04ca
...@@ -30,7 +30,7 @@ import java.util.*; ...@@ -30,7 +30,7 @@ import java.util.*;
*/ */
@Slf4j @Slf4j
@Component @Component
public class AlipayBiz extends DragonPayBiz { public class AlipayBiz{
/** /**
* 支付宝支付 * 支付宝支付
* @param alipayTradePayReq * @param alipayTradePayReq
......
...@@ -6,6 +6,7 @@ import com.liquidnet.service.base.ResponseDto; ...@@ -6,6 +6,7 @@ import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.dragon.channel.alipay.biz.AlipayBiz; import com.liquidnet.service.dragon.channel.alipay.biz.AlipayBiz;
import com.liquidnet.service.dragon.channel.alipay.req.AlipayTradePayReq; import com.liquidnet.service.dragon.channel.alipay.req.AlipayTradePayReq;
import com.liquidnet.service.dragon.channel.alipay.strategy.IAlipayStrategy; import com.liquidnet.service.dragon.channel.alipay.strategy.IAlipayStrategy;
import com.liquidnet.service.dragon.channel.strategy.biz.DragonPayBiz;
import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto; import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto;
import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto; import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -27,6 +28,9 @@ public abstract class AbstractAlipayStrategy implements IAlipayStrategy { ...@@ -27,6 +28,9 @@ public abstract class AbstractAlipayStrategy implements IAlipayStrategy {
@Autowired @Autowired
private AlipayBiz alipayBiz; private AlipayBiz alipayBiz;
@Autowired
private DragonPayBiz dragonPayBiz;
protected String productCode = "QUICK_WAP_PAY"; protected String productCode = "QUICK_WAP_PAY";
@Override @Override
...@@ -55,7 +59,7 @@ public abstract class AbstractAlipayStrategy implements IAlipayStrategy { ...@@ -55,7 +59,7 @@ public abstract class AbstractAlipayStrategy implements IAlipayStrategy {
respDto = this.buildResponseDto(respDto,result); respDto = this.buildResponseDto(respDto,result);
//支付订单持久化 //支付订单持久化
alipayBiz.buildPayOrders(dragonPayBaseReqDto,respDto); dragonPayBiz.buildPayOrders(dragonPayBaseReqDto,respDto);
return ResponseDto.success(respDto); return ResponseDto.success(respDto);
} }
......
...@@ -16,6 +16,7 @@ import com.liquidnet.service.dragon.utils.DataUtils; ...@@ -16,6 +16,7 @@ import com.liquidnet.service.dragon.utils.DataUtils;
import com.liquidnet.service.dragon.utils.MqHandleUtil; import com.liquidnet.service.dragon.utils.MqHandleUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap; import org.springframework.util.MultiValueMap;
...@@ -31,7 +32,8 @@ import java.time.LocalDateTime; ...@@ -31,7 +32,8 @@ import java.time.LocalDateTime;
* @date 2021/7/14 14:12 * @date 2021/7/14 14:12
*/ */
@Slf4j @Slf4j
public abstract class DragonPayBiz { @Component
public class DragonPayBiz {
@Autowired @Autowired
private MqHandleUtil mqHandleUtil; private MqHandleUtil mqHandleUtil;
...@@ -78,6 +80,53 @@ public abstract class DragonPayBiz { ...@@ -78,6 +80,53 @@ public abstract class DragonPayBiz {
return orders; return orders;
} }
/**
* 更新支付状态
* @param code
* @param paymentId
* @return
*/
public boolean updateDragonOrderStatus(String code,String paymentId){
try {
Integer status = Integer.valueOf(DragonConstant.PayStatusEnum.STATUS_PAID.getCode());
LocalDateTime finishedAt = LocalDateTime.now();
LocalDateTime updateAt = LocalDateTime.now();
//t.status = ? ,t.payment_id = ?,t.finished_at = ?,t.updated_at =? where t.code = ?
boolean insertResult = mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_orders.update"),
new Object[]{status,paymentId,finishedAt, updateAt,code}
,DragonConstant.MysqlRedisQueueEnum.DRAGON_PAY_KEY.getCode()
);
if(insertResult) return true;
} catch (Exception e) {
log.error("dragon:updateDragonOrderStatus:error msg:{}",e);
e.printStackTrace();
}
return false;
}
/**
* 更新支付通知状态
* @param code
* @return
*/
public boolean updateNotifyStatus(String code,Integer status){
try {
LocalDateTime updateAt = LocalDateTime.now();
//update dragon_orders t set t.status = ? ,t.updated_at =? where t.code = ?
boolean insertResult = mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_orders.updateNotifyStatus"),
new Object[]{status,updateAt,code}
,DragonConstant.MysqlRedisQueueEnum.DRAGON_PAY_KEY.getCode()
);
if(insertResult) return true;
} catch (Exception e) {
log.error("dragon:updateNotifyStatus:error msg:{}",e);
e.printStackTrace();
}
return false;
}
public PayNotifyReqBo buildPayNotifyReqBo(DragonOrdersDto dragonOrdersDto){ public PayNotifyReqBo buildPayNotifyReqBo(DragonOrdersDto dragonOrdersDto){
PayNotifyReqBo payNotifyReqBo = new PayNotifyReqBo(); PayNotifyReqBo payNotifyReqBo = new PayNotifyReqBo();
payNotifyReqBo.setNotifyUrl(dragonOrdersDto.getNotifyUrl()); payNotifyReqBo.setNotifyUrl(dragonOrdersDto.getNotifyUrl());
......
package com.liquidnet.service.dragon.channel.strategy.impl;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.dragon.channel.strategy.IPayChannelStrategy;
import com.liquidnet.service.dragon.channel.strategy.biz.DragonPayBiz;
import com.liquidnet.service.dragon.constant.DragonConstant;
import com.liquidnet.service.dragon.dto.DragonOrdersDto;
import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto;
import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import com.liquidnet.service.dragon.dto.DragonPayOrderQueryRespDto;
import com.liquidnet.service.dragon.utils.DataUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: AbstractPayChannelStrategyImpl
* @Package com.liquidnet.service.dragon.channel.strategy.impl
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/7/16 13:04
*/
@Slf4j
public abstract class AbstractPayChannelStrategyImpl implements IPayChannelStrategy {
@Autowired
private DragonPayBiz dragonPayBiz;
@Autowired
private DataUtils dataUtils;
@Override
public abstract ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto);
@Override
public abstract String dragonNotify(HttpServletRequest request, String payType, String deviceFrom);
@Override
public abstract DragonPayOrderQueryRespDto checkOrderStatus(String code);
/**
* 支付成功方法
* @param dragonOrdersDto
* @param bankTrxNo
* @param timeEnd
* @param bankReturnMsg
*/
@Transactional(rollbackFor = Exception.class)
protected void completeSuccessOrder(DragonOrdersDto dragonOrdersDto, String bankTrxNo, LocalDateTime timeEnd, String bankReturnMsg) {
log.info("订单支付成功!");
dragonOrdersDto.setPaymentAt(timeEnd);
dragonOrdersDto.setPaymentId(bankTrxNo);// 设置银行流水号
dragonOrdersDto.setStatus(Integer.parseInt(DragonConstant.PayStatusEnum.STATUS_PAID.getCode()));
dataUtils.updateOrderStatus(dragonOrdersDto.getCode(),dragonOrdersDto);
//通知商户
dragonPayBiz.sendNotify(dragonPayBiz.buildPayNotifyReqBo(dragonOrdersDto));
}
/**
* 支付失败方法
* @param dragonOrdersDto
* @param bankReturnMsg
*/
protected void completeFailOrder(DragonOrdersDto dragonOrdersDto, String bankReturnMsg) {
log.info("订单支付失败!");
// DragonOrdersDto.(bankReturnMsg);
dragonOrdersDto.setStatus(Integer.parseInt(DragonConstant.PayStatusEnum.STATUS_PAID.getCode()));
dataUtils.updateOrderStatus(dragonOrdersDto.getCode(),dragonOrdersDto);
String notifyUrl = dragonOrdersDto.getNotifyUrl();
}
}
...@@ -10,8 +10,8 @@ import com.liquidnet.service.base.ResponseDto; ...@@ -10,8 +10,8 @@ import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.dragon.channel.alipay.biz.AlipayBiz; import com.liquidnet.service.dragon.channel.alipay.biz.AlipayBiz;
import com.liquidnet.service.dragon.channel.alipay.constant.AlipayConstant; import com.liquidnet.service.dragon.channel.alipay.constant.AlipayConstant;
import com.liquidnet.service.dragon.channel.alipay.strategy.AlipayStrategyContext; import com.liquidnet.service.dragon.channel.alipay.strategy.AlipayStrategyContext;
import com.liquidnet.service.dragon.channel.strategy.IPayChannelStrategy;
import com.liquidnet.service.dragon.channel.strategy.annotation.StrategyPayChannelHandler; import com.liquidnet.service.dragon.channel.strategy.annotation.StrategyPayChannelHandler;
import com.liquidnet.service.dragon.channel.strategy.biz.DragonPayBiz;
import com.liquidnet.service.dragon.constant.DragonConstant; import com.liquidnet.service.dragon.constant.DragonConstant;
import com.liquidnet.service.dragon.constant.DragonErrorCodeEnum; import com.liquidnet.service.dragon.constant.DragonErrorCodeEnum;
import com.liquidnet.service.dragon.dto.DragonOrdersDto; import com.liquidnet.service.dragon.dto.DragonOrdersDto;
...@@ -25,7 +25,6 @@ import lombok.extern.slf4j.Slf4j; ...@@ -25,7 +25,6 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -44,7 +43,7 @@ import java.util.Map; ...@@ -44,7 +43,7 @@ import java.util.Map;
@Slf4j @Slf4j
@Component @Component
@StrategyPayChannelHandler(DragonConstant.PayChannelEnum.ALIPAY) @StrategyPayChannelHandler(DragonConstant.PayChannelEnum.ALIPAY)
public class PayChannelStrategyAlipayImpl implements IPayChannelStrategy { public class PayChannelStrategyAlipayImpl extends AbstractPayChannelStrategyImpl {
@Autowired @Autowired
private AlipayStrategyContext alipayStrategyContext; private AlipayStrategyContext alipayStrategyContext;
...@@ -54,6 +53,9 @@ public class PayChannelStrategyAlipayImpl implements IPayChannelStrategy { ...@@ -54,6 +53,9 @@ public class PayChannelStrategyAlipayImpl implements IPayChannelStrategy {
@Autowired @Autowired
private AlipayBiz alipayBiz; private AlipayBiz alipayBiz;
@Autowired
private DragonPayBiz dragonPayBiz;
@Autowired @Autowired
private MqHandleUtil mqHandleUtil; private MqHandleUtil mqHandleUtil;
...@@ -85,7 +87,7 @@ public class PayChannelStrategyAlipayImpl implements IPayChannelStrategy { ...@@ -85,7 +87,7 @@ public class PayChannelStrategyAlipayImpl implements IPayChannelStrategy {
log.info("dragonNotify-->alipay json : {}", JSON.toJSONString(notifyMap)); log.info("dragonNotify-->alipay json : {}", JSON.toJSONString(notifyMap));
log.info("接收到{}支付结果{}", payType, notifyMap); log.info("接收到{}支付结果{}", payType, notifyMap);
//持久化通知记录 //持久化通知记录
alipayBiz.createDragonOrderLogs(alipayBiz.getPaymentType(payType,deviceFrom),JSON.toJSONString(notifyMap)); dragonPayBiz.createDragonOrderLogs(dragonPayBiz.getPaymentType(payType,deviceFrom),JSON.toJSONString(notifyMap));
String returnStr = null; String returnStr = null;
String code = notifyMap.get("out_trade_no"); String code = notifyMap.get("out_trade_no");
...@@ -109,25 +111,18 @@ public class PayChannelStrategyAlipayImpl implements IPayChannelStrategy { ...@@ -109,25 +111,18 @@ public class PayChannelStrategyAlipayImpl implements IPayChannelStrategy {
if (AlipaySignature.rsaCheckV1(notifyMap, merchantPubKey, "UTF-8", "RSA2")){ if (AlipaySignature.rsaCheckV1(notifyMap, merchantPubKey, "UTF-8", "RSA2")){
String tradeStatus = notifyMap.get("trade_status"); String tradeStatus = notifyMap.get("trade_status");
if (AlipayConstant.AlipayTradeStateEnum.TRADE_FINISHED.name().equals(tradeStatus)) { if (AlipayConstant.AlipayTradeStateEnum.TRADE_SUCCESS.name().equals(tradeStatus)
// 判断该笔订单是否在商户网站中已经做过处理 ||AlipayConstant.AlipayTradeStateEnum.TRADE_FINISHED.name().equals(tradeStatus)) {
// 如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
// 请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的
// 如果有做过处理,不执行商户的业务程序
// 注意:
// 退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知
} else if (AlipayConstant.AlipayTradeStateEnum.TRADE_SUCCESS.name().equals(tradeStatus)) {
String gmtPaymentStr = notifyMap.get("gmt_payment");// 付款时间 String gmtPaymentStr = notifyMap.get("gmt_payment");// 付款时间
LocalDateTime timeEnd = null; LocalDateTime timeEnd = null;
if (!StringUtil.isEmpty(gmtPaymentStr)) { if (!StringUtil.isEmpty(gmtPaymentStr)) {
timeEnd = DateUtil.Formatter.yyyyMMddHHmmss.parse(gmtPaymentStr); timeEnd = DateUtil.Formatter.yyyyMMddHHmmss.parse(gmtPaymentStr);
} }
completeSuccessOrder(dragonOrdersDto, notifyMap.get("trade_no"), timeEnd, notifyMap.toString()); this.completeSuccessOrder(dragonOrdersDto, notifyMap.get("trade_no"), timeEnd, notifyMap.toString());
returnStr = "success"; returnStr = "success";
} else { } else {
// completeFailOrder(dragonOrdersDto, notifyMap.toString()); this.completeFailOrder(dragonOrdersDto, notifyMap.toString());
returnStr = "fail"; returnStr = "fail";
} }
} else {// 验证失败 } else {// 验证失败
...@@ -154,38 +149,4 @@ public class PayChannelStrategyAlipayImpl implements IPayChannelStrategy { ...@@ -154,38 +149,4 @@ public class PayChannelStrategyAlipayImpl implements IPayChannelStrategy {
} }
return respDto; return respDto;
} }
/**
* 支付成功方法
* @param dragonOrdersDto
* @param bankTrxNo
* @param timeEnd
* @param bankReturnMsg
*/
@Transactional(rollbackFor = Exception.class)
void completeSuccessOrder(DragonOrdersDto dragonOrdersDto, String bankTrxNo, LocalDateTime timeEnd, String bankReturnMsg) {
log.info("订单支付成功!");
dragonOrdersDto.setPaymentAt(timeEnd);
dragonOrdersDto.setPaymentId(bankTrxNo);// 设置银行流水号
dragonOrdersDto.setStatus(Integer.parseInt(DragonConstant.PayStatusEnum.STATUS_PAID.getCode()));
dataUtils.updateOrderStatus(dragonOrdersDto.getCode(),dragonOrdersDto);
//通知商户
alipayBiz.sendNotify(alipayBiz.buildPayNotifyReqBo(dragonOrdersDto));
}
/**
* 支付失败方法
*
* @param DragonOrdersDto
*/
// private void completeFailOrder(DragonOrdersDto dragonOrdersDto, String bankReturnMsg) {
// log.info("订单支付失败!");
//// DragonOrdersDto.(bankReturnMsg);
// dragonOrdersDto.setStatus(Integer.parseInt(DragonConstant.PayStatusEnum.STATUS_PAID.getCode()));
// dataUtils.updateOrderStatus(dragonOrdersDto.getCode(),dragonOrdersDto);
//
// String notifyUrl = dragonOrdersDto.getNotifyUrl();
// }
} }
package com.liquidnet.service.dragon.channel.strategy.impl; package com.liquidnet.service.dragon.channel.strategy.impl;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.dragon.channel.strategy.IPayChannelStrategy;
import com.liquidnet.service.dragon.channel.strategy.annotation.StrategyPayChannelHandler; import com.liquidnet.service.dragon.channel.strategy.annotation.StrategyPayChannelHandler;
import com.liquidnet.service.dragon.constant.DragonConstant; import com.liquidnet.service.dragon.constant.DragonConstant;
import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto; import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto;
...@@ -24,7 +23,7 @@ import javax.servlet.http.HttpServletRequest; ...@@ -24,7 +23,7 @@ import javax.servlet.http.HttpServletRequest;
@Slf4j @Slf4j
@Component @Component
@StrategyPayChannelHandler(DragonConstant.PayChannelEnum.APPLEPAY) @StrategyPayChannelHandler(DragonConstant.PayChannelEnum.APPLEPAY)
public class PayChannelStrategyApplepayImpl implements IPayChannelStrategy { public class PayChannelStrategyApplepayImpl extends AbstractPayChannelStrategyImpl {
@Override @Override
public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) { public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) {
......
...@@ -5,8 +5,8 @@ import com.liquidnet.common.exception.LiquidnetServiceException; ...@@ -5,8 +5,8 @@ import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.commons.lang.util.DateUtil; import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.StringUtil; import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.dragon.channel.strategy.IPayChannelStrategy;
import com.liquidnet.service.dragon.channel.strategy.annotation.StrategyPayChannelHandler; import com.liquidnet.service.dragon.channel.strategy.annotation.StrategyPayChannelHandler;
import com.liquidnet.service.dragon.channel.strategy.biz.DragonPayBiz;
import com.liquidnet.service.dragon.channel.wepay.biz.WepayBiz; import com.liquidnet.service.dragon.channel.wepay.biz.WepayBiz;
import com.liquidnet.service.dragon.channel.wepay.constant.WepayConstant; import com.liquidnet.service.dragon.channel.wepay.constant.WepayConstant;
import com.liquidnet.service.dragon.channel.wepay.strategy.WepayStrategyContext; import com.liquidnet.service.dragon.channel.wepay.strategy.WepayStrategyContext;
...@@ -22,7 +22,6 @@ import com.liquidnet.service.dragon.utils.PayWepayUtils; ...@@ -22,7 +22,6 @@ import com.liquidnet.service.dragon.utils.PayWepayUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.IOException;
...@@ -43,7 +42,7 @@ import java.util.Map; ...@@ -43,7 +42,7 @@ import java.util.Map;
@Slf4j @Slf4j
@Component @Component
@StrategyPayChannelHandler(DragonConstant.PayChannelEnum.WEPAY) @StrategyPayChannelHandler(DragonConstant.PayChannelEnum.WEPAY)
public class PayChannelStrategyWepayImpl implements IPayChannelStrategy { public class PayChannelStrategyWepayImpl extends AbstractPayChannelStrategyImpl {
@Autowired @Autowired
private WepayStrategyContext wepayStrategyContext; private WepayStrategyContext wepayStrategyContext;
...@@ -56,6 +55,9 @@ public class PayChannelStrategyWepayImpl implements IPayChannelStrategy { ...@@ -56,6 +55,9 @@ public class PayChannelStrategyWepayImpl implements IPayChannelStrategy {
@Autowired @Autowired
private WepayBiz wepayBiz; private WepayBiz wepayBiz;
@Autowired
private DragonPayBiz dragonPayBiz;
@Override @Override
public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) { public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) {
return wepayStrategyContext.getStrategy(dragonPayBaseReqDto.getDeviceFrom()).dragonPay(dragonPayBaseReqDto); return wepayStrategyContext.getStrategy(dragonPayBaseReqDto.getDeviceFrom()).dragonPay(dragonPayBaseReqDto);
...@@ -72,7 +74,7 @@ public class PayChannelStrategyWepayImpl implements IPayChannelStrategy { ...@@ -72,7 +74,7 @@ public class PayChannelStrategyWepayImpl implements IPayChannelStrategy {
log.info("dragonNotify-->wepay json : {}", JSON.toJSONString(notifyMap)); log.info("dragonNotify-->wepay json : {}", JSON.toJSONString(notifyMap));
//持久化通知记录 //持久化通知记录
wepayBiz.createDragonOrderLogs(wepayBiz.getPaymentType(payType,deviceFrom),JSON.toJSONString(notifyMap)); dragonPayBiz.createDragonOrderLogs(dragonPayBiz.getPaymentType(payType,deviceFrom),JSON.toJSONString(notifyMap));
log.info("接收到{}支付结果{}", payType, notifyMap); log.info("接收到{}支付结果{}", payType, notifyMap);
String code = notifyMap.get("out_trade_no"); String code = notifyMap.get("out_trade_no");
...@@ -97,10 +99,10 @@ public class PayChannelStrategyWepayImpl implements IPayChannelStrategy { ...@@ -97,10 +99,10 @@ public class PayChannelStrategyWepayImpl implements IPayChannelStrategy {
if (!StringUtil.isEmpty(timeEndStr)) { if (!StringUtil.isEmpty(timeEndStr)) {
timeEnd = DateUtil.Formatter.yyyyMMddHHmmss.parse(timeEndStr); timeEnd = DateUtil.Formatter.yyyyMMddHHmmss.parse(timeEndStr);
} }
completeSuccessOrder(dragonOrdersDto, notifyMap.get("transaction_id"), timeEnd, notifyMap.toString()); this.completeSuccessOrder(dragonOrdersDto, notifyMap.get("transaction_id"), timeEnd, notifyMap.toString());
returnStr = "<xml>\n" + " <return_code><![CDATA[SUCCESS]]></return_code>\n" + " <return_msg><![CDATA[OK]]></return_msg>\n" + "</xml>"; returnStr = "<xml>\n" + " <return_code><![CDATA[SUCCESS]]></return_code>\n" + " <return_msg><![CDATA[OK]]></return_msg>\n" + "</xml>";
} else { } else {
// completeFailOrder(dragonOrdersDto, notifyMap.toString()); this.completeFailOrder(dragonOrdersDto, notifyMap.toString());
} }
} else { } else {
throw new LiquidnetServiceException(DragonErrorCodeEnum.TRADE_WEPAY_SIGN_ERROR.getCode(),DragonErrorCodeEnum.TRADE_WEPAY_SIGN_ERROR.getMessage()); throw new LiquidnetServiceException(DragonErrorCodeEnum.TRADE_WEPAY_SIGN_ERROR.getCode(),DragonErrorCodeEnum.TRADE_WEPAY_SIGN_ERROR.getMessage());
...@@ -120,15 +122,4 @@ public class PayChannelStrategyWepayImpl implements IPayChannelStrategy { ...@@ -120,15 +122,4 @@ public class PayChannelStrategyWepayImpl implements IPayChannelStrategy {
DragonPayOrderQueryRespDto respDto = wepayStrategyContext.getStrategy(DragonConstant.PayTypeEnum.getEnumByCode(ordersDto.getPaymentType()).getDeviceFrom()).checkOrderStatus(code); DragonPayOrderQueryRespDto respDto = wepayStrategyContext.getStrategy(DragonConstant.PayTypeEnum.getEnumByCode(ordersDto.getPaymentType()).getDeviceFrom()).checkOrderStatus(code);
return respDto; return respDto;
} }
@Transactional(rollbackFor = Exception.class)
void completeSuccessOrder(DragonOrdersDto dragonOrdersDto, String bankTrxNo, LocalDateTime timeEnd, String bankReturnMsg) {
log.info("订单支付成功!");
dragonOrdersDto.setPaymentAt(timeEnd);
dragonOrdersDto.setPaymentId(bankTrxNo);// 设置银行流水号
dragonOrdersDto.setStatus(Integer.parseInt(DragonConstant.PayStatusEnum.STATUS_PAID.getCode()));
dataUtils.updateOrderStatus(dragonOrdersDto.getCode(),dragonOrdersDto);
wepayBiz.sendNotify(wepayBiz.buildPayNotifyReqBo(dragonOrdersDto));
}
} }
package com.liquidnet.service.dragon.channel.wepay.biz; package com.liquidnet.service.dragon.channel.wepay.biz;
import com.liquidnet.service.dragon.channel.strategy.biz.DragonPayBiz;
import com.liquidnet.service.dragon.channel.wepay.resp.WepayOrderQueryRespDto; import com.liquidnet.service.dragon.channel.wepay.resp.WepayOrderQueryRespDto;
import com.liquidnet.service.dragon.utils.PayWepayUtils; import com.liquidnet.service.dragon.utils.PayWepayUtils;
import com.liquidnet.service.dragon.utils.XmlUtil; import com.liquidnet.service.dragon.utils.XmlUtil;
...@@ -28,7 +27,7 @@ import java.util.TreeMap; ...@@ -28,7 +27,7 @@ import java.util.TreeMap;
*/ */
@Slf4j @Slf4j
@Component @Component
public class WepayBiz extends DragonPayBiz{ public class WepayBiz{
@Value("${liquidnet.dragon.wepay.merchantId}") @Value("${liquidnet.dragon.wepay.merchantId}")
private String merchantId; private String merchantId;
......
...@@ -3,6 +3,7 @@ package com.liquidnet.service.dragon.channel.wepay.strategy.impl; ...@@ -3,6 +3,7 @@ package com.liquidnet.service.dragon.channel.wepay.strategy.impl;
import com.liquidnet.common.exception.LiquidnetServiceException; import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.commons.lang.util.DateUtil; import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.dragon.channel.strategy.biz.DragonPayBiz;
import com.liquidnet.service.dragon.channel.wepay.biz.WepayBiz; import com.liquidnet.service.dragon.channel.wepay.biz.WepayBiz;
import com.liquidnet.service.dragon.channel.wepay.constant.WepayConstant; import com.liquidnet.service.dragon.channel.wepay.constant.WepayConstant;
import com.liquidnet.service.dragon.channel.wepay.resp.WepayOrderQueryRespDto; import com.liquidnet.service.dragon.channel.wepay.resp.WepayOrderQueryRespDto;
...@@ -42,6 +43,9 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy { ...@@ -42,6 +43,9 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy {
@Autowired @Autowired
private WepayBiz wepayBiz; private WepayBiz wepayBiz;
@Autowired
private DragonPayBiz dragonPayBiz;
@Override @Override
public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) { public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) {
...@@ -74,7 +78,7 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy { ...@@ -74,7 +78,7 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy {
this.buildResponseDto(respPayDto,respWepayDto); this.buildResponseDto(respPayDto,respWepayDto);
//支付订单持久化 //支付订单持久化
wepayBiz.buildPayOrders(dragonPayBaseReqDto,respPayDto); dragonPayBiz.buildPayOrders(dragonPayBaseReqDto,respPayDto);
return ResponseDto.success(respPayDto); return ResponseDto.success(respPayDto);
}else{ }else{
throw new LiquidnetServiceException(DragonErrorCodeEnum.TRADE_PARAM_ERROR.getCode(),DragonErrorCodeEnum.TRADE_PARAM_ERROR.getMessage()); throw new LiquidnetServiceException(DragonErrorCodeEnum.TRADE_PARAM_ERROR.getCode(),DragonErrorCodeEnum.TRADE_PARAM_ERROR.getMessage());
......
...@@ -13,3 +13,6 @@ dragon_order_logs.insert=insert into dragon_order_logs(order_id, payment_type, c ...@@ -13,3 +13,6 @@ dragon_order_logs.insert=insert into dragon_order_logs(order_id, payment_type, c
dragon_pay_notify.insert=insert into dragon_pay_notify (code, order_code, notify_url, notify_data, created_at, updated_at) values(?,?,?,?,?,?) dragon_pay_notify.insert=insert into dragon_pay_notify (code, order_code, notify_url, notify_data, created_at, updated_at) values(?,?,?,?,?,?)
dragon_pay_notify_fail.insert=insert into dragon_pay_notify_fail (code, order_code, notify_url, notify_data, fail_desc, created_at, updated_at) values(?,?,?,?,?,?,?) dragon_pay_notify_fail.insert=insert into dragon_pay_notify_fail (code, order_code, notify_url, notify_data, fail_desc, created_at, updated_at) values(?,?,?,?,?,?,?)
dragon_orders.update=update dragon_orders t set t.status = ? ,t.payment_id = ?,t.finished_at = ?,t.updated_at =? where t.code = ?
dragon_orders.updateNotifyStatus=update dragon_orders t set t.status = ? ,t.updated_at =? where t.code = ?
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