nnnn
This commit is contained in:
@@ -1,2 +1,6 @@
|
|||||||
ALTER TABLE cai_pay_trd_config
|
ALTER TABLE cai_pay_trd_config
|
||||||
ADD COLUMN `extend_data` JSON;
|
ADD COLUMN `extend_data` JSON;
|
||||||
|
|
||||||
|
-- 2025-11-25
|
||||||
|
ALTER TABLE cai_goods
|
||||||
|
ADD COLUMN `wx_amount` int default 0 not null comment '微信钻石';
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ public class PayController {
|
|||||||
@Operation(summary = "微信聚合支付")
|
@Operation(summary = "微信聚合支付")
|
||||||
@Log(title = "微信聚合支付", businessType = BusinessType.OTHER, isSaveDb = true)
|
@Log(title = "微信聚合支付", businessType = BusinessType.OTHER, isSaveDb = true)
|
||||||
public R<PayReturnResp> trdWxPay(@RequestBody PayControllerDTO dto){
|
public R<PayReturnResp> trdWxPay(@RequestBody PayControllerDTO dto){
|
||||||
PayOrderInfoDTO payOrderInfo = payManager.getOrderInfo(dto.getOrderNo());
|
PayOrderInfoDTO payOrderInfo = payManager.getOrderInfo(dto.getOrderNo(),true);
|
||||||
if(payOrderInfo == null){
|
if(payOrderInfo == null){
|
||||||
return R.fail(600,"支付失败,未找到订单");
|
return R.fail(600,"支付失败,未找到订单");
|
||||||
}
|
}
|
||||||
@@ -133,7 +133,7 @@ public class PayController {
|
|||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
orderLogsService.createBaseFail(dto.getOrderNo(),"四方支付宝支付",StringUtils.cat(e.getMessage(),2000));
|
orderLogsService.createBaseFail(dto.getOrderNo(),"四方支付宝支付",StringUtils.cat(e.getMessage(),2000));
|
||||||
log.error("微信聚合支付 使用第三方支付失败! dto={}",JSON.toJSONString(dto), e);
|
log.error("微信聚合支付 使用第三方支付失败! dto={}",JSON.toJSONString(dto), e);
|
||||||
return R.fail(600,"支付宝支付失败!");
|
return R.fail(600,"微信支付失败!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -157,7 +157,7 @@ public class PayController {
|
|||||||
if(payTrdConfig == null){
|
if(payTrdConfig == null){
|
||||||
return R.fail(600,"支付失败,未找到支付通道信息");
|
return R.fail(600,"支付失败,未找到支付通道信息");
|
||||||
}
|
}
|
||||||
PayOrderInfoDTO payOrderInfo = payManager.getOrderInfo(v14Token.getOrderNo());
|
PayOrderInfoDTO payOrderInfo = payManager.getOrderInfo(v14Token.getOrderNo(),true);
|
||||||
if(payOrderInfo == null){
|
if(payOrderInfo == null){
|
||||||
return R.fail(600,"支付失败,未找到订单");
|
return R.fail(600,"支付失败,未找到订单");
|
||||||
}
|
}
|
||||||
@@ -217,7 +217,7 @@ public class PayController {
|
|||||||
@Operation(summary = "支付宝聚合支付")
|
@Operation(summary = "支付宝聚合支付")
|
||||||
@Log(title = "支付宝聚合支付", businessType = BusinessType.OTHER, isSaveDb = true)
|
@Log(title = "支付宝聚合支付", businessType = BusinessType.OTHER, isSaveDb = true)
|
||||||
public R<PayReturnResp> trdAliPay(@RequestBody PayControllerDTO dto){
|
public R<PayReturnResp> trdAliPay(@RequestBody PayControllerDTO dto){
|
||||||
PayOrderInfoDTO payOrderInfo = payManager.getOrderInfo(dto.getOrderNo());
|
PayOrderInfoDTO payOrderInfo = payManager.getOrderInfo(dto.getOrderNo(),false);
|
||||||
if(payOrderInfo == null){
|
if(payOrderInfo == null){
|
||||||
return R.fail(600,"支付失败,未找到订单");
|
return R.fail(600,"支付失败,未找到订单");
|
||||||
}
|
}
|
||||||
@@ -276,7 +276,7 @@ public class PayController {
|
|||||||
@Operation(summary = "微信支付")
|
@Operation(summary = "微信支付")
|
||||||
@Log(title = "微信支付", businessType = BusinessType.OTHER, isSaveDb = true)
|
@Log(title = "微信支付", businessType = BusinessType.OTHER, isSaveDb = true)
|
||||||
public R<PayReturnResp> appPay(@RequestBody PayControllerDTO dto) {
|
public R<PayReturnResp> appPay(@RequestBody PayControllerDTO dto) {
|
||||||
PayOrderInfoDTO payOrderInfo = payManager.getOrderInfo(dto.getOrderNo());
|
PayOrderInfoDTO payOrderInfo = payManager.getOrderInfo(dto.getOrderNo(),true);
|
||||||
if(payOrderInfo == null){
|
if(payOrderInfo == null){
|
||||||
return R.fail(600,"支付失败,未找到订单");
|
return R.fail(600,"支付失败,未找到订单");
|
||||||
}
|
}
|
||||||
@@ -338,33 +338,33 @@ public class PayController {
|
|||||||
// @PostMapping(value = "/ali")
|
// @PostMapping(value = "/ali")
|
||||||
// @Operation(summary = "支付宝支付")
|
// @Operation(summary = "支付宝支付")
|
||||||
// @Log(title = "支付宝支付", businessType = BusinessType.OTHER, isSaveDb = true)
|
// @Log(title = "支付宝支付", businessType = BusinessType.OTHER, isSaveDb = true)
|
||||||
public R<PayReturnResp> aliPay(@RequestBody PayControllerDTO dto) {
|
// public R<PayReturnResp> aliPay(@RequestBody PayControllerDTO dto) {
|
||||||
PayOrderInfoDTO payOrderInfo = payManager.getOrderInfo(dto.getOrderNo());
|
// PayOrderInfoDTO payOrderInfo = payManager.getOrderInfo(dto.getOrderNo());
|
||||||
if(payOrderInfo == null){
|
// if(payOrderInfo == null){
|
||||||
return R.fail(600,"支付失败,未找到订单");
|
// return R.fail(600,"支付失败,未找到订单");
|
||||||
}
|
// }
|
||||||
try {
|
// try {
|
||||||
boolean b = payConfigManager.initAliPay();
|
// boolean b = payConfigManager.initAliPay();
|
||||||
if(!b){
|
// if(!b){
|
||||||
log.error("支付失败,未找到可用的支付宝配置");
|
// log.error("支付失败,未找到可用的支付宝配置");
|
||||||
return R.fail(600,"支付失败!未开通支付宝支付!");
|
// return R.fail(600,"支付失败!未开通支付宝支付!");
|
||||||
}
|
// }
|
||||||
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
|
// AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
|
||||||
model.setBody(payOrderInfo.getBody());
|
// model.setBody(payOrderInfo.getBody());
|
||||||
model.setSubject(payOrderInfo.getSubject());
|
// model.setSubject(payOrderInfo.getSubject());
|
||||||
model.setOutTradeNo(payOrderInfo.getOrderNo());
|
// model.setOutTradeNo(payOrderInfo.getOrderNo());
|
||||||
model.setTimeoutExpress("30m");
|
// model.setTimeoutExpress("30m");
|
||||||
model.setTotalAmount(payOrderInfo.getPrice().toString());
|
// model.setTotalAmount(payOrderInfo.getPrice().toString());
|
||||||
String notifyUrl = AliPayApiConfigKit.getAliPayApiConfig().getDomain();
|
// String notifyUrl = AliPayApiConfigKit.getAliPayApiConfig().getDomain();
|
||||||
String orderInfo = AliPayApi.appPayToResponse(model, notifyUrl+NOTIFY_ALI_URL).getBody();
|
// String orderInfo = AliPayApi.appPayToResponse(model, notifyUrl+NOTIFY_ALI_URL).getBody();
|
||||||
PayReturnResp resp = new PayReturnResp();
|
// PayReturnResp resp = new PayReturnResp();
|
||||||
resp.setData(orderInfo);
|
// resp.setData(orderInfo);
|
||||||
return R.ok(resp);
|
// return R.ok(resp);
|
||||||
} catch (AlipayApiException e) {
|
// } catch (AlipayApiException e) {
|
||||||
log.error("支付宝支付失败",e);
|
// log.error("支付宝支付失败",e);
|
||||||
return R.fail("支付宝支付失败,请联系客服");
|
// return R.fail("支付宝支付失败,请联系客服");
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
@PostMapping(value = "/wx/notify")
|
@PostMapping(value = "/wx/notify")
|
||||||
@Operation(hidden = true)
|
@Operation(hidden = true)
|
||||||
|
|||||||
@@ -68,6 +68,9 @@ public class SettingAppController {
|
|||||||
List<Goods> list = goodsService.list(Wrappers.lambdaQuery(Goods.class)
|
List<Goods> list = goodsService.list(Wrappers.lambdaQuery(Goods.class)
|
||||||
.eq(Goods::getStatus,0)
|
.eq(Goods::getStatus,0)
|
||||||
.orderByAsc(Goods::getPrice));
|
.orderByAsc(Goods::getPrice));
|
||||||
|
list.forEach(i -> {
|
||||||
|
i.setAliAmountDiff(i.getAmount() - i.getWxAmount());
|
||||||
|
});
|
||||||
vo.setGoods(list);
|
vo.setGoods(list);
|
||||||
return R.ok(vo);
|
return R.ok(vo);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.ruoyi.cai.domain;
|
package com.ruoyi.cai.domain;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
@@ -40,8 +41,12 @@ public class Goods implements Serializable {
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@Schema(description = "紫贝数量")
|
@Schema(description = "支付宝紫贝数量")
|
||||||
private Long amount;
|
private Long amount;
|
||||||
|
@Schema(description = "微信紫贝数量")
|
||||||
|
private Long wxAmount;
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Long aliAmountDiff;
|
||||||
/**
|
/**
|
||||||
* 状态 0 可用 1不可用
|
* 状态 0 可用 1不可用
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import com.ijpay.core.enums.SignType;
|
|||||||
import com.ijpay.core.kit.WxPayKit;
|
import com.ijpay.core.kit.WxPayKit;
|
||||||
import com.ijpay.wxpay.WxPayApi;
|
import com.ijpay.wxpay.WxPayApi;
|
||||||
import com.ijpay.wxpay.model.OrderQueryModel;
|
import com.ijpay.wxpay.model.OrderQueryModel;
|
||||||
|
import com.ruoyi.cai.domain.Goods;
|
||||||
import com.ruoyi.cai.domain.PayConfig;
|
import com.ruoyi.cai.domain.PayConfig;
|
||||||
import com.ruoyi.cai.domain.RechargeOrder;
|
import com.ruoyi.cai.domain.RechargeOrder;
|
||||||
import com.ruoyi.cai.domain.VipOrder;
|
import com.ruoyi.cai.domain.VipOrder;
|
||||||
@@ -21,10 +22,7 @@ import com.ruoyi.cai.dto.commom.consumer.RechargeConsumerResp;
|
|||||||
import com.ruoyi.cai.manager.AwardManager;
|
import com.ruoyi.cai.manager.AwardManager;
|
||||||
import com.ruoyi.cai.manager.ConsumerManager;
|
import com.ruoyi.cai.manager.ConsumerManager;
|
||||||
import com.ruoyi.cai.pay.model.PayQueryModel;
|
import com.ruoyi.cai.pay.model.PayQueryModel;
|
||||||
import com.ruoyi.cai.service.PayConfigService;
|
import com.ruoyi.cai.service.*;
|
||||||
import com.ruoyi.cai.service.PayTotalService;
|
|
||||||
import com.ruoyi.cai.service.RechargeOrderService;
|
|
||||||
import com.ruoyi.cai.service.VipOrderService;
|
|
||||||
import com.ruoyi.common.exception.ServiceException;
|
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;
|
||||||
@@ -51,6 +49,8 @@ public class PayManager {
|
|||||||
private PayConfigService payConfigService;
|
private PayConfigService payConfigService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private PayConfigManager payConfigManager;
|
private PayConfigManager payConfigManager;
|
||||||
|
@Autowired
|
||||||
|
private GoodsService goodsService;
|
||||||
|
|
||||||
public PayQueryModel queryOrder(PayConfig payConfig,String orderNo,String appid) throws AlipayApiException {
|
public PayQueryModel queryOrder(PayConfig payConfig,String orderNo,String appid) throws AlipayApiException {
|
||||||
if(PayTypeEnum.ALI.getCode().equals(payConfig.getPayType())){
|
if(PayTypeEnum.ALI.getCode().equals(payConfig.getPayType())){
|
||||||
@@ -161,7 +161,7 @@ public class PayManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public PayOrderInfoDTO getOrderInfo(String orderNo){
|
public PayOrderInfoDTO getOrderInfo(String orderNo,boolean wx){
|
||||||
OrderTypeEnum orderTypeEnum = OrderNoUtil.getType(orderNo);
|
OrderTypeEnum orderTypeEnum = OrderNoUtil.getType(orderNo);
|
||||||
if(orderTypeEnum == null){
|
if(orderTypeEnum == null){
|
||||||
log.error("订单类型有误!orderNo={}",orderNo);
|
log.error("订单类型有误!orderNo={}",orderNo);
|
||||||
@@ -194,6 +194,16 @@ public class PayManager {
|
|||||||
if(!PayStatusEnum.READY_PAY.getCode().equals(rechargeOrder.getPayStatus())){
|
if(!PayStatusEnum.READY_PAY.getCode().equals(rechargeOrder.getPayStatus())){
|
||||||
throw new ServiceException("订单状态有误,请重新下单支付");
|
throw new ServiceException("订单状态有误,请重新下单支付");
|
||||||
}
|
}
|
||||||
|
if(wx){
|
||||||
|
if(rechargeOrder.getRechargeId() != null){
|
||||||
|
Goods goods = goodsService.getById(rechargeOrder.getRechargeId());
|
||||||
|
if(goods != null){
|
||||||
|
rechargeOrderService.update(Wrappers.lambdaUpdate(RechargeOrder.class)
|
||||||
|
.eq(RechargeOrder::getId, rechargeOrder.getId())
|
||||||
|
.set(RechargeOrder::getRechargeCoin, goods.getWxAmount()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
dto = new PayOrderInfoDTO();
|
dto = new PayOrderInfoDTO();
|
||||||
dto.setBody(rechargeOrder.getRechargeName());
|
dto.setBody(rechargeOrder.getRechargeName());
|
||||||
dto.setSubject(rechargeOrder.getRechargeName());
|
dto.setSubject(rechargeOrder.getRechargeName());
|
||||||
|
|||||||
Reference in New Issue
Block a user