fix: 微信支付,登录接口。
This commit is contained in:
@@ -114,6 +114,12 @@
|
||||
<artifactId>intc-iot</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
<!-- 微信对接模块 -->
|
||||
<dependency>
|
||||
<groupId>com.intc</groupId>
|
||||
<artifactId>intc-weixin</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>de.codecentric</groupId>
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.intc.common.core.domain.R;
|
||||
import com.intc.common.core.domain.model.LoginBody;
|
||||
import com.intc.common.core.domain.model.RegisterBody;
|
||||
import com.intc.common.core.domain.model.SocialLoginBody;
|
||||
import com.intc.common.core.exception.ServiceException;
|
||||
import com.intc.common.core.utils.*;
|
||||
import com.intc.common.encrypt.annotation.ApiEncrypt;
|
||||
import com.intc.common.json.utils.JsonUtils;
|
||||
@@ -23,6 +24,7 @@ import com.intc.common.social.utils.SocialUtils;
|
||||
import com.intc.common.sse.dto.SseMessageDto;
|
||||
import com.intc.common.sse.utils.SseMessageUtils;
|
||||
import com.intc.common.tenant.helper.TenantHelper;
|
||||
import com.intc.fishery.domain.AquUser;
|
||||
import com.intc.system.domain.bo.SysTenantBo;
|
||||
import com.intc.system.domain.vo.SysClientVo;
|
||||
import com.intc.system.domain.vo.SysTenantVo;
|
||||
@@ -36,6 +38,8 @@ import com.intc.web.domain.vo.TenantListVo;
|
||||
import com.intc.web.service.IAuthStrategy;
|
||||
import com.intc.web.service.SysLoginService;
|
||||
import com.intc.web.service.SysRegisterService;
|
||||
import com.intc.weixin.domain.bo.ReqWxLogin;
|
||||
import com.intc.weixin.service.WxLoginService;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -43,6 +47,7 @@ import me.zhyd.oauth.model.AuthResponse;
|
||||
import me.zhyd.oauth.model.AuthUser;
|
||||
import me.zhyd.oauth.request.AuthRequest;
|
||||
import me.zhyd.oauth.utils.AuthStateUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@@ -75,6 +80,9 @@ public class AuthController {
|
||||
private final ISysClientService clientService;
|
||||
private final ScheduledExecutorService scheduledExecutorService;
|
||||
|
||||
@Autowired(required = false)
|
||||
private WxLoginService wxLoginService;
|
||||
|
||||
|
||||
/**
|
||||
* 登录方法
|
||||
@@ -239,4 +247,70 @@ public class AuthController {
|
||||
return R.ok(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 微信小程序登录
|
||||
*
|
||||
* @param request 微信登录请求
|
||||
* @return 结果
|
||||
*/
|
||||
@ApiEncrypt
|
||||
@PostMapping("/wechat_login")
|
||||
public R<AquUser> wechatLogin(@Validated @RequestBody ReqWxLogin request) {
|
||||
try {
|
||||
log.info("收到微信登录请求: clientId={}, tenantId={}", request.getClientId(), request.getTenantId());
|
||||
|
||||
// 1. 检查服务是否可用
|
||||
if (wxLoginService == null) {
|
||||
log.error("微信登录服务未启用,请检查配置: wx.miniapp.app-id");
|
||||
return R.fail("微信登录服务未启用,请联系管理员");
|
||||
}
|
||||
|
||||
// 2. 校验客户端
|
||||
SysClientVo client = clientService.queryByClientId(request.getClientId());
|
||||
if (ObjectUtil.isNull(client)) {
|
||||
log.error("客户端不存在: clientId={}", request.getClientId());
|
||||
return R.fail(MessageUtils.message("auth.grant.type.error"));
|
||||
}
|
||||
if (!SystemConstants.NORMAL.equals(client.getStatus())) {
|
||||
log.error("客户端已被禁用: clientId={}, status={}", request.getClientId(), client.getStatus());
|
||||
return R.fail(MessageUtils.message("auth.grant.type.blocked"));
|
||||
}
|
||||
|
||||
// 3. 校验租户
|
||||
if (StringUtils.isNotBlank(request.getTenantId())) {
|
||||
try {
|
||||
loginService.checkTenant(request.getTenantId());
|
||||
} catch (Exception e) {
|
||||
log.error("租户校验失败: tenantId={}", request.getTenantId(), e);
|
||||
return R.fail("租户校验失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// 4. 执行微信登录
|
||||
AquUser aquUser = wxLoginService.loginByWeChat(
|
||||
request.getCode(),
|
||||
request.getJsCode(),
|
||||
request.getTenantId()
|
||||
);
|
||||
|
||||
if (aquUser == null) {
|
||||
log.error("微信登录失败,未返回用户信息");
|
||||
return R.fail("登录失败,请重试");
|
||||
}
|
||||
|
||||
// 5. 返回用户信息
|
||||
log.info("微信登录成功: userId={}, mobilePhone={}",
|
||||
aquUser.getId(), aquUser.getMobilePhone());
|
||||
|
||||
return R.ok(aquUser);
|
||||
|
||||
} catch (ServiceException e) {
|
||||
log.error("微信登录业务异常: {}", e.getMessage(), e);
|
||||
return R.fail(e.getMessage());
|
||||
} catch (Exception e) {
|
||||
log.error("微信登录系统异常", e);
|
||||
return R.fail("登录失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -329,3 +329,77 @@ justauth:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=gitea
|
||||
|
||||
--- # 微信支付选项配置
|
||||
wx:
|
||||
# 微信公众号配置
|
||||
mp:
|
||||
# 公众号appId(必填)
|
||||
app-id: wx182a393d5c5e3479
|
||||
# 公众号Secret(必填)
|
||||
secret: 559d7bf12a781651c9772f525faa38e2
|
||||
# 公众号token(选填,用于消息加解密)
|
||||
token: your_token_here
|
||||
# 公众号EncodingAESKey(选填,用于消息加解密)
|
||||
aes-key: your_aes_key_here_43_characters_base64
|
||||
|
||||
# 微信小程序配置
|
||||
miniapp:
|
||||
# 小程序appId(必填)
|
||||
app-id: wx9fb4034ebe52af77
|
||||
# 小程序Secret(必填)
|
||||
secret: 9b0eb221d9fa6bb46a463c24304f6d12
|
||||
# 小程序token(选填,用于消息加解密)
|
||||
token: your_miniapp_token
|
||||
# 小程序EncodingAESKey(选填,用于消息加解密)
|
||||
aes-key: your_miniapp_aes_key_43_characters_b64
|
||||
# 消息格式,XML或者JSON
|
||||
msg-data-format: JSON
|
||||
|
||||
# 微信支付配置
|
||||
pay:
|
||||
# 商户号(必填)
|
||||
mch-id: 1671289865
|
||||
# 商户密钥(V2版本必填)
|
||||
mch-key: your_mch_key_here_32_characters_md5
|
||||
# 证书路径(退款等操作需要,选填)
|
||||
key-path: classpath:cert/apiclient_cert.p12
|
||||
# apiV3秘钥(V3版本必填)
|
||||
api-v3-key: lms8a288e6694a429a2f15c718b1b17e
|
||||
# 证书序列号(V3版本必填)
|
||||
cert-serial-no: 6EFD85369A957FB27680825035E456065FD575D2
|
||||
# 私钥路径(V3版本选填)
|
||||
private-key-path: classpath:cert/apiclient_key.pem
|
||||
# 私钥内容(V3版本选填,与private-key-path二选一)
|
||||
private-content: "-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDLEVxkdX6NJtDo\nzXOzkxn7kqR3MMc05/duLON4yjmLhTPQD8iiDoCOEuZEy8dLloi1OlXO3zu/F5jd\n9ynk8x++Px5A8gBQ16GZAMH18BQDzcFzy0EPe9ckiN3IXO8GT8Ht9oP430ugxF6t\nGM7Ixh93v48n7tUOZTISX5TzZCbXOiITH40b++/LB2LaMo9xAC4dEQs+2S4x5gO9\nPAh637ZAtVlbYxmJMYxzUM09KyXAoDlmO6YlO25EBkei7ZbyQob698s35+rSeq93\noFfUiegEL35SWeuuwp8ZFFvq24EUW7/n4U50/rS5hIFerEfcrFj2yPhP3sQtd4I+\nFjaEKzQLAgMBAAECggEBALxeUV9a4labUCT0GETWyr5j7C4oUFHSb+KCv0uYA0NZ\n/5McYRd67mNcQsBEa43BiPTbtSdeSnTbtdEI6pLXuHVo5W6HTiWvsNZWLpYt6tMQ\ndUgtnh932D2qvFiVZKBtMc7E4uzkbaonHk/heEgkCKKzTl9Tm81rr8P9aBVSrPjt\n6Xs7lORsD9bCoweYwfcrHELb+sLek/dOd9eCyabq7r5FV4EqOwJhw8btD7xgjw+o\nuVF3kWyhLSEwjpN/oo4w5r4yVPlMnSTn7MtTRFyJcU/w5YBk8MedGSTKRIvzPv4s\nRWU3ChTP5evGAh/FnpP6JGEhyvYGW0DqmuJUXK1n0fECgYEA/sSCT6Z+HSlwu/ui\nOSlDDFKZ/ci7vJcuksgf5Tw5Kj0fBVhgImO8hTS9nqCQx73JJTsUpTzyYOVxUd9b\nAqp42dgVbDYTmkfBi0xAZpnQD4Z4LUj6OkS2k3+2CPNN+jQpibGjGy11NDV/U8EQ\nP/9ioz+PoqwENG6wsaCT9LOC2DkCgYEAzAzUXJdH5T2LpSeO8e2NHtW6flemsJJ0\n+m0O03OWxQr6KNjFpNkTFoK6A2NYOiyqMZcQb+viHGFTFpFHkozo3QPaXpZsz3BC\ny9nQzqDbP3/MtfksE/MXOOw0qtdqT3csIxiXZqIjGYqAU08xcKyItZJGnIh/aKYn\nyobDnKkCRmMCgYB9mvbAPE6bJA4/r/03/17eGW9wjuH4RfUhSudmxn1MlNvRb9Pd\nwJx2dB00sucOg0RDRdCU8upw2U44Vk1xkAiLJpzRQAwEGXKTseFidFz++oYPlZZA\n2hXFvMZLvWDphYQhLeJDiPLq7aE78siHNOs1nyW6xuI/037r5EZt838ECQKBgQDC\n3+XY3+ob92Fsw5DzYIoMTtajXxalP9pUaN9l9tihKtCrPgvUWjSupP79yV0zggCx\nB7L9EOyLai+uN+WBAu5KVimxeDxHCNHiWg3fqSR7SpS5nlUIYHtnM79BAiZX6lrO\n0eeWb3bSJ8JSzilLkJunvSGO0ZXM3hLWi0o6TfcMPQKBgQDlmSC6/Ja4M+lGZEMx\nraCryScSi1kj3KkZFcGQEEejltpet2u06af/qA+tmMW7uxjLj5R80yqsYmUqS6Md\npHc1U7XsqU2MinqVJz47H8WZwYMDDLjNOI2f4coqbtBBOA6GKt+gYYqYxkpvVanT\noShAmWqOcPsioBVCFRVGvMlcNA==\n-----END PRIVATE KEY-----\n"
|
||||
|
||||
# 支付选项列表配置
|
||||
pay-item:
|
||||
pay-items:
|
||||
- id: 1
|
||||
amount: 9900 # 金额,单位:分 (99元)
|
||||
add-month: 1 # 增加月份
|
||||
title: "一个月会员"
|
||||
description: "享受一个月全部功能"
|
||||
- id: 2
|
||||
amount: 29900 # 299元
|
||||
add-month: 3 # 3个月
|
||||
title: "三个月会员"
|
||||
description: "享受三个月全部功能"
|
||||
- id: 3
|
||||
amount: 59900 # 599元
|
||||
add-month: 6 # 6个月
|
||||
title: "半年会员"
|
||||
description: "享受半年全部功能"
|
||||
- id: 4
|
||||
amount: 99900 # 999元
|
||||
add-month: 12 # 12个月
|
||||
title: "一年会员"
|
||||
description: "享受一年全部功能,最划算"
|
||||
|
||||
# 支付回调通知配置
|
||||
pay-notify:
|
||||
# 支付回调通知URL(需根据实际域名配置)
|
||||
notify-url: "https://yourdomain.com/weixin/pay_notify"
|
||||
# 微信商户号(与上面wx.pay.mch-id保持一致)
|
||||
mch-id: "1671289865"
|
||||
|
||||
Reference in New Issue
Block a user