33333333333

This commit is contained in:
777
2025-01-14 17:15:43 +08:00
parent 7db1c286a6
commit 205298f78b
20 changed files with 269 additions and 285 deletions

13
doc/2025-01-14.sql Normal file
View File

@@ -0,0 +1,13 @@
ALTER TABLE `cai_pay_trd_config`
ADD COLUMN `min_amount` decimal(20, 2) NOT NULL DEFAULT 0 AFTER `create_time`,
ADD COLUMN `max_amount` decimal(20, 2) NOT NULL DEFAULT 0 AFTER `min_amount`
ADD COLUMN `sort_by` int(10) NOT NULL DEFAULT 0 AFTER `min_amount`;
-- 菜单 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values(1879078121599889409, '订单日志', '1738084052270563330', '1', 'orderLogs', 'cai/orderLogs/index', 1, 0, 'C', '0', '0', 'cai:orderLogs:list', '#', 'admin', sysdate(), '', null, '订单日志菜单');
-- 按钮 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values(1879078121599889410, '订单日志查询', 1879078121599889409, '1', '#', '', 1, 0, 'F', '0', '0', 'cai:orderLogs:query', '#', 'admin', sysdate(), '', null, '');

View File

@@ -1,13 +1,16 @@
package com.ruoyi.web.controller.cai.admin; package com.ruoyi.web.controller.cai.admin;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.RechargeOrder; import com.ruoyi.cai.domain.RechargeOrder;
import com.ruoyi.cai.domain.User; import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.dto.admin.vo.RechargeOrderAdminVo; import com.ruoyi.cai.dto.admin.vo.RechargeOrderAdminVo;
import com.ruoyi.cai.service.PayTrdConfigService;
import com.ruoyi.cai.service.RechargeOrderService; import com.ruoyi.cai.service.RechargeOrderService;
import com.ruoyi.cai.service.UserService; import com.ruoyi.cai.service.UserService;
import com.ruoyi.cai.trdpay.TrdPayManager;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
@@ -15,6 +18,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.BeanConvertUtil; import com.ruoyi.common.utils.BeanConvertUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
@@ -37,6 +41,10 @@ public class RechargeOrderController extends BaseController {
private final RechargeOrderService rechargeOrderService; private final RechargeOrderService rechargeOrderService;
private final UserService userService; private final UserService userService;
@Autowired
private TrdPayManager trdPayManager;
@Autowired
private PayTrdConfigService payTrdConfigService;
/** /**
* 查询充值订单列表 * 查询充值订单列表
@@ -48,6 +56,19 @@ public class RechargeOrderController extends BaseController {
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@GetMapping("/checkPay")
public R<JSONObject> list(String orderNo, String payType) {
RechargeOrder order = rechargeOrderService.getByOrderNo(orderNo);
if(order == null){
return R.fail("订单不存在");
}
if(payType == null){
payType = order.getAppid();
}
JSONObject jsonObject = payTrdConfigService.resetOrder(order.getOrderNo(), payType, true);
return R.ok(jsonObject);
}
/** /**
* 获取充值订单详细信息 * 获取充值订单详细信息
* *

View File

@@ -105,7 +105,7 @@ public class PayController {
} }
log.info("支付宝聚合支付 使用第三方支付 dto={}",JSON.toJSONString(dto)); log.info("支付宝聚合支付 使用第三方支付 dto={}",JSON.toJSONString(dto));
PayReturnResp orderAli = payTrdConfigService.createOrderAli(payOrderInfo); PayReturnResp orderAli = payTrdConfigService.createOrderAli(payOrderInfo);
orderLogsService.createBaseSuccess(dto.getOrderNo(),"四方支付宝支付"); // orderLogsService.createBaseSuccess(dto.getOrderNo(),"四方支付宝支付");
return R.ok(orderAli); return R.ok(orderAli);
}catch (Exception e){ }catch (Exception e){
orderLogsService.createBaseFail(dto.getOrderNo(),"四方支付宝支付",StringUtils.cat(e.getMessage(),2000)); orderLogsService.createBaseFail(dto.getOrderNo(),"四方支付宝支付",StringUtils.cat(e.getMessage(),2000));

View File

@@ -2,10 +2,13 @@ package com.ruoyi.cai.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.OrderLogs; import com.ruoyi.cai.domain.OrderLogs;
import com.ruoyi.cai.service.OrderLogsService; import com.ruoyi.cai.service.OrderLogsService;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@@ -40,6 +43,16 @@ public class OrderLogsController extends BaseController {
return R.ok(list); return R.ok(list);
} }
/**
* 查询订单日志列表
*/
@GetMapping("/list")
public TableDataInfo<OrderLogs> list(OrderLogs bo, PageQuery pageQuery) {
Page<OrderLogs> page = orderLogsService.page(pageQuery.build(), Wrappers.lambdaQuery(OrderLogs.class).orderByDesc(OrderLogs::getCreateTime));
return TableDataInfo.build(page);
}
/** /**
* 获取订单日志详细信息 * 获取订单日志详细信息
* *

View File

@@ -66,7 +66,9 @@ public class PayTrdConfigController extends BaseController {
@RepeatSubmit() @RepeatSubmit()
@PostMapping() @PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody PayTrdConfig bo) { public R<Void> add(@Validated(AddGroup.class) @RequestBody PayTrdConfig bo) {
return toAjax(payTrdConfigService.save(bo)); boolean save = payTrdConfigService.save(bo);
payTrdConfigService.resetPayTrdConfig();
return toAjax(save);
} }
@SaCheckPermission("cai:payTrdConfig:edit") @SaCheckPermission("cai:payTrdConfig:edit")
@@ -75,6 +77,7 @@ public class PayTrdConfigController extends BaseController {
@PostMapping("/enableStatus") @PostMapping("/enableStatus")
public R<Void> enableStatus(@Validated(AddGroup.class) @RequestBody PayTrdConfig bo) { public R<Void> enableStatus(@Validated(AddGroup.class) @RequestBody PayTrdConfig bo) {
payTrdConfigService.enableStatus(bo.getId(), bo.getEnableStatus()); payTrdConfigService.enableStatus(bo.getId(), bo.getEnableStatus());
payTrdConfigService.resetPayTrdConfig();
return R.ok(); return R.ok();
} }
@@ -86,7 +89,9 @@ public class PayTrdConfigController extends BaseController {
@RepeatSubmit() @RepeatSubmit()
@PutMapping() @PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody PayTrdConfig bo) { public R<Void> edit(@Validated(EditGroup.class) @RequestBody PayTrdConfig bo) {
return toAjax(payTrdConfigService.updateById(bo)); boolean save = payTrdConfigService.updateById(bo);
payTrdConfigService.resetPayTrdConfig();
return toAjax(save);
} }
/** /**
@@ -99,6 +104,8 @@ public class PayTrdConfigController extends BaseController {
@DeleteMapping("/{ids}") @DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空") public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) { @PathVariable Long[] ids) {
return toAjax(payTrdConfigService.removeBatchByIds(Arrays.asList(ids))); boolean b = payTrdConfigService.removeBatchByIds(Arrays.asList(ids));
payTrdConfigService.resetPayTrdConfig();
return toAjax(b);
} }
} }

View File

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
/** /**
@@ -51,6 +52,11 @@ public class PayTrdConfig implements Serializable {
private String aliProductId; private String aliProductId;
private BigDecimal minAmount;
private BigDecimal maxAmount;
private Integer sortBy;
private Integer enableStatus; private Integer enableStatus;
/** /**
* 是否删除 * 是否删除

View File

@@ -272,4 +272,26 @@ public class PayManager {
} }
return resp; return resp;
} }
public void updatePayType(String orderNo, String type) {
OrderTypeEnum orderTypeEnum = OrderNoUtil.getType(orderNo);
if(orderTypeEnum == null){
log.error("订单类型有误orderNo={}",orderNo);
return;
}
switch (orderTypeEnum) {
case VIP_ORDER_SUB:
vipOrderService.update(Wrappers.lambdaUpdate(VipOrder.class)
.eq(VipOrder::getOrderNo, orderNo)
.set(VipOrder::getAppid, type));
break;
case RECHARGE_ORDER_SUB:
rechargeOrderService.update(Wrappers.lambdaUpdate(RechargeOrder.class)
.eq(RechargeOrder::getOrderNo, orderNo)
.set(RechargeOrder::getAppid, type));
break;
default:
break;
}
}
} }

View File

@@ -21,5 +21,5 @@ public interface OrderLogsService extends IService<OrderLogs> {
void createBaseSuccess(String orderNo, String stepName); void createBaseSuccess(String orderNo, String stepName);
void createAliPayLogs(String orderNo, String inParams, JSONObject jsonObject, TrdPayTypeEnum typeEnum); void createAliPayLogs(String orderNo, String inParams, JSONObject jsonObject, boolean success,TrdPayTypeEnum typeEnum);
} }

View File

@@ -13,6 +13,8 @@ import com.ruoyi.cai.pay.PayReturnResp;
* @date 2024-11-25 * @date 2024-11-25
*/ */
public interface PayTrdConfigService extends IService<PayTrdConfig> { public interface PayTrdConfigService extends IService<PayTrdConfig> {
void resetPayTrdConfig();
PayReturnResp createOrderAli(PayOrderInfoDTO dto); PayReturnResp createOrderAli(PayOrderInfoDTO dto);
JSONObject queryOrder(String orderNo, String trdPayType); JSONObject queryOrder(String orderNo, String trdPayType);

View File

@@ -49,7 +49,7 @@ public class OrderLogsServiceImpl extends ServiceImpl<OrderLogsMapper, OrderLogs
} }
@Override @Override
public void createAliPayLogs(String orderNo, String inParams, JSONObject jsonObject, TrdPayTypeEnum typeEnum){ public void createAliPayLogs(String orderNo, String inParams, JSONObject jsonObject, boolean success,TrdPayTypeEnum typeEnum){
OrderLogs orderLogs = new OrderLogs(); OrderLogs orderLogs = new OrderLogs();
orderLogs.setOrderNo(orderNo); orderLogs.setOrderNo(orderNo);
orderLogs.setStepName("四方支付宝支付请求日志"); orderLogs.setStepName("四方支付宝支付请求日志");
@@ -57,20 +57,7 @@ public class OrderLogsServiceImpl extends ServiceImpl<OrderLogsMapper, OrderLogs
orderLogs.setInParams(JSON.toJSONString(new UrlJson(inParams))); orderLogs.setInParams(JSON.toJSONString(new UrlJson(inParams)));
orderLogs.setOutParams(JSON.toJSONString(jsonObject)); orderLogs.setOutParams(JSON.toJSONString(jsonObject));
orderLogs.setFlagName(typeEnum.name()); orderLogs.setFlagName(typeEnum.name());
if(typeEnum == TrdPayTypeEnum.V1) { // V1 orderLogs.setSuccess(success?"成功":"失败");
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){
orderLogs.setSuccess("失败");
}
}else if(typeEnum == TrdPayTypeEnum.V2){
if(!"0".equals(jsonObject.getString("retCode"))){
orderLogs.setSuccess("失败");
}
}else if(typeEnum == TrdPayTypeEnum.V3){
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){
orderLogs.setSuccess("失败");
}
}
orderLogs.setSuccess("成功");
this.save(orderLogs); this.save(orderLogs);
} }

