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

Commit 00a50615 authored by anjiabin's avatar anjiabin

提交支付查询

parent 9687411d
...@@ -139,26 +139,52 @@ public class DragonConstant { ...@@ -139,26 +139,52 @@ public class DragonConstant {
* 支付类型 * 支付类型
*/ */
public enum PayTypeEnum{ public enum PayTypeEnum{
PAYMENT_TYPE_APP_ALIPAY("APPALIPAY","App内支付宝支付"), PAYMENT_TYPE_APP_ALIPAY("APPALIPAY","alipay","app","App内支付宝支付"),
PAYMENT_TYPE_APP_WEPAY("APPWEPAY","App内微信支付"), PAYMENT_TYPE_APP_WEPAY("APPWEPAY","wepay","app","App内微信支付"),
PAYMENT_TYPE_APP_IAP("APPIAP","App内IAP(In-App Purchase)支付,iOS虚拟道具支付"), PAYMENT_TYPE_APP_IAP("APPIAP","applepay","app","App内IAP(In-App Purchase)支付,iOS虚拟道具支付"),
PAYMENT_TYPE_WAP_ALIPAY("WAPALIPAY","手机网页内支付宝支付"), PAYMENT_TYPE_WAP_ALIPAY("WAPALIPAY","alipay","wap","手机网页内支付宝支付"),
PAYMENT_TYPE_WAP_WEPAY("WAPWEPAY","手机网页调起微信支付"), PAYMENT_TYPE_WAP_WEPAY("WAPWEPAY","wepay","wap","手机网页调起微信支付"),
PAYMENT_TYPE_WEB_ALIPAY("WEBALIPAY","电脑网页内支付宝即时到账支付"), PAYMENT_TYPE_WEB_ALIPAY("WEBALIPAY","alipay","web","电脑网页内支付宝即时到账支付"),
PAYMENT_TYPE_WEB_WEPAY("WEBWEPAY","电脑网页内微信二维码支付,用户打开微信扫码支付"), PAYMENT_TYPE_WEB_WEPAY("WEBWEPAY","wepay","web","电脑网页内微信二维码支付,用户打开微信扫码支付"),
PAYMENT_TYPE_JS_WEPAY("JSWEPAY","微信内网页、微信公众号"), PAYMENT_TYPE_JS_WEPAY("JSWEPAY","wepay","js","微信内网页、微信公众号"),
PAYMENT_TYPE_APPLET_WEPAY("APPLETWEPAY","微信小程序"); PAYMENT_TYPE_APPLET_WEPAY("APPLETWEPAY","wepay","applet","微信小程序");
private String code; private String code;
private String message; private String message;
PayTypeEnum(String code, String message) { private String payType;
private String deviceFrom;
PayTypeEnum(String code, String message,String payType,String deviceFrom) {
this.code = code; this.code = code;
this.message = message; this.message = message;
this.payType = payType;
this.deviceFrom = deviceFrom;
} }
public String getCode() { public String getCode() {
return code; return code;
} }
public static PayTypeEnum getEnumByCode(String code){
PayTypeEnum[] arry = PayTypeEnum.values();
for (int i = 0; i < arry.length; i++) {
if (arry[i].getCode().equals(code)) {
return arry[i];
}
}
return null;
}
public String getMessage() {
return message;
}
public String getPayType() {
return payType;
}
public String getDeviceFrom() {
return deviceFrom;
}
} }
/** /**
......
...@@ -10,20 +10,13 @@ import com.alipay.api.response.AlipayTradeAppPayResponse; ...@@ -10,20 +10,13 @@ import com.alipay.api.response.AlipayTradeAppPayResponse;
import com.alipay.api.response.AlipayTradeQueryResponse; import com.alipay.api.response.AlipayTradeQueryResponse;
import com.alipay.api.response.AlipayTradeWapPayResponse; import com.alipay.api.response.AlipayTradeWapPayResponse;
import com.liquidnet.commons.lang.util.StringUtil; import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.base.SqlMapping;
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.sign.MD5; import com.liquidnet.service.dragon.channel.alipay.sign.MD5;
import com.liquidnet.service.dragon.constant.DragonConstant; import com.liquidnet.service.dragon.channel.strategy.biz.DragonPayBiz;
import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto;
import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import com.liquidnet.service.dragon.entity.DragonOrders;
import com.liquidnet.service.dragon.utils.MqHandleUtil;
import com.liquidnet.service.dragon.utils.PayAlipayUtils; import com.liquidnet.service.dragon.utils.PayAlipayUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.*; import java.util.*;
/** /**
...@@ -37,42 +30,7 @@ import java.util.*; ...@@ -37,42 +30,7 @@ import java.util.*;
*/ */
@Slf4j @Slf4j
@Component @Component
public class AlipayBiz { public class AlipayBiz extends DragonPayBiz {
@Autowired
private MqHandleUtil mqHandleUtil;
public DragonOrders buildPayOrders(DragonPayBaseReqDto dragonPayBaseReqDto, DragonPayBaseRespDto respDto){
DragonOrders orders = new DragonOrders();
// orders.setMid();
orders.setStatus(Integer.valueOf(DragonConstant.PayStatusEnum.STATUS_UNPAID.getCode()));
orders.setCode(respDto.getCode());
orders.setType(dragonPayBaseReqDto.getType());
orders.setPrice(dragonPayBaseReqDto.getPrice());
orders.setName(dragonPayBaseReqDto.getName());
orders.setDetail(dragonPayBaseReqDto.getDetail());
orders.setOrderCode(dragonPayBaseReqDto.getOrderCode());
orders.setClientIp(dragonPayBaseReqDto.getClientIp());
orders.setNotifyUrl(dragonPayBaseReqDto.getNotifyUrl());
orders.setPaymentType(DragonConstant.PayTypeEnum.PAYMENT_TYPE_APP_IAP.getCode());
// orders.setPaymentId();
orders.setPaymentAt(LocalDateTime.now());
// orders.setFinishedAt();
orders.setCreatedAt(LocalDateTime.now());
// orders.setUpdatedAt();
// 修改退款订单
boolean insertResult = mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_orders.insert"),
new Object[]{orders.getStatus(), orders.getCode(), orders.getType()
, orders.getPrice(), orders.getName(), orders.getDetail()
, orders.getOrderCode(), orders.getClientIp()
, orders.getNotifyUrl(), orders.getPaymentType(),
orders.getPaymentId(), orders.getPaymentAt()
, orders.getFinishedAt(), orders.getCreatedAt()
, orders.getUpdatedAt()}
);
return orders;
}
/** /**
* 支付宝支付 * 支付宝支付
* @param alipayTradePayReq * @param alipayTradePayReq
......
package com.liquidnet.service.dragon.channel.strategy.biz;
import com.liquidnet.commons.lang.util.BeanUtil;
import com.liquidnet.service.base.SqlMapping;
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.entity.DragonOrders;
import com.liquidnet.service.dragon.utils.DataUtils;
import com.liquidnet.service.dragon.utils.MqHandleUtil;
import org.springframework.beans.factory.annotation.Autowired;
import java.time.LocalDateTime;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: DragonPayBiz
* @Package com.liquidnet.service.dragon.channel.strategy.biz
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/7/14 14:12
*/
public abstract class DragonPayBiz {
@Autowired
private MqHandleUtil mqHandleUtil;
@Autowired
private DataUtils dataUtils;
public DragonOrders buildPayOrders(DragonPayBaseReqDto dragonPayBaseReqDto, DragonPayBaseRespDto respDto){
//构造订单
DragonOrders orders = new DragonOrders();
// orders.setMid();
orders.setStatus(Integer.valueOf(DragonConstant.PayStatusEnum.STATUS_UNPAID.getCode()));
orders.setCode(respDto.getCode());
orders.setType(dragonPayBaseReqDto.getType());
orders.setPrice(dragonPayBaseReqDto.getPrice());
orders.setName(dragonPayBaseReqDto.getName());
orders.setDetail(dragonPayBaseReqDto.getDetail());
orders.setOrderCode(dragonPayBaseReqDto.getOrderCode());
orders.setClientIp(dragonPayBaseReqDto.getClientIp());
orders.setNotifyUrl(dragonPayBaseReqDto.getNotifyUrl());
orders.setPaymentType(DragonConstant.PayTypeEnum.PAYMENT_TYPE_APP_IAP.getCode());
// orders.setPaymentId();
orders.setPaymentAt(LocalDateTime.now());
// orders.setFinishedAt();
orders.setCreatedAt(LocalDateTime.now());
// orders.setUpdatedAt();
DragonOrdersDto ordersDto = new DragonOrdersDto();
BeanUtil.copy(orders,ordersDto);
//放到redis缓存中
dataUtils.createPayOrder(orders.getOrderCode(),orders.getCode(),ordersDto);
// 持久化到数据库
boolean insertResult = mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_orders.insert"),
new Object[]{orders.getStatus(), orders.getCode(), orders.getType()
, orders.getPrice(), orders.getName(), orders.getDetail()
, orders.getOrderCode(), orders.getClientIp()
, orders.getNotifyUrl(), orders.getPaymentType(),
orders.getPaymentId(), orders.getPaymentAt()
, orders.getFinishedAt(), orders.getCreatedAt()
, orders.getUpdatedAt()}
);
return orders;
}
}
...@@ -105,7 +105,7 @@ public class PayChannelStrategyWepayImpl implements IPayChannelStrategy { ...@@ -105,7 +105,7 @@ public class PayChannelStrategyWepayImpl implements IPayChannelStrategy {
@Override @Override
public DragonPayOrderQueryRespDto checkOrderStatus(String code) { public DragonPayOrderQueryRespDto checkOrderStatus(String code) {
DragonOrdersDto ordersDto = dataUtils.getPayOrderByCode(code); DragonOrdersDto ordersDto = dataUtils.getPayOrderByCode(code);
DragonPayOrderQueryRespDto respDto = wepayStrategyContext.getStrategy(ordersDto.getPaymentType()).checkOrderStatus(code); DragonPayOrderQueryRespDto respDto = wepayStrategyContext.getStrategy(DragonConstant.PayTypeEnum.getEnumByCode(ordersDto.getPaymentType()).getDeviceFrom()).checkOrderStatus(code);
return respDto; return respDto;
} }
......
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;
...@@ -9,6 +10,7 @@ import org.apache.http.client.methods.CloseableHttpResponse; ...@@ -9,6 +10,7 @@ import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity; import org.apache.http.entity.StringEntity;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
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;
...@@ -27,9 +29,12 @@ import java.util.TreeMap; ...@@ -27,9 +29,12 @@ import java.util.TreeMap;
*/ */
@Slf4j @Slf4j
@Component @Component
public class WepayBiz { public class WepayBiz extends DragonPayBiz{
@Value("${liquidnet.dragon.wepay.merchantId}") @Value("${liquidnet.dragon.wepay.merchantId}")
private String merchantId; private String merchantId;
@Autowired
private WepayBiz wepayBiz;
/** /**
* 订单查询 * 订单查询
* *
...@@ -65,6 +70,7 @@ public class WepayBiz { ...@@ -65,6 +70,7 @@ public class WepayBiz {
}catch (Exception e){ }catch (Exception e){
log.error(e.getMessage()); log.error(e.getMessage());
} }
return respDto; return respDto;
} }
} }
...@@ -67,6 +67,9 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy { ...@@ -67,6 +67,9 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy {
//构造自定义返回参数 //构造自定义返回参数
this.buildResponseDto(respPayDto,respWepayDto); this.buildResponseDto(respPayDto,respWepayDto);
//支付订单持久化
wepayBiz.buildPayOrders(dragonPayBaseReqDto,respPayDto);
return ResponseDto.success(respPayDto); return ResponseDto.success(respPayDto);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
......
...@@ -106,10 +106,7 @@ public class PayController { ...@@ -106,10 +106,7 @@ public class PayController {
}) })
@ResponseBody @ResponseBody
public ResponseDto<DragonPayOrderQueryRespDto> checkOrder(@RequestParam(value = "code") @NotNull(message = "支付编号不能为空!") String code){ public ResponseDto<DragonPayOrderQueryRespDto> checkOrder(@RequestParam(value = "code") @NotNull(message = "支付编号不能为空!") String code){
DragonPayOrderQueryRespDto respDto = new DragonPayOrderQueryRespDto(); DragonPayOrderQueryRespDto respDto = dragonOrdersService.checkOrderStatusByCode(code);
respDto.setCode(code);
respDto.setOrderCode("");
respDto.setStatus(DragonConstant.PayStatusEnum.STATUS_PAID.getCode());
return ResponseDto.success(respDto); return ResponseDto.success(respDto);
} }
} }
package com.liquidnet.service.dragon.service.impl; package com.liquidnet.service.dragon.service.impl;
import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.commons.lang.util.IDGenerator; import com.liquidnet.commons.lang.util.IDGenerator;
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.PayChannelStrategyContext; import com.liquidnet.service.dragon.channel.strategy.PayChannelStrategyContext;
import com.liquidnet.service.dragon.constant.DragonConstant;
import com.liquidnet.service.dragon.constant.DragonErrorCodeEnum;
import com.liquidnet.service.dragon.dto.DragonOrdersDto;
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 com.liquidnet.service.dragon.dto.DragonPayOrderQueryRespDto; import com.liquidnet.service.dragon.dto.DragonPayOrderQueryRespDto;
import com.liquidnet.service.dragon.service.IDragonOrdersService; import com.liquidnet.service.dragon.service.IDragonOrdersService;
import com.liquidnet.service.dragon.utils.DataUtils;
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.data.redis.connection.stream.MapRecord; import org.springframework.data.redis.connection.stream.MapRecord;
...@@ -26,6 +32,9 @@ public class DragonOrdersServiceImpl implements IDragonOrdersService { ...@@ -26,6 +32,9 @@ public class DragonOrdersServiceImpl implements IDragonOrdersService {
@Autowired @Autowired
private PayChannelStrategyContext payChannelStrategyContext; private PayChannelStrategyContext payChannelStrategyContext;
@Autowired
private DataUtils dataUtils;
@Override @Override
public void sendRedisQueue() { public void sendRedisQueue() {
try { try {
...@@ -52,7 +61,11 @@ public class DragonOrdersServiceImpl implements IDragonOrdersService { ...@@ -52,7 +61,11 @@ public class DragonOrdersServiceImpl implements IDragonOrdersService {
@Override @Override
public DragonPayOrderQueryRespDto checkOrderStatusByCode(String code) { public DragonPayOrderQueryRespDto checkOrderStatusByCode(String code) {
return null; DragonOrdersDto ordersDto = dataUtils.getPayOrderByCode(code);
if(StringUtil.isEmpty(ordersDto)){
throw new LiquidnetServiceException(DragonErrorCodeEnum.TRADE_ERROR_NOT_EXISTS.getCode(),DragonErrorCodeEnum.TRADE_ERROR_NOT_EXISTS.getMessage());
}
return payChannelStrategyContext.getStrategy(DragonConstant.PayTypeEnum.getEnumByCode(ordersDto.getPaymentType()).getPayType()).checkOrderStatus(code);
} }
@Override @Override
......
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