This commit is contained in:
鲨鱼
2024-12-18 18:01:41 +08:00
parent e3b42216f1
commit 10a5f1c903
14 changed files with 334 additions and 4 deletions

View File

@@ -14,11 +14,13 @@ import com.ijpay.core.kit.HttpKit;
import com.ijpay.core.kit.WxPayKit;
import com.ijpay.wxpay.WxPayApi;
import com.ijpay.wxpay.model.UnifiedOrderModel;
import com.ruoyi.cai.domain.OrderLogs;
import com.ruoyi.cai.domain.PayConfig;
import com.ruoyi.cai.dto.app.vo.pay.OrderPayStatusResp;
import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.manager.SystemConfigManager;
import com.ruoyi.cai.pay.*;
import com.ruoyi.cai.service.OrderLogsService;
import com.ruoyi.cai.service.PayTrdConfigService;
import com.ruoyi.cai.trdpay.TrdPayManager;
import com.ruoyi.cai.trdpay.TrdPayProperties;
@@ -27,6 +29,7 @@ import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.common.utils.StringUtils;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
@@ -57,6 +60,8 @@ public class PayController {
private static final String NOTIFY_ALI_URL = "/api/pay/ali/notify";
@Autowired
private SystemConfigManager systemConfigManager;
@Autowired
private OrderLogsService orderLogsService;
// @GetMapping(value = "/checkPay")
@@ -92,12 +97,15 @@ public class PayController {
try {
boolean openAliPay = systemConfigManager.getSystemConfigOfBool(SystemConfigEnum.OPEN_ALI_PAY);
if(!openAliPay){
orderLogsService.createBaseFail(dto.getOrderNo(),"四方支付宝支付","第四方支付宝未开启");
return R.fail(600,"支付宝支付失败!未开启支付宝通道!");
}
log.info("支付宝聚合支付 使用第三方支付 dto={}",JSON.toJSONString(dto));
PayReturnResp orderAli = payTrdConfigService.createOrderAli(payOrderInfo);
orderLogsService.createBaseSuccess(dto.getOrderNo(),"四方支付宝支付");
return R.ok(orderAli);
}catch (Exception e){
orderLogsService.createBaseFail(dto.getOrderNo(),"四方支付宝支付",StringUtils.cat(e.getMessage(),2000));
log.error("支付宝聚合支付 使用第三方支付失败! dto={}",JSON.toJSONString(dto), e);
return R.fail(600,"支付宝支付失败!");
}
@@ -105,12 +113,14 @@ public class PayController {
try {
boolean openSourceAliPay = systemConfigManager.getSystemConfigOfBool(SystemConfigEnum.OPEN_SOURCE_ALI_PAY);
if(!openSourceAliPay){
orderLogsService.createBaseFail(dto.getOrderNo(),"支付宝支付","支付宝支付失败!未开启原生支付宝通道!");
return R.fail(600,"支付宝支付失败!未开启原生支付宝通道!");
}
log.info("支付宝聚合支付 使用原生支付 dto={}",JSON.toJSONString(dto));
boolean b = payConfigManager.initAliPay();
if(!b){
log.error("支付失败,未找到可用的支付宝配置");
orderLogsService.createBaseFail(dto.getOrderNo(),"支付宝支付","支付失败,未找到可用的支付宝配置");
return R.fail(600,"支付失败!未开通支付宝支付!");
}
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
@@ -121,9 +131,11 @@ public class PayController {
model.setTotalAmount(payOrderInfo.getPrice().toString());
String notifyUrl = AliPayApiConfigKit.getAliPayApiConfig().getDomain();
String orderInfo = AliPayApi.appPayToResponse(model, notifyUrl+NOTIFY_ALI_URL).getBody();
orderLogsService.createBaseSuccess(dto.getOrderNo(),"支付宝支付");
return R.ok(PayReturnResp.createApp(orderInfo));
} catch (AlipayApiException e) {
log.error("支付宝聚合支付 使用原生支付失败! dto={}",JSON.toJSONString(dto),e);
orderLogsService.createBaseFail(dto.getOrderNo(),"支付宝支付",StringUtils.cat(e.getMessage(),2000));
return R.fail("支付宝支付失败,请联系客服");
}
}
@@ -172,11 +184,13 @@ public class PayController {
String returnMsg = result.get("return_msg");
if (!WxPayKit.codeIsOk(returnCode)) {
log.error("微信支付失败 returnMsg={}",returnMsg);
orderLogsService.createBaseFail(dto.getOrderNo(),"微信支付",StringUtils.cat(returnMsg,2000));
return R.fail("微信支付失败,请联系客服");
}
String resultCode = result.get("result_code");
if (!WxPayKit.codeIsOk(resultCode)) {
log.error("微信支付失败 returnMsg={}",returnMsg);
orderLogsService.createBaseFail(dto.getOrderNo(),"微信支付",StringUtils.cat(returnMsg,2000));
return R.fail("微信支付失败,请联系客服");
}
// 以下字段在 return_code 和 result_code 都为 SUCCESS 的时候有返回
@@ -187,6 +201,7 @@ public class PayController {
log.info("返回apk的参数:" + jsonStr);
PayReturnResp resp = new PayReturnResp();
resp.setData(jsonStr);
orderLogsService.createBaseSuccess(dto.getOrderNo(),"微信支付");
return R.ok(resp);
}