33333333333
This commit is contained in:
@@ -329,32 +329,70 @@ public class PayController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping(value = "/trd/notify/v8")
|
@RequestMapping(value = "/trd/notify/wx/{type}", method = {RequestMethod.POST, RequestMethod.GET})
|
||||||
@Operation(hidden = true)
|
@Operation(hidden = true)
|
||||||
@Log(title = "第三方支付回调V8", businessType = BusinessType.OTHER, isSaveDb = false)
|
@Log(title = "第三方微信支付回调", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||||
@SaIgnore
|
@SaIgnore
|
||||||
public String trdNotifyUrlV8(HttpServletRequest request) {
|
public String trdWxNotifyUrl(HttpServletRequest request,@PathVariable("type") String type) {
|
||||||
try {
|
try {
|
||||||
TrdPayTypeEnum trdPayTypeEnum = TrdPayTypeEnum.V8;
|
if(type == null){
|
||||||
|
log.error("收到第三方微信支付回调,支付类型为空");
|
||||||
|
return "failure";
|
||||||
|
}
|
||||||
|
TrdPayTypeEnum trdPayTypeEnum = TrdPayTypeEnum.getByCode(type.toUpperCase());
|
||||||
|
if(trdPayTypeEnum == null){
|
||||||
|
log.error("收到第三方微信支付回调,未找到支付类型 type={}",type);
|
||||||
|
return "failure";
|
||||||
|
}
|
||||||
Map<String, String> params = AliPayApi.toMap(request);
|
Map<String, String> params = AliPayApi.toMap(request);
|
||||||
log.info("收到第三方支付回调 {}:{}",trdPayTypeEnum.name(), JSON.toJSONString(params));
|
log.info("收到第三方微信支付回调 {}:{}",trdPayTypeEnum.name(), JSON.toJSONString(params));
|
||||||
NotifyResp notifyResp = trdPayManager.getNotifyResp(params, trdPayTypeEnum);
|
NotifyResp notifyResp = trdPayManager.getNotifyResp(params, trdPayTypeEnum);
|
||||||
if(!notifyResp.isSuccess()){
|
if(!notifyResp.isSuccess()){
|
||||||
return "failure";
|
return "failure";
|
||||||
}
|
}
|
||||||
payManager.callBack(notifyResp.getOrderNo(),notifyResp.getTrdOrderNo(),params,notifyResp.getPayTypeEnum().name(), PayTypeEnum.TRD);
|
payManager.callBack(notifyResp.getOrderNo(),notifyResp.getTrdOrderNo(),params,notifyResp.getPayTypeEnum().name(), PayTypeEnum.WX);
|
||||||
return trdPayTypeEnum.getNotifyResp();
|
return trdPayTypeEnum.getNotifyResp();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("第三方支付回调失败! V8", e);
|
log.error("第三方支付微信回调失败! type={}",type, e);
|
||||||
|
return "failure";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/trd/notify/ali/{type}", method = {RequestMethod.POST, RequestMethod.GET})
|
||||||
|
@Operation(hidden = true)
|
||||||
|
@Log(title = "第三方支付支付宝回调", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||||
|
@SaIgnore
|
||||||
|
public String trdAliNotifyUrl(HttpServletRequest request,@PathVariable("type") String type) {
|
||||||
|
try {
|
||||||
|
if(type == null){
|
||||||
|
log.error("收到第三方支付支付宝回调,支付类型为空");
|
||||||
|
return "failure";
|
||||||
|
}
|
||||||
|
TrdPayTypeEnum trdPayTypeEnum = TrdPayTypeEnum.getByCode(type.toUpperCase());
|
||||||
|
if(trdPayTypeEnum == null){
|
||||||
|
log.error("收到第三方支付支付宝回调,未找到支付类型 type={}",type);
|
||||||
|
return "failure";
|
||||||
|
}
|
||||||
|
Map<String, String> params = AliPayApi.toMap(request);
|
||||||
|
log.info("收到第三方支付支付宝回调 {}:{}",trdPayTypeEnum.name(), JSON.toJSONString(params));
|
||||||
|
NotifyResp notifyResp = trdPayManager.getNotifyResp(params, trdPayTypeEnum);
|
||||||
|
if(!notifyResp.isSuccess()){
|
||||||
|
return "failure";
|
||||||
|
}
|
||||||
|
payManager.callBack(notifyResp.getOrderNo(),notifyResp.getTrdOrderNo(),params,notifyResp.getPayTypeEnum().name(), PayTypeEnum.ALI);
|
||||||
|
return trdPayTypeEnum.getNotifyResp();
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("第三方支付支付宝回调失败! type={}",type, e);
|
||||||
return "failure";
|
return "failure";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@PostMapping(value = "/trd/notify/{type}")
|
@RequestMapping(value = "/trd/notify/{type}", method = {RequestMethod.POST, RequestMethod.GET})
|
||||||
@Operation(hidden = true)
|
@Operation(hidden = true)
|
||||||
@Log(title = "第三方支付回调", businessType = BusinessType.OTHER, isSaveDb = false)
|
@Log(title = "第三方支付回调", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||||
@SaIgnore
|
@SaIgnore
|
||||||
|
@Deprecated
|
||||||
public String trdNotifyUrl(HttpServletRequest request,@PathVariable("type") String type) {
|
public String trdNotifyUrl(HttpServletRequest request,@PathVariable("type") String type) {
|
||||||
try {
|
try {
|
||||||
if(type == null){
|
if(type == null){
|
||||||
|
|||||||
@@ -24,11 +24,11 @@ public class EncryptionFilter implements Filter {
|
|||||||
IGNORE_URL.add("/api/pay/wx/notify");
|
IGNORE_URL.add("/api/pay/wx/notify");
|
||||||
IGNORE_URL.add("/api/yx/im/notify");
|
IGNORE_URL.add("/api/yx/im/notify");
|
||||||
IGNORE_URL.add("/api/yx/im/check");
|
IGNORE_URL.add("/api/yx/im/check");
|
||||||
TrdPayTypeEnum[] values = TrdPayTypeEnum.values();
|
IGNORE_URL.add("/api/pay/trd/notify/wx/*");
|
||||||
for (TrdPayTypeEnum value : values) {
|
IGNORE_URL.add("/api/pay/trd/notify/ali/*");
|
||||||
IGNORE_URL.add(value.getNotifyPath());
|
IGNORE_URL.add("/api/pay/trd/notify/*");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final AntPathMatcher ANT_PATH_MATCHER = new AntPathMatcher();
|
private static final AntPathMatcher ANT_PATH_MATCHER = new AntPathMatcher();
|
||||||
|
|
||||||
private static final String KEY = "UPsfSES4456W8ILv";
|
private static final String KEY = "UPsfSES4456W8ILv";
|
||||||
|
|||||||
@@ -215,4 +215,6 @@ public class ConsumerManager {
|
|||||||
}
|
}
|
||||||
return resp;
|
return resp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -273,7 +273,7 @@ public class PayManager {
|
|||||||
return resp;
|
return resp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updatePayType(String orderNo, String type) {
|
public void updatePayType(String orderNo, String type,PlatformTypeEnum typeEnum) {
|
||||||
OrderTypeEnum orderTypeEnum = OrderNoUtil.getType(orderNo);
|
OrderTypeEnum orderTypeEnum = OrderNoUtil.getType(orderNo);
|
||||||
if(orderTypeEnum == null){
|
if(orderTypeEnum == null){
|
||||||
log.error("订单类型有误!orderNo={}",orderNo);
|
log.error("订单类型有误!orderNo={}",orderNo);
|
||||||
@@ -283,11 +283,13 @@ public class PayManager {
|
|||||||
case VIP_ORDER_SUB:
|
case VIP_ORDER_SUB:
|
||||||
vipOrderService.update(Wrappers.lambdaUpdate(VipOrder.class)
|
vipOrderService.update(Wrappers.lambdaUpdate(VipOrder.class)
|
||||||
.eq(VipOrder::getOrderNo, orderNo)
|
.eq(VipOrder::getOrderNo, orderNo)
|
||||||
|
.set(VipOrder::getPlatformType, typeEnum == null ? null : typeEnum.getCode())
|
||||||
.set(VipOrder::getAppid, type));
|
.set(VipOrder::getAppid, type));
|
||||||
break;
|
break;
|
||||||
case RECHARGE_ORDER_SUB:
|
case RECHARGE_ORDER_SUB:
|
||||||
rechargeOrderService.update(Wrappers.lambdaUpdate(RechargeOrder.class)
|
rechargeOrderService.update(Wrappers.lambdaUpdate(RechargeOrder.class)
|
||||||
.eq(RechargeOrder::getOrderNo, orderNo)
|
.eq(RechargeOrder::getOrderNo, orderNo)
|
||||||
|
.set(RechargeOrder::getPlatformType, typeEnum == null ? null : typeEnum.getCode())
|
||||||
.set(RechargeOrder::getAppid, type));
|
.set(RechargeOrder::getAppid, type));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.ruoyi.cai.pay;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
|
@Deprecated
|
||||||
public enum PayTypeEnum {
|
public enum PayTypeEnum {
|
||||||
ALI(1),
|
ALI(1),
|
||||||
WX(2),
|
WX(2),
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public class PayTotalServiceImpl extends ServiceImpl<PayTotalMapper,PayTotal> im
|
|||||||
one = new PayTotal();
|
one = new PayTotal();
|
||||||
one.setPayId(appId);
|
one.setPayId(appId);
|
||||||
one.setDate(LocalDate.now());
|
one.setDate(LocalDate.now());
|
||||||
one.setPayType(payTypeEnum.getCode());
|
one.setPayType(payTypeEnum == null ? PayTypeEnum.ALI.getCode() : payTypeEnum.getCode());
|
||||||
one.setMoney(BigDecimal.ZERO);
|
one.setMoney(BigDecimal.ZERO);
|
||||||
this.save(one);
|
this.save(one);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import com.ruoyi.cai.mapper.PayTrdConfigMapper;
|
|||||||
import com.ruoyi.cai.pay.PayManager;
|
import com.ruoyi.cai.pay.PayManager;
|
||||||
import com.ruoyi.cai.pay.PayOrderInfoDTO;
|
import com.ruoyi.cai.pay.PayOrderInfoDTO;
|
||||||
import com.ruoyi.cai.pay.PayReturnResp;
|
import com.ruoyi.cai.pay.PayReturnResp;
|
||||||
|
import com.ruoyi.cai.pay.PlatformTypeEnum;
|
||||||
import com.ruoyi.cai.service.OrderLogsService;
|
import com.ruoyi.cai.service.OrderLogsService;
|
||||||
import com.ruoyi.cai.service.PayTrdConfigService;
|
import com.ruoyi.cai.service.PayTrdConfigService;
|
||||||
import com.ruoyi.cai.trdpay.TrdPayManager;
|
import com.ruoyi.cai.trdpay.TrdPayManager;
|
||||||
@@ -87,7 +88,7 @@ public class PayTrdConfigServiceImpl extends ServiceImpl<PayTrdConfigMapper, Pay
|
|||||||
throw new ServiceException("未开启支付,请联系客服");
|
throw new ServiceException("未开启支付,请联系客服");
|
||||||
}
|
}
|
||||||
log.info("使用支付 {} wx={}", payTrdConfig.getType(), wx);
|
log.info("使用支付 {} wx={}", payTrdConfig.getType(), wx);
|
||||||
payManager.updatePayType(dto.getOrderNo(), payTrdConfig.getType());
|
payManager.updatePayType(dto.getOrderNo(), payTrdConfig.getType(), wx?PlatformTypeEnum.WX:PlatformTypeEnum.ALI);
|
||||||
return trdPayManager.createOrderAliMerge(dto, payTrdConfig, typeEnum, wx);
|
return trdPayManager.createOrderAliMerge(dto, payTrdConfig, typeEnum, wx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import com.ruoyi.cai.domain.PayTrdConfig;
|
|||||||
import com.ruoyi.cai.pay.PayOrderInfoDTO;
|
import com.ruoyi.cai.pay.PayOrderInfoDTO;
|
||||||
import com.ruoyi.cai.pay.PayReturnResp;
|
import com.ruoyi.cai.pay.PayReturnResp;
|
||||||
import com.ruoyi.cai.trdpay.dto.NotifyResp;
|
import com.ruoyi.cai.trdpay.dto.NotifyResp;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -19,6 +20,15 @@ public interface PayTrdService {
|
|||||||
return wx?"四方微信支付":"四方支付宝支付";
|
return wx?"四方微信支付":"四方支付宝支付";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default String getGatewayUrl(PayTrdConfig payTrdConfig){
|
||||||
|
TrdPayTypeEnum type = getType();
|
||||||
|
String gatewayUrl = type.getGatewayUrl();
|
||||||
|
if (StringUtils.isNotBlank(payTrdConfig.getGatewayUrl())) {
|
||||||
|
gatewayUrl = payTrdConfig.getGatewayUrl();
|
||||||
|
}
|
||||||
|
return gatewayUrl;
|
||||||
|
}
|
||||||
|
|
||||||
PayReturnResp createOrderAli(PayOrderInfoDTO payOrderInfoDTO, PayTrdConfig payTrdConfig,boolean wx);
|
PayReturnResp createOrderAli(PayOrderInfoDTO payOrderInfoDTO, PayTrdConfig payTrdConfig,boolean wx);
|
||||||
|
|
||||||
NotifyResp getNotifyResp(Map<String,String> sourceData);
|
NotifyResp getNotifyResp(Map<String,String> sourceData);
|
||||||
|
|||||||
@@ -108,6 +108,7 @@ public enum TrdPayTypeEnum {
|
|||||||
private final String notifyPath;
|
private final String notifyPath;
|
||||||
private final String notifyResp;
|
private final String notifyResp;
|
||||||
|
|
||||||
|
|
||||||
TrdPayTypeEnum(String gatewayUrl, String createOrderUrl, String queryOrderUrl, String notifyPath, String notifyResp) {
|
TrdPayTypeEnum(String gatewayUrl, String createOrderUrl, String queryOrderUrl, String notifyPath, String notifyResp) {
|
||||||
this.gatewayUrl = gatewayUrl;
|
this.gatewayUrl = gatewayUrl;
|
||||||
this.createOrderUrl = createOrderUrl;
|
this.createOrderUrl = createOrderUrl;
|
||||||
@@ -116,7 +117,6 @@ public enum TrdPayTypeEnum {
|
|||||||
this.notifyResp = notifyResp;
|
this.notifyResp = notifyResp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static TrdPayTypeEnum getByCode(String type) {
|
public static TrdPayTypeEnum getByCode(String type) {
|
||||||
TrdPayTypeEnum[] values = TrdPayTypeEnum.values();
|
TrdPayTypeEnum[] values = TrdPayTypeEnum.values();
|
||||||
for (TrdPayTypeEnum value : values) {
|
for (TrdPayTypeEnum value : values) {
|
||||||
@@ -126,4 +126,15 @@ public enum TrdPayTypeEnum {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final static String NOTIFY_WX_PATH = "/api/pay/trd/notify/wx/";
|
||||||
|
private final static String NOTIFY_ALI_PATH = "/api/pay/trd/notify/ali/";
|
||||||
|
|
||||||
|
public String getNotifyUrl(String domain,boolean wx){
|
||||||
|
if(wx){
|
||||||
|
return domain + NOTIFY_WX_PATH + name().toLowerCase();
|
||||||
|
}else{
|
||||||
|
return domain + NOTIFY_ALI_PATH + name().toLowerCase();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,13 +48,10 @@ public class PayTrdV1Service implements PayTrdService {
|
|||||||
params.put("productId", payTrdConfig.getProductId(wx));
|
params.put("productId", payTrdConfig.getProductId(wx));
|
||||||
params.put("mchOrderNo", payOrderInfoDTO.getOrderNo());
|
params.put("mchOrderNo", payOrderInfoDTO.getOrderNo());
|
||||||
params.put("amount", payOrderInfoDTO.getPriceFenStr());
|
params.put("amount", payOrderInfoDTO.getPriceFenStr());
|
||||||
String notifyUrl = payTrdConfig.getNotifyUrl() + type.getNotifyPath();
|
String notifyUrl = type.getNotifyUrl(payTrdConfig.getNotifyUrl(), wx);
|
||||||
params.put("notifyUrl", notifyUrl);
|
params.put("notifyUrl", notifyUrl);
|
||||||
String para = PayMd5Util.createParams(params, payTrdConfig.getSign());
|
String para = PayMd5Util.createParams(params, payTrdConfig.getSign());
|
||||||
String gatewayUrl = type.getGatewayUrl();
|
String gatewayUrl = getGatewayUrl(payTrdConfig);
|
||||||
if (StringUtils.isNotBlank(payTrdConfig.getGatewayUrl())) {
|
|
||||||
gatewayUrl = payTrdConfig.getGatewayUrl();
|
|
||||||
}
|
|
||||||
String createOrderUrl = gatewayUrl + type.getCreateOrderUrl();
|
String createOrderUrl = gatewayUrl + type.getCreateOrderUrl();
|
||||||
String url = createOrderUrl + "?" + para;
|
String url = createOrderUrl + "?" + para;
|
||||||
String body = rest.getForEntity(url, String.class).getBody();
|
String body = rest.getForEntity(url, String.class).getBody();
|
||||||
|
|||||||
@@ -57,13 +57,10 @@ public class PayTrdV2Service implements PayTrdService {
|
|||||||
params.put("subject",payOrderInfoDTO.getSubject());
|
params.put("subject",payOrderInfoDTO.getSubject());
|
||||||
params.put("body",payOrderInfoDTO.getBody());
|
params.put("body",payOrderInfoDTO.getBody());
|
||||||
params.put("currency","cny");
|
params.put("currency","cny");
|
||||||
String notifyUrl = payTrdConfig.getNotifyUrl() + type.getNotifyPath();
|
String notifyUrl = type.getNotifyUrl(payTrdConfig.getNotifyUrl(), wx);
|
||||||
params.put("notifyUrl", notifyUrl);
|
params.put("notifyUrl", notifyUrl);
|
||||||
String para = PayMd5Util.createParams(params, payTrdConfig.getSign());
|
String para = PayMd5Util.createParams(params, payTrdConfig.getSign());
|
||||||
String gatewayUrl = type.getGatewayUrl();
|
String gatewayUrl = getGatewayUrl(payTrdConfig);
|
||||||
if (StringUtils.isNotBlank(payTrdConfig.getGatewayUrl())) {
|
|
||||||
gatewayUrl = payTrdConfig.getGatewayUrl();
|
|
||||||
}
|
|
||||||
String createOrderUrl = gatewayUrl + type.getCreateOrderUrl();
|
String createOrderUrl = gatewayUrl + type.getCreateOrderUrl();
|
||||||
String url = createOrderUrl + "?" + para;
|
String url = createOrderUrl + "?" + para;
|
||||||
String body = rest.getForEntity(url, String.class).getBody();
|
String body = rest.getForEntity(url, String.class).getBody();
|
||||||
|
|||||||
@@ -46,13 +46,10 @@ public class PayTrdV3Service implements PayTrdService {
|
|||||||
params.put("productId", payTrdConfig.getProductId(wx));
|
params.put("productId", payTrdConfig.getProductId(wx));
|
||||||
params.put("mchOrderNo", payOrderInfoDTO.getOrderNo());
|
params.put("mchOrderNo", payOrderInfoDTO.getOrderNo());
|
||||||
params.put("amount", payOrderInfoDTO.getPriceFenStr());
|
params.put("amount", payOrderInfoDTO.getPriceFenStr());
|
||||||
String notifyUrl = payTrdConfig.getNotifyUrl() + type.getNotifyPath();
|
String notifyUrl = type.getNotifyUrl(payTrdConfig.getNotifyUrl(), wx);
|
||||||
params.put("notifyUrl", notifyUrl);
|
params.put("notifyUrl", notifyUrl);
|
||||||
String para = PayMd5Util.createParams(params, payTrdConfig.getSign());
|
String para = PayMd5Util.createParams(params, payTrdConfig.getSign());
|
||||||
String gatewayUrl = type.getGatewayUrl();
|
String gatewayUrl = getGatewayUrl(payTrdConfig);
|
||||||
if (StringUtils.isNotBlank(payTrdConfig.getGatewayUrl())) {
|
|
||||||
gatewayUrl = payTrdConfig.getGatewayUrl();
|
|
||||||
}
|
|
||||||
String createOrderUrl = gatewayUrl + type.getCreateOrderUrl();
|
String createOrderUrl = gatewayUrl + type.getCreateOrderUrl();
|
||||||
String url = createOrderUrl + "?" + para;
|
String url = createOrderUrl + "?" + para;
|
||||||
String body = rest.getForEntity(url, String.class).getBody();
|
String body = rest.getForEntity(url, String.class).getBody();
|
||||||
|
|||||||
@@ -45,14 +45,11 @@ public class PayTrdV4Service implements PayTrdService {
|
|||||||
params.put("tradeType", payTrdConfig.getProductId(wx));
|
params.put("tradeType", payTrdConfig.getProductId(wx));
|
||||||
params.put("merchantPayNo", payOrderInfoDTO.getOrderNo());
|
params.put("merchantPayNo", payOrderInfoDTO.getOrderNo());
|
||||||
params.put("amt", payOrderInfoDTO.getPrice().toString());
|
params.put("amt", payOrderInfoDTO.getPrice().toString());
|
||||||
String notifyUrl = payTrdConfig.getNotifyUrl() + type.getNotifyPath();
|
String notifyUrl = type.getNotifyUrl(payTrdConfig.getNotifyUrl(), wx);
|
||||||
params.put("notifyUrl", notifyUrl);
|
params.put("notifyUrl", notifyUrl);
|
||||||
params.put("goodsName",payOrderInfoDTO.getBody());
|
params.put("goodsName",payOrderInfoDTO.getBody());
|
||||||
String para = PayMd5Util.createParams(params, payTrdConfig.getSign());
|
String para = PayMd5Util.createParams(params, payTrdConfig.getSign());
|
||||||
String gatewayUrl = type.getGatewayUrl();
|
String gatewayUrl = getGatewayUrl(payTrdConfig);
|
||||||
if (StringUtils.isNotBlank(payTrdConfig.getGatewayUrl())) {
|
|
||||||
gatewayUrl = payTrdConfig.getGatewayUrl();
|
|
||||||
}
|
|
||||||
String createOrderUrl = gatewayUrl + type.getCreateOrderUrl();
|
String createOrderUrl = gatewayUrl + type.getCreateOrderUrl();
|
||||||
String url = createOrderUrl + "?" + para;
|
String url = createOrderUrl + "?" + para;
|
||||||
String body = rest.postForObject(url, null, String.class);
|
String body = rest.postForObject(url, null, String.class);
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import com.ruoyi.cai.domain.PayTrdConfig;
|
|||||||
import com.ruoyi.cai.pay.PayManager;
|
import com.ruoyi.cai.pay.PayManager;
|
||||||
import com.ruoyi.cai.pay.PayOrderInfoDTO;
|
import com.ruoyi.cai.pay.PayOrderInfoDTO;
|
||||||
import com.ruoyi.cai.pay.PayReturnResp;
|
import com.ruoyi.cai.pay.PayReturnResp;
|
||||||
|
import com.ruoyi.cai.pay.PayTypeEnum;
|
||||||
import com.ruoyi.cai.service.OrderLogsService;
|
import com.ruoyi.cai.service.OrderLogsService;
|
||||||
import com.ruoyi.cai.trdpay.PayMd5Util;
|
import com.ruoyi.cai.trdpay.PayMd5Util;
|
||||||
import com.ruoyi.cai.trdpay.PayTrdService;
|
import com.ruoyi.cai.trdpay.PayTrdService;
|
||||||
@@ -53,17 +54,14 @@ public class PayTrdV5Service implements PayTrdService {
|
|||||||
params.put("pay_orderid", payOrderInfoDTO.getOrderNo());
|
params.put("pay_orderid", payOrderInfoDTO.getOrderNo());
|
||||||
params.put("pay_applydate", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
params.put("pay_applydate", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||||
params.put("pay_bankcode", payTrdConfig.getProductId(wx));
|
params.put("pay_bankcode", payTrdConfig.getProductId(wx));
|
||||||
String notifyUrl = payTrdConfig.getNotifyUrl() + type.getNotifyPath();
|
String notifyUrl = type.getNotifyUrl(payTrdConfig.getNotifyUrl(), wx);
|
||||||
params.put("pay_notifyurl", notifyUrl);
|
params.put("pay_notifyurl", notifyUrl);
|
||||||
params.put("pay_amount", payOrderInfoDTO.getPriceYuanStr());
|
params.put("pay_amount", payOrderInfoDTO.getPriceYuanStr());
|
||||||
MultiValueMap<String, String> map = PayMd5Util.createParamsOfMap(params, payTrdConfig.getSign(), "pay_md5sign");
|
MultiValueMap<String, String> map = PayMd5Util.createParamsOfMap(params, payTrdConfig.getSign(), "pay_md5sign");
|
||||||
map.add("pay_productname",payOrderInfoDTO.getBody());
|
map.add("pay_productname",payOrderInfoDTO.getBody());
|
||||||
map.add("pay_ip", ServletUtils.getClientIP());
|
map.add("pay_ip", ServletUtils.getClientIP());
|
||||||
map.add("pay_userid", LoginHelper.getUserId()+"");
|
map.add("pay_userid", LoginHelper.getUserId()+"");
|
||||||
String gatewayUrl = type.getGatewayUrl();
|
String gatewayUrl = getGatewayUrl(payTrdConfig);
|
||||||
if (StringUtils.isNotBlank(payTrdConfig.getGatewayUrl())) {
|
|
||||||
gatewayUrl = payTrdConfig.getGatewayUrl();
|
|
||||||
}
|
|
||||||
String createOrderUrl = gatewayUrl + type.getCreateOrderUrl();
|
String createOrderUrl = gatewayUrl + type.getCreateOrderUrl();
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
||||||
@@ -105,30 +103,41 @@ public class PayTrdV5Service implements PayTrdService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject queryOrder(String orderNo, PayTrdConfig payTrdConfig) {
|
public JSONObject queryOrder(String orderNo, PayTrdConfig payTrdConfig) {
|
||||||
|
RestTemplate rest = RestTemplateUtil.getRest();
|
||||||
TrdPayTypeEnum type = getType();
|
TrdPayTypeEnum type = getType();
|
||||||
Map<String, String> params = new HashMap<>();
|
Map<String, String> params = new HashMap<>();
|
||||||
params.put("merchantId", payTrdConfig.getMchId());
|
params.put("pay_memberid", payTrdConfig.getMchId());
|
||||||
params.put("merchantPayNo", orderNo);
|
params.put("pay_orderid", orderNo);
|
||||||
String para = PayMd5Util.createParams(params,payTrdConfig.getSign());
|
MultiValueMap<String, String> map = PayMd5Util.createParamsOfMap(params, payTrdConfig.getSign(), "pay_md5sign");
|
||||||
String gatewayUrl = type.getGatewayUrl();
|
String gatewayUrl = getGatewayUrl(payTrdConfig);
|
||||||
if(StringUtils.isNotBlank(payTrdConfig.getGatewayUrl())){
|
|
||||||
gatewayUrl = payTrdConfig.getGatewayUrl();
|
|
||||||
}
|
|
||||||
String queryOrderUrl = gatewayUrl + type.getQueryOrderUrl();
|
String queryOrderUrl = gatewayUrl + type.getQueryOrderUrl();
|
||||||
String url = queryOrderUrl + "?" + para;
|
String body = RestTemplateUtil.postFormData(rest, queryOrderUrl, map);
|
||||||
String body = RestTemplateUtil.getRest().getForEntity(url, String.class).getBody();
|
|
||||||
JSONObject jsonObject = JSON.parseObject(body);
|
JSONObject jsonObject = JSON.parseObject(body);
|
||||||
if(jsonObject == null){
|
if(jsonObject == null){
|
||||||
log.error("第三方支付查询失败 返回数据为空 URL={}",url);
|
log.error("第三方支付查询失败 返回数据为空 URL={} query={}",queryOrderUrl,JSON.toJSONString(map));
|
||||||
throw new ServiceException("调用支付失败");
|
throw new ServiceException("调用支付失败");
|
||||||
}
|
}
|
||||||
log.info("第三方支付查询成功 V5 URL={}, body={}",url, body);
|
log.info("第三方支付查询成功 V5 URL={}, query={}, body={}",queryOrderUrl,JSON.toJSONString(map), body);
|
||||||
return jsonObject;
|
return jsonObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject resetOrder(String orderNo, PayTrdConfig payTrdConfig, boolean updateData) {
|
public JSONObject resetOrder(String orderNo, PayTrdConfig payTrdConfig, boolean updateData) {
|
||||||
throw new ServiceException("V5不支持订单查询");
|
JSONObject jsonObject = this.queryOrder(orderNo,payTrdConfig);
|
||||||
|
if(!"00".equals(jsonObject.getString("returncode"))){
|
||||||
|
log.info("第三方支付失败 V5统一支付查询订单失败 orderNo={}, payTrdConfig={}", orderNo, JSON.toJSONString(payTrdConfig));
|
||||||
|
throw new ServiceException("V5统一支付查询订单失败");
|
||||||
|
}
|
||||||
|
String status = jsonObject.getString("trade_state");
|
||||||
|
if("SUCCESS".equals(status)){
|
||||||
|
if(updateData){
|
||||||
|
Map<String, String> params = new HashMap<>();
|
||||||
|
params.put("str", "主动查询出来的结果");
|
||||||
|
params.put("data", JSON.toJSONString(jsonObject));
|
||||||
|
payManager.callBack(orderNo,null,params,"V5", null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return jsonObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,16 +50,13 @@ public class PayTrdV6Service implements PayTrdService {
|
|||||||
params.put("productId", payTrdConfig.getProductId(wx));
|
params.put("productId", payTrdConfig.getProductId(wx));
|
||||||
params.put("extra", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
params.put("extra", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||||
params.put("amount", payOrderInfoDTO.getPriceFenStr());
|
params.put("amount", payOrderInfoDTO.getPriceFenStr());
|
||||||
String notifyUrl = payTrdConfig.getNotifyUrl() + type.getNotifyPath();
|
String notifyUrl = type.getNotifyUrl(payTrdConfig.getNotifyUrl(), wx);
|
||||||
params.put("notifyUrl", notifyUrl);
|
params.put("notifyUrl", notifyUrl);
|
||||||
params.put("subject",payOrderInfoDTO.getSubject());
|
params.put("subject",payOrderInfoDTO.getSubject());
|
||||||
params.put("body",payOrderInfoDTO.getBody());
|
params.put("body",payOrderInfoDTO.getBody());
|
||||||
params.put("clientIp", ServletUtils.getClientIP());
|
params.put("clientIp", ServletUtils.getClientIP());
|
||||||
String para = PayMd5Util.createParams(params, payTrdConfig.getSign());
|
String para = PayMd5Util.createParams(params, payTrdConfig.getSign());
|
||||||
String gatewayUrl = type.getGatewayUrl();
|
String gatewayUrl = getGatewayUrl(payTrdConfig);
|
||||||
if (StringUtils.isNotBlank(payTrdConfig.getGatewayUrl())) {
|
|
||||||
gatewayUrl = payTrdConfig.getGatewayUrl();
|
|
||||||
}
|
|
||||||
String createOrderUrl = gatewayUrl + type.getCreateOrderUrl();
|
String createOrderUrl = gatewayUrl + type.getCreateOrderUrl();
|
||||||
String url = createOrderUrl + "?" + para;
|
String url = createOrderUrl + "?" + para;
|
||||||
String body = rest.postForObject(url, null, String.class);
|
String body = rest.postForObject(url, null, String.class);
|
||||||
|
|||||||
@@ -52,16 +52,13 @@ public class PayTrdV7Service implements PayTrdService {
|
|||||||
params.put("channelType", payTrdConfig.getProductId(wx));
|
params.put("channelType", payTrdConfig.getProductId(wx));
|
||||||
params.put("merchantOrderNo", payOrderInfoDTO.getOrderNo());
|
params.put("merchantOrderNo", payOrderInfoDTO.getOrderNo());
|
||||||
params.put("amount", payOrderInfoDTO.getPriceYuanStr());
|
params.put("amount", payOrderInfoDTO.getPriceYuanStr());
|
||||||
String notifyUrl = payTrdConfig.getNotifyUrl() + type.getNotifyPath();
|
String notifyUrl = type.getNotifyUrl(payTrdConfig.getNotifyUrl(), wx);
|
||||||
params.put("notifyUrl", notifyUrl);
|
params.put("notifyUrl", notifyUrl);
|
||||||
params.put("ip", ServletUtils.getClientIP());
|
params.put("ip", ServletUtils.getClientIP());
|
||||||
params.put("title", payOrderInfoDTO.getSubject());
|
params.put("title", payOrderInfoDTO.getSubject());
|
||||||
params.put("describe", payOrderInfoDTO.getBody());
|
params.put("describe", payOrderInfoDTO.getBody());
|
||||||
MultiValueMap<String, String> map = PayMd5Util.createParamsOfMap(params, payTrdConfig.getSign());
|
MultiValueMap<String, String> map = PayMd5Util.createParamsOfMap(params, payTrdConfig.getSign());
|
||||||
String gatewayUrl = type.getGatewayUrl();
|
String gatewayUrl = getGatewayUrl(payTrdConfig);
|
||||||
if (StringUtils.isNotBlank(payTrdConfig.getGatewayUrl())) {
|
|
||||||
gatewayUrl = payTrdConfig.getGatewayUrl();
|
|
||||||
}
|
|
||||||
String createOrderUrl = gatewayUrl + type.getCreateOrderUrl();
|
String createOrderUrl = gatewayUrl + type.getCreateOrderUrl();
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
||||||
|
|||||||
@@ -73,16 +73,13 @@ public class PayTrdV8Service implements PayTrdService {
|
|||||||
params.put("device", "mobile");
|
params.put("device", "mobile");
|
||||||
params.put("type", "alipay");
|
params.put("type", "alipay");
|
||||||
params.put("out_trade_no", payOrderInfoDTO.getOrderNo());
|
params.put("out_trade_no", payOrderInfoDTO.getOrderNo());
|
||||||
String notifyUrl = payTrdConfig.getNotifyUrl() + type.getNotifyPath();
|
String notifyUrl = type.getNotifyUrl(payTrdConfig.getNotifyUrl(), wx);
|
||||||
params.put("notify_url", notifyUrl);
|
params.put("notify_url", notifyUrl);
|
||||||
params.put("name", payOrderInfoDTO.getSubject());
|
params.put("name", payOrderInfoDTO.getSubject());
|
||||||
params.put("money", payOrderInfoDTO.getPriceYuanStr());
|
params.put("money", payOrderInfoDTO.getPriceYuanStr());
|
||||||
params.put("clientip", ServletUtils.getClientIP());
|
params.put("clientip", ServletUtils.getClientIP());
|
||||||
MultiValueMap<String, String> map = createParamsOfMap(params, payTrdConfig.getSign());
|
MultiValueMap<String, String> map = createParamsOfMap(params, payTrdConfig.getSign());
|
||||||
String gatewayUrl = type.getGatewayUrl();
|
String gatewayUrl = getGatewayUrl(payTrdConfig);
|
||||||
if (StringUtils.isNotBlank(payTrdConfig.getGatewayUrl())) {
|
|
||||||
gatewayUrl = payTrdConfig.getGatewayUrl();
|
|
||||||
}
|
|
||||||
String createOrderUrl = gatewayUrl + type.getCreateOrderUrl();
|
String createOrderUrl = gatewayUrl + type.getCreateOrderUrl();
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
||||||
|
|||||||
@@ -48,15 +48,12 @@ public class PayTrdV9Service implements PayTrdService {
|
|||||||
params.put("pay_orderid", payOrderInfoDTO.getOrderNo());
|
params.put("pay_orderid", payOrderInfoDTO.getOrderNo());
|
||||||
params.put("pay_applydate", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
params.put("pay_applydate", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||||
params.put("pay_bankcode", payTrdConfig.getProductId(wx));
|
params.put("pay_bankcode", payTrdConfig.getProductId(wx));
|
||||||
String notifyUrl = payTrdConfig.getNotifyUrl() + type.getNotifyPath();
|
String notifyUrl = type.getNotifyUrl(payTrdConfig.getNotifyUrl(), wx);
|
||||||
params.put("pay_notifyurl", notifyUrl);
|
params.put("pay_notifyurl", notifyUrl);
|
||||||
params.put("pay_amount", payOrderInfoDTO.getPriceYuanStr());
|
params.put("pay_amount", payOrderInfoDTO.getPriceYuanStr());
|
||||||
MultiValueMap<String, String> map = PayMd5Util.createParamsOfMap(params, payTrdConfig.getSign(), "pay_md5sign");
|
MultiValueMap<String, String> map = PayMd5Util.createParamsOfMap(params, payTrdConfig.getSign(), "pay_md5sign");
|
||||||
map.add("pay_productname",payOrderInfoDTO.getBody());
|
map.add("pay_productname",payOrderInfoDTO.getBody());
|
||||||
String gatewayUrl = type.getGatewayUrl();
|
String gatewayUrl = getGatewayUrl(payTrdConfig);
|
||||||
if (StringUtils.isNotBlank(payTrdConfig.getGatewayUrl())) {
|
|
||||||
gatewayUrl = payTrdConfig.getGatewayUrl();
|
|
||||||
}
|
|
||||||
String createOrderUrl = gatewayUrl + type.getCreateOrderUrl();
|
String createOrderUrl = gatewayUrl + type.getCreateOrderUrl();
|
||||||
String body = RestTemplateUtil.postFormData(rest, createOrderUrl, map);
|
String body = RestTemplateUtil.postFormData(rest, createOrderUrl, map);
|
||||||
JSONObject jsonObject = JSON.parseObject(body);
|
JSONObject jsonObject = JSON.parseObject(body);
|
||||||
|
|||||||
Reference in New Issue
Block a user