View File

@@ -18,6 +18,15 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicLong;
/** /**
* 四方支付配置Service业务层处理 * 四方支付配置Service业务层处理
* *
@@ -35,9 +44,26 @@ public class PayTrdConfigServiceImpl extends ServiceImpl<PayTrdConfigMapper, Pay
@Autowired @Autowired
private OrderLogsService orderLogsService; private OrderLogsService orderLogsService;
private final static Map<BigDecimal, AtomicLong> ACCOUNT_MAP = new ConcurrentHashMap<>();
private final static List<PayTrdConfig> PAY_TRD_CONFIG_LIST = new CopyOnWriteArrayList<>();
@PostConstruct
public void init(){
this.resetPayTrdConfig();
}
@Override
public void resetPayTrdConfig() {
PAY_TRD_CONFIG_LIST.clear();
List<PayTrdConfig> list = this.list(Wrappers.lambdaQuery(PayTrdConfig.class).orderByAsc(PayTrdConfig::getSortBy));
PAY_TRD_CONFIG_LIST.addAll(list);
}
@Override @Override
public PayReturnResp createOrderAli(PayOrderInfoDTO dto){ public PayReturnResp createOrderAli(PayOrderInfoDTO dto){
PayTrdConfig payTrdConfig = getEnableStatus(); // PayTrdConfig payTrdConfig = getEnableStatus();
PayTrdConfig payTrdConfig = getConfig(dto.getPrice());
if(payTrdConfig == null){ if(payTrdConfig == null){
throw new ServiceException("未开启支付,请联系客服"); throw new ServiceException("未开启支付,请联系客服");
} }
@@ -45,44 +71,43 @@ public class PayTrdConfigServiceImpl extends ServiceImpl<PayTrdConfigMapper, Pay
if(typeEnum == null){ if(typeEnum == null){
throw new ServiceException("未开启支付,请联系客服"); throw new ServiceException("未开启支付,请联系客服");
} }
PayReturnResp orderAliMerge = trdPayManager.createOrderAliMerge(dto, payTrdConfig, typeEnum); log.info("使用支付 {}", payTrdConfig.getType());
return orderAliMerge; payManager.updatePayType(dto.getOrderNo(), payTrdConfig.getType());
/* return trdPayManager.createOrderAliMerge(dto, payTrdConfig, typeEnum);
JSONObject jsonObject = trdPayManager.createOrderAli(dto, payTrdConfig, typeEnum);
if(jsonObject == null){
log.error("第三方支付失败 返回数据为空");
throw new ServiceException("调用支付失败");
} }
if(typeEnum == TrdPayTypeEnum.V1){ // V1
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){ private PayTrdConfig getConfig(BigDecimal amount){
log.info("第三方支付失败 V1统一支付失败失败 dto={}, payTrdConfig={}, typeEnum={}", JSON.toJSONString(dto), JSON.toJSONString(payTrdConfig),JSON.toJSONString(jsonObject)); List<PayTrdConfig> list = new ArrayList<>();
throw new ServiceException("调用支付失败"); for(PayTrdConfig payTrdConfig : PAY_TRD_CONFIG_LIST){
if(payTrdConfig.getEnableStatus() == 0){
continue;
} }
String payUrl = jsonObject.getJSONObject("payParams").getString("payUrl"); if(payTrdConfig.getMaxAmount().compareTo(BigDecimal.ZERO) == 0 && payTrdConfig.getMinAmount().compareTo(BigDecimal.ZERO) == 0){
return PayReturnResp.createH5(payUrl); list.add(payTrdConfig);
}else if(typeEnum == TrdPayTypeEnum.V2){ continue;
if(!"0".equals(jsonObject.getString("retCode"))){
log.info("第三方支付失败 V2统一支付失败失败 dto={}, payTrdConfig={}, typeEnum={}", JSON.toJSONString(dto), JSON.toJSONString(payTrdConfig),JSON.toJSONString(jsonObject));
throw new ServiceException("调用支付失败");
} }
String payMethod = jsonObject.getString("payMethod"); // 在范围内
if("alipayApp".equals(payMethod)){ if(payTrdConfig.getMinAmount().compareTo(amount) <= 0 && payTrdConfig.getMaxAmount().compareTo(amount) >= 0){
String appStr = jsonObject.getJSONObject("payParams").getString("appStr"); list.add(payTrdConfig);
return PayReturnResp.createApp(appStr);
} }
return PayReturnResp.createH5(JSON.toJSONString(jsonObject));
}else if(typeEnum == TrdPayTypeEnum.V3){
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){
log.info("第三方支付失败 V3统一支付失败失败 dto={}, payTrdConfig={}, typeEnum={}", JSON.toJSONString(dto), JSON.toJSONString(payTrdConfig),JSON.toJSONString(jsonObject));
throw new ServiceException("调用支付失败");
} }
String payUrl = jsonObject.getJSONObject("payParams").getString("payUrl"); if(list.isEmpty()){
return PayReturnResp.createH5(payUrl); return null;
} }
return null;*/ AtomicLong index = ACCOUNT_MAP.get(amount);
if(index == null){
index = new AtomicLong(0);
index.incrementAndGet();
ACCOUNT_MAP.put(amount,index);
return list.get(0);
}
long in = index.getAndIncrement();
long l = in % list.size();
return list.get((int) l);
} }
@Deprecated
private PayTrdConfig getEnableStatus(){ private PayTrdConfig getEnableStatus(){
return this.getOne(Wrappers.lambdaQuery(PayTrdConfig.class).eq(PayTrdConfig::getEnableStatus, 1) return this.getOne(Wrappers.lambdaQuery(PayTrdConfig.class).eq(PayTrdConfig::getEnableStatus, 1)
.eq(PayTrdConfig::getDeleteFlag, 0).last("limit 1")); .eq(PayTrdConfig::getDeleteFlag, 0).last("limit 1"));
@@ -109,87 +134,27 @@ public class PayTrdConfigServiceImpl extends ServiceImpl<PayTrdConfigMapper, Pay
TrdPayTypeEnum typeEnum = TrdPayTypeEnum.getByCode(trdPayType); TrdPayTypeEnum typeEnum = TrdPayTypeEnum.getByCode(trdPayType);
PayTrdConfig payTrdConfig = getConfigByPay(trdPayType); PayTrdConfig payTrdConfig = getConfigByPay(trdPayType);
if(typeEnum == null || payTrdConfig == null){ if(typeEnum == null || payTrdConfig == null){
throw new ServiceException("配置数据为空"); throw new ServiceException("未检测到支付方式");
} }
return trdPayManager.queryOrder(orderNo,payTrdConfig,typeEnum); return trdPayManager.queryOrder(orderNo,payTrdConfig,typeEnum);
} }
@Override @Override
public JSONObject resetOrder(String orderNo, String trdPayType,boolean updateData){ public JSONObject resetOrder(String orderNo, String trdPayType,boolean updateData){
// PayOrderInfoDTO orderInfo = payManager.getOrderInfo(orderNo);
// if(orderInfo == null){
// throw new ServiceException("订单不存在");
// }
// if(!PayTypeEnum.TRD.getCode().toString().equals(orderInfo.getPlatformType())){
// throw new ServiceException("订单不属于第三方支付");
// }
// String appid = orderInfo.getAppid();
TrdPayTypeEnum typeEnum = TrdPayTypeEnum.getByCode(trdPayType); TrdPayTypeEnum typeEnum = TrdPayTypeEnum.getByCode(trdPayType);
PayTrdConfig payTrdConfig = getConfigByPay(trdPayType); PayTrdConfig payTrdConfig = getConfigByPay(trdPayType);
if(typeEnum == null || payTrdConfig == null){ if(typeEnum == null || payTrdConfig == null){
throw new ServiceException("配置数据为空"); throw new ServiceException("未检测到支付方式");
} }
return trdPayManager.resetQuery(orderNo,payTrdConfig,typeEnum,updateData); return trdPayManager.resetQuery(orderNo,payTrdConfig,typeEnum,updateData);
/* JSONObject jsonObject = trdPayManager.queryOrder(orderNo,payTrdConfig,typeEnum);
if(typeEnum == TrdPayTypeEnum.V1){ // V1
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){
log.info("第三方支付失败 V1统一支付失败失败 orderNo={}, payTrdConfig={}, typeEnum={}", orderNo, JSON.toJSONString(payTrdConfig),JSON.toJSONString(typeEnum));
throw new ServiceException("调用支付失败");
}
Integer status = jsonObject.getInteger("status");
if(status != null && status.equals(2)){
String mchOrderNo = jsonObject.getString("mchOrderNo");
String payOrderId = jsonObject.getString("payOrderId");
String productId = jsonObject.getString("productId");
Map<String,String> objectJson = new HashMap<>();
for (String key : jsonObject.keySet()) {
objectJson.put(key, jsonObject.getString(key));
}
payManager.callBack(mchOrderNo,payOrderId,objectJson,"V1", PayTypeEnum.TRD);
}
return jsonObject;
}else if(typeEnum == TrdPayTypeEnum.V2){
if(!"0".equals(jsonObject.getString("retCode"))){
log.info("第三方支付失败 V2统一支付失败失败 orderNo={}, payTrdConfig={}, typeEnum={}", orderNo, JSON.toJSONString(payTrdConfig),JSON.toJSONString(typeEnum));
throw new ServiceException("调用支付失败");
}
Integer status = jsonObject.getInteger("status");
if(status != null && (status.equals(2) || status.equals(3))){
String mchOrderNo = jsonObject.getString("mchOrderNo");
String payOrderId = jsonObject.getString("payOrderId");
String productId = jsonObject.getString("productId");
Map<String,String> objectJson = new HashMap<>();
for (String key : jsonObject.keySet()) {
objectJson.put(key, jsonObject.getString(key));
}
payManager.callBack(mchOrderNo,payOrderId,objectJson,"V2", PayTypeEnum.TRD);
}
return jsonObject;
}else if(typeEnum == TrdPayTypeEnum.V3){ // V1
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){
log.info("第三方支付失败 V3统一支付失败失败 orderNo={}, payTrdConfig={}, typeEnum={}", orderNo, JSON.toJSONString(payTrdConfig),JSON.toJSONString(typeEnum));
throw new ServiceException("调用支付失败");
}
Integer status = jsonObject.getInteger("status");
if(status != null && status.equals(2)){
String mchOrderNo = jsonObject.getString("mchOrderNo");
String payOrderId = jsonObject.getString("payOrderId");
String productId = jsonObject.getString("productId");
Map<String,String> objectJson = new HashMap<>();
for (String key : jsonObject.keySet()) {
objectJson.put(key, jsonObject.getString(key));
}
payManager.callBack(mchOrderNo,payOrderId,objectJson,"V3", PayTypeEnum.TRD);
}
return jsonObject;
}
return jsonObject;*/
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void enableStatus(Long id, Integer enableStatus) { public void enableStatus(Long id, Integer enableStatus) {
if(enableStatus.equals(0)){ this.update(Wrappers.lambdaUpdate(PayTrdConfig.class).eq(PayTrdConfig::getId, id)
.set(PayTrdConfig::getEnableStatus, enableStatus));
/*if(enableStatus.equals(0)){
this.update(Wrappers.lambdaUpdate(PayTrdConfig.class).eq(PayTrdConfig::getId, id) this.update(Wrappers.lambdaUpdate(PayTrdConfig.class).eq(PayTrdConfig::getId, id)
.set(PayTrdConfig::getEnableStatus, enableStatus)); .set(PayTrdConfig::getEnableStatus, enableStatus));
} else if(enableStatus.equals(1)){ } else if(enableStatus.equals(1)){
@@ -198,7 +163,7 @@ public class PayTrdConfigServiceImpl extends ServiceImpl<PayTrdConfigMapper, Pay
.set(PayTrdConfig::getEnableStatus, 0)); .set(PayTrdConfig::getEnableStatus, 0));
this.update(Wrappers.lambdaUpdate(PayTrdConfig.class).eq(PayTrdConfig::getId, id) this.update(Wrappers.lambdaUpdate(PayTrdConfig.class).eq(PayTrdConfig::getId, id)
.set(PayTrdConfig::getEnableStatus, 1)); .set(PayTrdConfig::getEnableStatus, 1));
} }*/
} }
} }

View File

@@ -9,7 +9,9 @@ import com.ruoyi.cai.manager.SystemConfigManager;
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.service.AccountService; import com.ruoyi.cai.service.AccountService;
import com.ruoyi.cai.service.PayTrdConfigService;
import com.ruoyi.cai.trdpay.dto.NotifyResp; import com.ruoyi.cai.trdpay.dto.NotifyResp;
import com.ruoyi.common.exception.ServiceException;
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.http.client.BufferingClientHttpRequestFactory; import org.springframework.http.client.BufferingClientHttpRequestFactory;

View File

@@ -58,12 +58,9 @@ public class PayTrdV1Service implements PayTrdService {
String url = createOrderUrl + "?" + para; String url = createOrderUrl + "?" + para;
String body = rest.getForEntity(url, String.class).getBody(); String body = rest.getForEntity(url, String.class).getBody();
JSONObject jsonObject = JSON.parseObject(body); JSONObject jsonObject = JSON.parseObject(body);
orderLogsService.createAliPayLogs(payOrderInfoDTO.getOrderNo(), url, jsonObject, type); boolean success = checkSuccess(jsonObject);
if(jsonObject == null){ orderLogsService.createAliPayLogs(payOrderInfoDTO.getOrderNo(), url, jsonObject, success, type);
log.error("第三方支付失败 V1返回数据为空 url={}",url); if(!success){
throw new ServiceException("调用支付失败");
}
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){
log.info("第三方支付失败 V1统一支付失败失败 url={} body={}, payTrdConfig={}, typeEnum={}", url, body, JSON.toJSONString(payTrdConfig), JSON.toJSONString(jsonObject)); log.info("第三方支付失败 V1统一支付失败失败 url={} body={}, payTrdConfig={}, typeEnum={}", url, body, JSON.toJSONString(payTrdConfig), JSON.toJSONString(jsonObject));
throw new ServiceException("调用支付失败"); throw new ServiceException("调用支付失败");
} }
@@ -71,6 +68,16 @@ public class PayTrdV1Service implements PayTrdService {
return PayReturnResp.createH5(payUrl); return PayReturnResp.createH5(payUrl);
} }
private boolean checkSuccess(JSONObject jsonObject) {
if(jsonObject == null){
return false;
}
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){
return false;
}
return true;
}
@Override @Override
public NotifyResp getNotifyResp(Map<String, String> sourceData) { public NotifyResp getNotifyResp(Map<String, String> sourceData) {
String mchOrderNo = sourceData.get("mchOrderNo"); String mchOrderNo = sourceData.get("mchOrderNo");
@@ -112,8 +119,8 @@ public class PayTrdV1Service implements PayTrdService {
public JSONObject resetOrder(String orderNo, PayTrdConfig payTrdConfig,boolean updateData) { public JSONObject resetOrder(String orderNo, PayTrdConfig payTrdConfig,boolean updateData) {
JSONObject jsonObject = this.queryOrder(orderNo,payTrdConfig); JSONObject jsonObject = this.queryOrder(orderNo,payTrdConfig);
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){ if(!"SUCCESS".equals(jsonObject.getString("retCode"))){
log.info("第三方支付失败 V1统一支付失败失败 orderNo={}, payTrdConfig={}", orderNo, JSON.toJSONString(payTrdConfig)); log.info("第三方支付失败 V1统一支付查询订单失败 orderNo={}, payTrdConfig={}", orderNo, JSON.toJSONString(payTrdConfig));
throw new ServiceException("调用支付失败"); throw new ServiceException("V1统一支付查询订单失败");
} }
Integer status = jsonObject.getInteger("status"); Integer status = jsonObject.getInteger("status");
if(status != null && status.equals(2)){ if(status != null && status.equals(2)){

View File

@@ -68,12 +68,9 @@ public class PayTrdV2Service implements PayTrdService {
String url = createOrderUrl + "?" + para; String url = createOrderUrl + "?" + para;
String body = rest.getForEntity(url, String.class).getBody(); String body = rest.getForEntity(url, String.class).getBody();
JSONObject jsonObject = JSON.parseObject(body); JSONObject jsonObject = JSON.parseObject(body);
orderLogsService.createAliPayLogs(payOrderInfoDTO.getOrderNo(), url, jsonObject, type); boolean success = checkSuccess(jsonObject);
if(jsonObject == null){ orderLogsService.createAliPayLogs(payOrderInfoDTO.getOrderNo(), url, jsonObject, success,type);
log.error("第三方支付失败 V2返回数据为空 url={}",url); if(!success){
throw new ServiceException("调用支付失败");
}
if(!"0".equals(jsonObject.getString("retCode"))){
log.info("第三方支付失败 V2统一支付失败失败 url={} body={}, payTrdConfig={}, typeEnum={}", url, body, JSON.toJSONString(payTrdConfig), JSON.toJSONString(jsonObject)); log.info("第三方支付失败 V2统一支付失败失败 url={} body={}, payTrdConfig={}, typeEnum={}", url, body, JSON.toJSONString(payTrdConfig), JSON.toJSONString(jsonObject));
throw new ServiceException("调用支付失败"); throw new ServiceException("调用支付失败");
} }
@@ -85,6 +82,16 @@ public class PayTrdV2Service implements PayTrdService {
return PayReturnResp.createH5(JSON.toJSONString(jsonObject)); return PayReturnResp.createH5(JSON.toJSONString(jsonObject));
} }
private boolean checkSuccess(JSONObject jsonObject) {
if(jsonObject == null){
return false;
}
if(!"0".equals(jsonObject.getString("retCode"))){
return false;
}
return true;
}
@Override @Override
public NotifyResp getNotifyResp(Map<String, String> sourceData) { public NotifyResp getNotifyResp(Map<String, String> sourceData) {
String mchOrderNo = sourceData.get("mchOrderNo"); String mchOrderNo = sourceData.get("mchOrderNo");
@@ -124,8 +131,8 @@ public class PayTrdV2Service implements PayTrdService {
public JSONObject resetOrder(String orderNo, PayTrdConfig payTrdConfig, boolean updateData) { public JSONObject resetOrder(String orderNo, PayTrdConfig payTrdConfig, boolean updateData) {
JSONObject jsonObject = this.queryOrder(orderNo,payTrdConfig); JSONObject jsonObject = this.queryOrder(orderNo,payTrdConfig);
if(!"0".equals(jsonObject.getString("retCode"))){ if(!"0".equals(jsonObject.getString("retCode"))){
log.info("第三方支付失败 V2统一支付失败失败 orderNo={}, payTrdConfig={}", orderNo, JSON.toJSONString(payTrdConfig)); log.info("第三方支付失败 V2统一支付查询订单失败 orderNo={}, payTrdConfig={}", orderNo, JSON.toJSONString(payTrdConfig));
throw new ServiceException("调用支付失败"); throw new ServiceException("V2统一支付查询订单失败");
} }
Integer status = jsonObject.getInteger("status"); Integer status = jsonObject.getInteger("status");
if(status != null && (status.equals(2) || status.equals(3))){ if(status != null && (status.equals(2) || status.equals(3))){

View File

@@ -57,12 +57,9 @@ public class PayTrdV3Service implements PayTrdService {
String url = createOrderUrl + "?" + para; String url = createOrderUrl + "?" + para;
String body = rest.getForEntity(url, String.class).getBody(); String body = rest.getForEntity(url, String.class).getBody();
JSONObject jsonObject = JSON.parseObject(body); JSONObject jsonObject = JSON.parseObject(body);
orderLogsService.createAliPayLogs(payOrderInfoDTO.getOrderNo(), url, jsonObject, type); boolean success = checkSuccess(jsonObject);
if(jsonObject == null){ orderLogsService.createAliPayLogs(payOrderInfoDTO.getOrderNo(), url, jsonObject, success, type);
log.error("第三方支付失败 V3 返回数据为空 url={}",url); if(!success){
throw new ServiceException("调用支付失败");
}
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){
log.info("第三方支付失败 V3 统一支付失败失败 url={} body={}, payTrdConfig={}, typeEnum={}", url,body, JSON.toJSONString(payTrdConfig), JSON.toJSONString(jsonObject)); log.info("第三方支付失败 V3 统一支付失败失败 url={} body={}, payTrdConfig={}, typeEnum={}", url,body, JSON.toJSONString(payTrdConfig), JSON.toJSONString(jsonObject));
throw new ServiceException("调用支付失败"); throw new ServiceException("调用支付失败");
} }
@@ -70,6 +67,16 @@ public class PayTrdV3Service implements PayTrdService {
return PayReturnResp.createH5(payUrl); return PayReturnResp.createH5(payUrl);
} }
private boolean checkSuccess(JSONObject jsonObject) {
if(jsonObject == null){
return false;
}
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){
return false;
}
return true;
}
@Override @Override
public NotifyResp getNotifyResp(Map<String, String> sourceData) { public NotifyResp getNotifyResp(Map<String, String> sourceData) {
String mchOrderNo = sourceData.get("mchOrderNo"); String mchOrderNo = sourceData.get("mchOrderNo");
@@ -111,8 +118,8 @@ public class PayTrdV3Service implements PayTrdService {
public JSONObject resetOrder(String orderNo, PayTrdConfig payTrdConfig, boolean updateData) { public JSONObject resetOrder(String orderNo, PayTrdConfig payTrdConfig, boolean updateData) {
JSONObject jsonObject = this.queryOrder(orderNo,payTrdConfig); JSONObject jsonObject = this.queryOrder(orderNo,payTrdConfig);
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){ if(!"SUCCESS".equals(jsonObject.getString("retCode"))){
log.info("第三方支付失败 V3统一支付失败失败 orderNo={}, payTrdConfig={}", orderNo, JSON.toJSONString(payTrdConfig)); log.info("第三方支付失败 V3统一支付查询订单失败 orderNo={}, payTrdConfig={}", orderNo, JSON.toJSONString(payTrdConfig));
throw new ServiceException("调用支付失败"); throw new ServiceException("V3统一支付查询订单失败");
} }
Integer status = jsonObject.getInteger("status"); Integer status = jsonObject.getInteger("status");
if(status != null && status.equals(2)){ if(status != null && status.equals(2)){

View File

@@ -57,12 +57,9 @@ public class PayTrdV4Service implements PayTrdService {
String url = createOrderUrl + "?" + para; String url = createOrderUrl + "?" + para;
String body = rest.postForObject(url, null, String.class); String body = rest.postForObject(url, null, String.class);
JSONObject jsonObject = JSON.parseObject(body); JSONObject jsonObject = JSON.parseObject(body);
orderLogsService.createAliPayLogs(payOrderInfoDTO.getOrderNo(), url, jsonObject, type); boolean success = checkSuccess(jsonObject);
if(jsonObject == null){ orderLogsService.createAliPayLogs(payOrderInfoDTO.getOrderNo(), url, jsonObject,success, type);
log.error("第三方支付失败 V4 返回数据为空 url={}",url); if(!success){
throw new ServiceException("调用支付失败");
}
if(!"0000".equals(jsonObject.getString("code"))){
log.info("第三方支付失败 V4 统一支付失败失败 url={} body={}, payTrdConfig={}, typeEnum={}", url, body, JSON.toJSONString(payTrdConfig), JSON.toJSONString(jsonObject)); log.info("第三方支付失败 V4 统一支付失败失败 url={} body={}, payTrdConfig={}, typeEnum={}", url, body, JSON.toJSONString(payTrdConfig), JSON.toJSONString(jsonObject));
throw new ServiceException("调用支付失败"); throw new ServiceException("调用支付失败");
} }
@@ -70,6 +67,16 @@ public class PayTrdV4Service implements PayTrdService {
return PayReturnResp.createH5(payUrl); return PayReturnResp.createH5(payUrl);
} }
private boolean checkSuccess(JSONObject jsonObject) {
if(jsonObject == null){
return false;
}
if(!"0000".equals(jsonObject.getString("code"))){
return false;
}
return true;
}
@Override @Override
public NotifyResp getNotifyResp(Map<String, String> sourceData) { public NotifyResp getNotifyResp(Map<String, String> sourceData) {
String mchOrderNo = sourceData.get("merchantPayNo"); String mchOrderNo = sourceData.get("merchantPayNo");

View File

@@ -29,6 +29,7 @@ import java.util.Map;
@Service @Service
@Slf4j @Slf4j
@Deprecated
public class PayTrdV5Service implements PayTrdService { public class PayTrdV5Service implements PayTrdService {
@Autowired @Autowired
@@ -65,18 +66,24 @@ public class PayTrdV5Service implements PayTrdService {
String url = createOrderUrl + "?" + para; String url = createOrderUrl + "?" + para;
String body = rest.postForObject(url, null, String.class); String body = rest.postForObject(url, null, String.class);
JSONObject jsonObject = JSON.parseObject(body); JSONObject jsonObject = JSON.parseObject(body);
orderLogsService.createAliPayLogs(payOrderInfoDTO.getOrderNo(), url, jsonObject, type); boolean success = checkSuccess(jsonObject);
if(jsonObject == null){ orderLogsService.createAliPayLogs(payOrderInfoDTO.getOrderNo(), url, jsonObject, success, type);
log.error("第三方支付失败 V5 返回数据为空 url={}",url); if(!success){
throw new ServiceException("调用支付失败");
}
if(!"1".equals(jsonObject.getString("status"))){
log.info("第三方支付失败 V5 统一支付失败失败 url={} body={}, payTrdConfig={}, typeEnum={}", url, body, JSON.toJSONString(payTrdConfig), JSON.toJSONString(jsonObject)); log.info("第三方支付失败 V5 统一支付失败失败 url={} body={}, payTrdConfig={}, typeEnum={}", url, body, JSON.toJSONString(payTrdConfig), JSON.toJSONString(jsonObject));
throw new ServiceException("调用支付失败"); throw new ServiceException("调用支付失败");
} }
String payUrl = jsonObject.getString("h5_url"); String payUrl = jsonObject.getString("h5_url");
return PayReturnResp.createH5(payUrl); return PayReturnResp.createH5(payUrl);
} }
private boolean checkSuccess(JSONObject jsonObject) {
if(jsonObject == null){
return false;
}
if(!"1".equals(jsonObject.getString("status"))){
return false;
}
return true;
}
@Override @Override
public NotifyResp getNotifyResp(Map<String, String> sourceData) { public NotifyResp getNotifyResp(Map<String, String> sourceData) {
@@ -118,25 +125,6 @@ public class PayTrdV5Service implements PayTrdService {
@Override @Override
public JSONObject resetOrder(String orderNo, PayTrdConfig payTrdConfig, boolean updateData) { public JSONObject resetOrder(String orderNo, PayTrdConfig payTrdConfig, boolean updateData) {
throw new ServiceException("V5不支持订单查询"); throw new ServiceException("V5不支持订单查询");
/*JSONObject jsonObject = this.queryOrder(orderNo,payTrdConfig);
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){
log.info("第三方支付失败 V5统一支付失败失败 orderNo={}, payTrdConfig={}", orderNo, JSON.toJSONString(payTrdConfig));
throw new ServiceException("调用支付失败");
}
Integer status = jsonObject.getInteger("status");
if(status != null && status.equals(1)){
String mchOrderNo = jsonObject.getString("mchOrderNo");
String payOrderId = jsonObject.getString("payOrderId");
String productId = jsonObject.getString("productId");
Map<String,String> objectJson = new HashMap<>();
for (String key : jsonObject.keySet()) {
objectJson.put(key, jsonObject.getString(key));
}
if(updateData){
payManager.callBack(mchOrderNo,payOrderId,objectJson,"V5", PayTypeEnum.TRD);
}
}
return jsonObject;*/
} }
} }

View File

@@ -64,12 +64,9 @@ public class PayTrdV6Service implements PayTrdService {
String url = createOrderUrl + "?" + para; String url = createOrderUrl + "?" + para;
String body = rest.postForObject(url, null, String.class); String body = rest.postForObject(url, null, String.class);
JSONObject jsonObject = JSON.parseObject(body); JSONObject jsonObject = JSON.parseObject(body);
orderLogsService.createAliPayLogs(payOrderInfoDTO.getOrderNo(), url, jsonObject, type); boolean success = checkSuccess(jsonObject);
if(jsonObject == null){ orderLogsService.createAliPayLogs(payOrderInfoDTO.getOrderNo(), url, jsonObject, success, type);
log.error("第三方支付失败 V6 返回数据为空 url={}",url); if(!success){
throw new ServiceException("调用支付失败");
}
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){
log.info("第三方支付失败 V6 统一支付失败失败 url={} body={}, payTrdConfig={}, typeEnum={}", url, body, JSON.toJSONString(payTrdConfig), JSON.toJSONString(jsonObject)); log.info("第三方支付失败 V6 统一支付失败失败 url={} body={}, payTrdConfig={}, typeEnum={}", url, body, JSON.toJSONString(payTrdConfig), JSON.toJSONString(jsonObject));
throw new ServiceException("调用支付失败"); throw new ServiceException("调用支付失败");
} }
@@ -77,6 +74,16 @@ public class PayTrdV6Service implements PayTrdService {
return PayReturnResp.createH5(payUrl); return PayReturnResp.createH5(payUrl);
} }
private boolean checkSuccess(JSONObject jsonObject) {
if(jsonObject == null){
return false;
}
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){
return false;
}
return true;
}
@Override @Override
public NotifyResp getNotifyResp(Map<String, String> sourceData) { public NotifyResp getNotifyResp(Map<String, String> sourceData) {
String mchOrderNo = sourceData.get("mchOrderNo"); String mchOrderNo = sourceData.get("mchOrderNo");
@@ -117,25 +124,6 @@ public class PayTrdV6Service implements PayTrdService {
@Override @Override
public JSONObject resetOrder(String orderNo, PayTrdConfig payTrdConfig, boolean updateData) { public JSONObject resetOrder(String orderNo, PayTrdConfig payTrdConfig, boolean updateData) {
throw new ServiceException("V6不支持订单查询"); throw new ServiceException("V6不支持订单查询");
/*JSONObject jsonObject = this.queryOrder(orderNo,payTrdConfig);
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){
log.info("第三方支付失败 V6统一支付失败失败 orderNo={}, payTrdConfig={}", orderNo, JSON.toJSONString(payTrdConfig));
throw new ServiceException("调用支付失败");
}
Integer status = jsonObject.getInteger("status");
if(status != null && status.equals(1)){
String mchOrderNo = jsonObject.getString("mchOrderNo");
String payOrderId = jsonObject.getString("payOrderId");
String productId = jsonObject.getString("productId");
Map<String,String> objectJson = new HashMap<>();
for (String key : jsonObject.keySet()) {
objectJson.put(key, jsonObject.getString(key));
}
if(updateData){
payManager.callBack(mchOrderNo,payOrderId,objectJson,"V6", PayTypeEnum.TRD);
}
}
return jsonObject;*/
} }
} }

View File

@@ -68,12 +68,9 @@ public class PayTrdV7Service implements PayTrdService {
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers); HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
String body = rest.postForObject(createOrderUrl, request, String.class); String body = rest.postForObject(createOrderUrl, request, String.class);
JSONObject jsonObject = JSON.parseObject(body); JSONObject jsonObject = JSON.parseObject(body);
orderLogsService.createAliPayLogs(payOrderInfoDTO.getOrderNo(), createOrderUrl+JSON.toJSONString(map), jsonObject, type); boolean success = checkSuccess(jsonObject);
if(jsonObject == null){ orderLogsService.createAliPayLogs(payOrderInfoDTO.getOrderNo(), createOrderUrl+JSON.toJSONString(map), jsonObject, success, type);
log.error("第三方支付失败 V7 返回数据为空 url={} params={}",createOrderUrl,JSON.toJSONString(map)); if(!success){
throw new ServiceException("调用支付失败");
}
if(!"1".equals(jsonObject.getString("code"))){
log.info("第三方支付失败 V7 统一支付失败失败 url={} params={} body={}, payTrdConfig={}, typeEnum={}", createOrderUrl,JSON.toJSONString(map), body, JSON.toJSONString(payTrdConfig), JSON.toJSONString(jsonObject)); log.info("第三方支付失败 V7 统一支付失败失败 url={} params={} body={}, payTrdConfig={}, typeEnum={}", createOrderUrl,JSON.toJSONString(map), body, JSON.toJSONString(payTrdConfig), JSON.toJSONString(jsonObject));
throw new ServiceException("调用支付失败"); throw new ServiceException("调用支付失败");
} }
@@ -81,6 +78,16 @@ public class PayTrdV7Service implements PayTrdService {
return PayReturnResp.createH5(payUrl); return PayReturnResp.createH5(payUrl);
} }
private boolean checkSuccess(JSONObject jsonObject) {
if(jsonObject == null){
return false;
}
if(!"1".equals(jsonObject.getString("code"))){
return false;
}
return true;
}
@Override @Override
public NotifyResp getNotifyResp(Map<String, String> sourceData) { public NotifyResp getNotifyResp(Map<String, String> sourceData) {
String mchOrderNo = sourceData.get("merchant_order_no"); String mchOrderNo = sourceData.get("merchant_order_no");
@@ -98,49 +105,11 @@ public class PayTrdV7Service implements PayTrdService {
@Override @Override
public JSONObject queryOrder(String orderNo, PayTrdConfig payTrdConfig) { public JSONObject queryOrder(String orderNo, PayTrdConfig payTrdConfig) {
throw new ServiceException("V7不支持订单查询"); throw new ServiceException("V7不支持订单查询");
/*TrdPayTypeEnum type = getType();
Map<String, String> params = new HashMap<>();
params.put("merchantId", payTrdConfig.getMchId());
params.put("merchantPayNo", orderNo);
String para = PayMd5Util.createParams(params,payTrdConfig.getSign());
String gatewayUrl = type.getGatewayUrl();
if(StringUtils.isNotBlank(payTrdConfig.getGatewayUrl())){
gatewayUrl = payTrdConfig.getGatewayUrl();
}
String queryOrderUrl = gatewayUrl + type.getQueryOrderUrl();
String url = queryOrderUrl + "?" + para;
String body = RestTemplateUtil.getRest().getForEntity(url, String.class).getBody();
JSONObject jsonObject = JSON.parseObject(body);
if(jsonObject == null){
log.error("第三方支付查询失败 返回数据为空 URL={}",url);
throw new ServiceException("调用支付失败");
}
log.info("第三方支付查询成功 V7 URL={}, body={}",url, body);
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("V7不支持订单查询"); throw new ServiceException("V7不支持订单查询");
/*JSONObject jsonObject = this.queryOrder(orderNo,payTrdConfig);
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){
log.info("第三方支付失败 V7统一支付失败失败 orderNo={}, payTrdConfig={}", orderNo, JSON.toJSONString(payTrdConfig));
throw new ServiceException("调用支付失败");
}
Integer status = jsonObject.getInteger("status");
if(status != null && status.equals(1)){
String mchOrderNo = jsonObject.getString("mchOrderNo");
String payOrderId = jsonObject.getString("payOrderId");
String productId = jsonObject.getString("productId");
Map<String,String> objectJson = new HashMap<>();
for (String key : jsonObject.keySet()) {
objectJson.put(key, jsonObject.getString(key));
}
if(updateData){
payManager.callBack(mchOrderNo,payOrderId,objectJson,"V7", PayTypeEnum.TRD);
}
}
return jsonObject;*/
} }
} }

View File

@@ -89,9 +89,10 @@ public class PayTrdV8Service implements PayTrdService {
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers); HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
String body = rest.postForObject(createOrderUrl, request, String.class); String body = rest.postForObject(createOrderUrl, request, String.class);
JSONObject jsonObject = JSON.parseObject(body); JSONObject jsonObject = JSON.parseObject(body);
orderLogsService.createAliPayLogs(payOrderInfoDTO.getOrderNo(), createOrderUrl+JSON.toJSONString(map), jsonObject, type); boolean success = checkSuccess(jsonObject);
if(jsonObject == null){ orderLogsService.createAliPayLogs(payOrderInfoDTO.getOrderNo(), createOrderUrl+JSON.toJSONString(map), jsonObject,success, type);
log.error("第三方支付失败 V8 返回数据为空 url={} params={}",createOrderUrl,JSON.toJSONString(map)); if(!success){
log.info("第三方支付失败 V8 统一支付失败失败 url={} params={} body={}, payTrdConfig={}, typeEnum={}", createOrderUrl,JSON.toJSONString(map), body, JSON.toJSONString(payTrdConfig), JSON.toJSONString(jsonObject));
throw new ServiceException("调用支付失败"); throw new ServiceException("调用支付失败");
} }
if(!"1".equals(jsonObject.getString("code"))){ if(!"1".equals(jsonObject.getString("code"))){
@@ -102,6 +103,16 @@ public class PayTrdV8Service implements PayTrdService {
return PayReturnResp.createH5(payUrl); return PayReturnResp.createH5(payUrl);
} }
private boolean checkSuccess(JSONObject jsonObject) {
if(jsonObject == null){
return false;
}
if(!"1".equals(jsonObject.getString("code"))){
return false;
}
return true;
}
@Override @Override
public NotifyResp getNotifyResp(Map<String, String> sourceData) { public NotifyResp getNotifyResp(Map<String, String> sourceData) {
String mchOrderNo = sourceData.get("out_trade_no"); String mchOrderNo = sourceData.get("out_trade_no");
@@ -119,49 +130,11 @@ public class PayTrdV8Service implements PayTrdService {
@Override @Override
public JSONObject queryOrder(String orderNo, PayTrdConfig payTrdConfig) { public JSONObject queryOrder(String orderNo, PayTrdConfig payTrdConfig) {
throw new ServiceException("V8不支持订单查询"); throw new ServiceException("V8不支持订单查询");
/*TrdPayTypeEnum type = getType();
Map<String, String> params = new HashMap<>();
params.put("merchantId", payTrdConfig.getMchId());
params.put("merchantPayNo", orderNo);
String para = PayMd5Util.createParams(params,payTrdConfig.getSign());
String gatewayUrl = type.getGatewayUrl();
if(StringUtils.isNotBlank(payTrdConfig.getGatewayUrl())){
gatewayUrl = payTrdConfig.getGatewayUrl();
}
String queryOrderUrl = gatewayUrl + type.getQueryOrderUrl();
String url = queryOrderUrl + "?" + para;
String body = RestTemplateUtil.getRest().getForEntity(url, String.class).getBody();
JSONObject jsonObject = JSON.parseObject(body);
if(jsonObject == null){
log.error("第三方支付查询失败 返回数据为空 URL={}",url);
throw new ServiceException("调用支付失败");
}
log.info("第三方支付查询成功 V8 URL={}, body={}",url, body);
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("V8不支持订单查询"); throw new ServiceException("V8不支持订单查询");
/*JSONObject jsonObject = this.queryOrder(orderNo,payTrdConfig);
if(!"SUCCESS".equals(jsonObject.getString("retCode"))){
log.info("第三方支付失败 V8统一支付失败失败 orderNo={}, payTrdConfig={}", orderNo, JSON.toJSONString(payTrdConfig));
throw new ServiceException("调用支付失败");
}
Integer status = jsonObject.getInteger("status");
if(status != null && status.equals(1)){
String mchOrderNo = jsonObject.getString("mchOrderNo");
String payOrderId = jsonObject.getString("payOrderId");
String productId = jsonObject.getString("productId");
Map<String,String> objectJson = new HashMap<>();
for (String key : jsonObject.keySet()) {
objectJson.put(key, jsonObject.getString(key));
}
if(updateData){
payManager.callBack(mchOrderNo,payOrderId,objectJson,"V8", PayTypeEnum.TRD);
}
}
return jsonObject;*/
} }
} }