This commit is contained in:
77
2024-11-25 20:41:43 +08:00
parent fa1d6df347
commit 904dbbe37b
9 changed files with 93 additions and 38 deletions

View File

@@ -4,6 +4,7 @@ package com.ruoyi.web.controller.cai.admin.init;
import com.alibaba.fastjson2.JSONObject;
import com.dtflys.forest.annotation.JSONBody;
import com.ruoyi.cai.pay.PayOrderInfoDTO;
import com.ruoyi.cai.pay.PayReturnResp;
import com.ruoyi.cai.service.CitysService;
import com.ruoyi.cai.service.PayTrdConfigService;
import com.ruoyi.common.core.domain.R;
@@ -37,8 +38,8 @@ public class CityController {
@PostMapping("/createOrder")
public R<String> createOrder(@RequestBody PayOrderInfoDTO dto){
String orderAli = payTrdConfigService.createOrderAli(dto);
public R<Object> createOrder(@RequestBody PayOrderInfoDTO dto){
PayReturnResp orderAli = payTrdConfigService.createOrderAli(dto);
return R.ok(orderAli);
}

View File

@@ -76,22 +76,44 @@ public class PayController {
return R.ok(orderPayStatusResp);
}
@PostMapping(value = "/trdAli")
@Operation(summary = "第三方支付宝支付")
@Log(title = "第三方支付宝支付", businessType = BusinessType.OTHER, isSaveDb = true)
@PostMapping(value = "/merge/ali")
@Operation(summary = "支付宝聚合支付")
@Log(title = "支付宝聚合支付", businessType = BusinessType.OTHER, isSaveDb = true)
public R<PayReturnResp> trdWxPay(@RequestBody PayControllerDTO dto){
PayOrderInfoDTO payOrderInfo = payManager.getOrderInfo(dto.getOrderNo());
if(payOrderInfo == null){
return R.fail(600,"支付失败,未找到订单");
}
try {
String ali = payTrdConfigService.createOrderAli(payOrderInfo);
PayReturnResp payTrdReturnResp = new PayReturnResp();
payTrdReturnResp.setData(ali);
return R.ok(payTrdReturnResp);
}catch (Exception e){
log.error("第三方微信支付失败!",e);
return R.fail(600,"支付失败!微信支付通道失败");
Long userId = LoginHelper.getUserId();
boolean userTrdPay = trdPayManager.useTrdPay(userId);
if(userTrdPay){
try {
PayReturnResp orderAli = payTrdConfigService.createOrderAli(payOrderInfo);
return R.ok(orderAli);
}catch (Exception e){
log.error("第三方支付宝支付失败!",e);
return R.fail(600,"第三方支付宝支付失败!");
}
}else{
try {
boolean b = payConfigManager.initAliPay();
if(!b){
log.error("支付失败,未找到可用的支付宝配置");
return R.fail(600,"支付失败!未开通支付宝支付!");
}
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
model.setBody(payOrderInfo.getBody());
model.setSubject(payOrderInfo.getSubject());
model.setOutTradeNo(payOrderInfo.getOrderNo());
model.setTimeoutExpress("30m");
model.setTotalAmount(payOrderInfo.getPrice().toString());
String notifyUrl = AliPayApiConfigKit.getAliPayApiConfig().getDomain();
String orderInfo = AliPayApi.appPayToResponse(model, notifyUrl+NOTIFY_ALI_URL).getBody();
return R.ok(PayReturnResp.createApp(orderInfo));
} catch (AlipayApiException e) {
log.error("支付宝支付失败",e);
return R.fail("支付宝支付失败,请联系客服");
}
}
}
@@ -252,7 +274,7 @@ public class PayController {
public String trdNotifyUrlV1(HttpServletRequest request) {
try {
Map<String, String> params = AliPayApi.toMap(request);
log.info("第三方支付回调:{}",JSON.toJSONString(params));
log.info("第三方支付回调V1:{}",JSON.toJSONString(params));
String mchOrderNo = params.get("mchOrderNo");
String payOrderId = params.get("payOrderId");
String productId = params.get("productId");
@@ -272,7 +294,7 @@ public class PayController {
public String trdNotifyUrlV2(HttpServletRequest request) {
try {
Map<String, String> params = AliPayApi.toMap(request);
log.info("第三方支付回调:{}",JSON.toJSONString(params));
log.info("第三方支付回调V2:{}",JSON.toJSONString(params));
String mchOrderNo = params.get("mchOrderNo");
String payOrderId = params.get("payOrderId");
String productId = params.get("productId");

View File

@@ -55,12 +55,16 @@ public class SettingAppController {
@Operation(summary = "充值配置")
@Log(title = "充值配置", businessType = BusinessType.OTHER,isPrintResponseData = false, isSaveDb = false)
public R<SettingGoodsVo> goods(){
SettingGoodsVo vo = new SettingGoodsVo();
vo.setHasAlipayPay(systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.OPEN_ALI_PAY));
vo.setHasWechatPay(systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.OPEN_WX_PAY));
vo.setAlipayFirst(systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.ALI_PAY_FIRST));
boolean useTrdPay = trdPayManager.useTrdPay(LoginHelper.getUserId());
vo.setUseTrdPay(useTrdPay?1:0);
SettingGoodsVo vo = new SettingGoodsVo();
if(useTrdPay){ // 使用第三方支付
vo.setHasAlipayPay(systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.OPEN_ALI_PAY));
vo.setHasWechatPay(0);
}else{
vo.setHasAlipayPay(systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.OPEN_ALI_PAY));
vo.setHasWechatPay(systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.OPEN_WX_PAY));
}
vo.setAlipayFirst(systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.ALI_PAY_FIRST));
List<Goods> list = goodsService.list(Wrappers.lambdaQuery(Goods.class)
.eq(Goods::getStatus,0)
.orderByAsc(Goods::getPrice));

View File

@@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSONObject;
import com.alipay.api.AlipayApiException;
import com.ruoyi.cai.pay.PayManager;
import com.ruoyi.cai.pay.PayOrderInfoDTO;
import com.ruoyi.cai.pay.PayReturnResp;
import com.ruoyi.cai.service.PayTrdConfigService;
import jdk.nashorn.internal.runtime.regexp.JoniRegExp;
import lombok.extern.slf4j.Slf4j;
@@ -29,8 +30,8 @@ public class PayTest {
dto.setSubject("subject");
dto.setPrice(new BigDecimal("10"));
dto.setOrderNo("ORSKALKLASJDKLAS");
String orderAli = payTrdConfigService.createOrderAli(dto);
log.info(orderAli);
PayReturnResp orderAli = payTrdConfigService.createOrderAli(dto);
log.info(JSON.toJSONString(orderAli));
}
@Test