init
This commit is contained in:
@@ -55,20 +55,7 @@ public class ConsumeController {
|
|||||||
@PostMapping("/order/vip/create")
|
@PostMapping("/order/vip/create")
|
||||||
@Operation(summary = "创建VIP订单")
|
@Operation(summary = "创建VIP订单")
|
||||||
@Log(title = "创建VIP订单", businessType = BusinessType.OTHER, isSaveDb = true)
|
@Log(title = "创建VIP订单", businessType = BusinessType.OTHER, isSaveDb = true)
|
||||||
public R<OrderCreateVo> vipOrderCreate(@RequestBody AddRechargeOrderDto dto){
|
public R<OrderCreateVo> vipOrderCreate(@RequestBody AddVipOrderDto dto){
|
||||||
RechargeOrder order = rechargeOrderService.addRechargeOrder(dto);
|
|
||||||
OrderCreateVo vo = new OrderCreateVo();
|
|
||||||
vo.setPrice(order.getPrice());
|
|
||||||
vo.setOrderNo(order.getOrderNo());
|
|
||||||
vo.setOrderName(order.getRechargeName());
|
|
||||||
return R.ok(vo);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@PostMapping("/order/recharge/create")
|
|
||||||
@Operation(summary = "创建充值订单")
|
|
||||||
@Log(title = "创建充值订单", businessType = BusinessType.OTHER, isSaveDb = true)
|
|
||||||
public R<OrderCreateVo> giveGift(@RequestBody AddVipOrderDto dto){
|
|
||||||
VipOrder order = vipOrderService.addVipOrder(dto);
|
VipOrder order = vipOrderService.addVipOrder(dto);
|
||||||
OrderCreateVo vo = new OrderCreateVo();
|
OrderCreateVo vo = new OrderCreateVo();
|
||||||
vo.setPrice(order.getPrice());
|
vo.setPrice(order.getPrice());
|
||||||
@@ -76,4 +63,17 @@ public class ConsumeController {
|
|||||||
vo.setOrderName(order.getVipName());
|
vo.setOrderName(order.getVipName());
|
||||||
return R.ok(vo);
|
return R.ok(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping("/order/recharge/create")
|
||||||
|
@Operation(summary = "创建充值订单")
|
||||||
|
@Log(title = "创建充值订单", businessType = BusinessType.OTHER, isSaveDb = true)
|
||||||
|
public R<OrderCreateVo> rechargeOrderCreate(@RequestBody AddRechargeOrderDto dto){
|
||||||
|
RechargeOrder order = rechargeOrderService.addRechargeOrder(dto);
|
||||||
|
OrderCreateVo vo = new OrderCreateVo();
|
||||||
|
vo.setPrice(order.getPrice());
|
||||||
|
vo.setOrderNo(order.getOrderNo());
|
||||||
|
vo.setOrderName(order.getRechargeName());
|
||||||
|
return R.ok(vo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,6 +48,10 @@ 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());
|
||||||
|
if(payOrderInfo == null){
|
||||||
|
return R.fail(600,"支付失败,未找到订单");
|
||||||
|
}
|
||||||
PayConfig payConfig = payConfigManager.getWxConfig();
|
PayConfig payConfig = payConfigManager.getWxConfig();
|
||||||
String ip = ServletUtils.getClientIP();
|
String ip = ServletUtils.getClientIP();
|
||||||
Map<String, String> params = UnifiedOrderModel
|
Map<String, String> params = UnifiedOrderModel
|
||||||
@@ -55,9 +59,9 @@ public class PayController {
|
|||||||
.appid(dto.getWxAppId())
|
.appid(dto.getWxAppId())
|
||||||
.mch_id(payConfig.getWxMcid())
|
.mch_id(payConfig.getWxMcid())
|
||||||
.nonce_str(WxPayKit.generateStr())
|
.nonce_str(WxPayKit.generateStr())
|
||||||
.body("微信支付")
|
.body(payOrderInfo.getBody())
|
||||||
.out_trade_no(WxPayKit.generateStr())
|
.out_trade_no(WxPayKit.generateStr())
|
||||||
.total_fee("1000")
|
.total_fee(payOrderInfo.getPriceFenStr())
|
||||||
.spbill_create_ip(ip)
|
.spbill_create_ip(ip)
|
||||||
.notify_url(payConfig.getNotifyUrl())
|
.notify_url(payConfig.getNotifyUrl())
|
||||||
.trade_type(TradeType.APP.getTradeType())
|
.trade_type(TradeType.APP.getTradeType())
|
||||||
@@ -92,17 +96,21 @@ public class PayController {
|
|||||||
@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());
|
||||||
|
if(payOrderInfo == null){
|
||||||
|
return R.fail(600,"支付失败,未找到订单");
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
boolean b = payConfigManager.initAliPay();
|
boolean b = payConfigManager.initAliPay();
|
||||||
if(!b){
|
if(!b){
|
||||||
return R.fail("支付宝支付失败!请联系管理员");
|
return R.fail(600,"支付宝支付失败!请联系管理员");
|
||||||
}
|
}
|
||||||
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
|
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
|
||||||
model.setBody("我是测试数据-By Javen");
|
model.setBody(payOrderInfo.getBody());
|
||||||
model.setSubject("App支付测试-By Javen");
|
model.setSubject(payOrderInfo.getSubject());
|
||||||
model.setOutTradeNo(WxPayKit.generateStr());
|
model.setOutTradeNo(WxPayKit.generateStr());
|
||||||
model.setTimeoutExpress("30m");
|
model.setTimeoutExpress("30m");
|
||||||
model.setTotalAmount("0.01");
|
model.setTotalAmount(payOrderInfo.getPrice().toString());
|
||||||
String notifyUrl = AliPayApiConfigKit.getAliPayApiConfig().getServiceUrl();
|
String notifyUrl = AliPayApiConfigKit.getAliPayApiConfig().getServiceUrl();
|
||||||
String orderInfo = AliPayApi.appPayToResponse(model, notifyUrl).getBody();
|
String orderInfo = AliPayApi.appPayToResponse(model, notifyUrl).getBody();
|
||||||
PayReturnResp resp = new PayReturnResp();
|
PayReturnResp resp = new PayReturnResp();
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class PayControllerDTO {
|
public class PayControllerDTO {
|
||||||
@Schema(description = "订单号")
|
@Schema(description = "订单号")
|
||||||
private String tradeNo;
|
private String orderNo;
|
||||||
@Schema(description = "微信支付的时候需要传")
|
@Schema(description = "微信支付的时候需要传")
|
||||||
private String wxAppId;
|
private String wxAppId;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,16 @@
|
|||||||
package com.ruoyi.cai.pay;
|
package com.ruoyi.cai.pay;
|
||||||
|
|
||||||
|
import com.ruoyi.cai.domain.RechargeOrder;
|
||||||
|
import com.ruoyi.cai.domain.VipOrder;
|
||||||
import com.ruoyi.cai.dto.ConsumeResp;
|
import com.ruoyi.cai.dto.ConsumeResp;
|
||||||
import com.ruoyi.cai.dto.commom.consumer.RechargeConsumerResp;
|
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.service.PayTotalService;
|
import com.ruoyi.cai.service.PayTotalService;
|
||||||
|
import com.ruoyi.cai.service.RechargeOrderService;
|
||||||
import com.ruoyi.cai.service.VipOrderService;
|
import com.ruoyi.cai.service.VipOrderService;
|
||||||
|
import com.ruoyi.common.exception.ServiceException;
|
||||||
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@@ -21,10 +26,52 @@ public class PayManager {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ConsumerManager consumerManager;
|
private ConsumerManager consumerManager;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
private RechargeOrderService rechargeOrderService;
|
||||||
|
@Autowired
|
||||||
private AwardManager awardManager;
|
private AwardManager awardManager;
|
||||||
@Autowired
|
@Autowired
|
||||||
private PayTotalService payTotalService;
|
private PayTotalService payTotalService;
|
||||||
|
|
||||||
|
public PayOrderInfoDTO getOrderInfo(String orderNo){
|
||||||
|
OrderTypeEnum orderTypeEnum = OrderNoUtil.getType(orderNo);
|
||||||
|
if(orderTypeEnum == null){
|
||||||
|
log.error("订单类型有误!orderNo={}",orderNo);
|
||||||
|
throw new ServiceException("支付失败,请检查订单号");
|
||||||
|
}
|
||||||
|
PayOrderInfoDTO dto = null;
|
||||||
|
switch (orderTypeEnum) {
|
||||||
|
case VIP_ORDER_SUB:
|
||||||
|
VipOrder vipOrder = vipOrderService.getByOrderNo(orderNo);
|
||||||
|
if(vipOrder == null){
|
||||||
|
throw new ServiceException("订单不存在,请重新下单支付");
|
||||||
|
}
|
||||||
|
if(!PayStatusEnum.READY_PAY.getCode().equals(vipOrder.getPayStatus())){
|
||||||
|
throw new ServiceException("订单状态有误,请重新下单支付");
|
||||||
|
}
|
||||||
|
dto = new PayOrderInfoDTO();
|
||||||
|
dto.setBody(vipOrder.getVipName());
|
||||||
|
dto.setSubject(vipOrder.getVipName());
|
||||||
|
dto.setPrice(vipOrder.getPrice());
|
||||||
|
break;
|
||||||
|
case RECHARGE_ORDER_SUB:
|
||||||
|
RechargeOrder rechargeOrder = rechargeOrderService.getByOrderNo(orderNo);
|
||||||
|
if(rechargeOrder == null){
|
||||||
|
throw new ServiceException("订单不存在,请重新下单支付");
|
||||||
|
}
|
||||||
|
if(!PayStatusEnum.READY_PAY.getCode().equals(rechargeOrder.getPayStatus())){
|
||||||
|
throw new ServiceException("订单状态有误,请重新下单支付");
|
||||||
|
}
|
||||||
|
dto = new PayOrderInfoDTO();
|
||||||
|
dto.setBody(rechargeOrder.getRechargeName());
|
||||||
|
dto.setSubject(rechargeOrder.getRechargeName());
|
||||||
|
dto.setPrice(rechargeOrder.getPrice());
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return dto;
|
||||||
|
}
|
||||||
|
|
||||||
public void callBack(String orderNo){
|
public void callBack(String orderNo){
|
||||||
callBack(orderNo,null,null,null,null);
|
callBack(orderNo,null,null,null,null);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.ruoyi.cai.pay;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.NumberUtil;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class PayOrderInfoDTO {
|
||||||
|
private String body;
|
||||||
|
private String subject;
|
||||||
|
private BigDecimal price;
|
||||||
|
|
||||||
|
public String getPriceFenStr(){
|
||||||
|
return NumberUtil.mul(price,100).longValue()+"";
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user