diff --git a/src/main/java/com/sczx/user/service/impl/UserServiceImpl.java b/src/main/java/com/sczx/user/service/impl/UserServiceImpl.java index 6e1daeb..fc3a056 100644 --- a/src/main/java/com/sczx/user/service/impl/UserServiceImpl.java +++ b/src/main/java/com/sczx/user/service/impl/UserServiceImpl.java @@ -234,13 +234,15 @@ public class UserServiceImpl implements IUserService { public LoginResponse alipayMiniProgramLoginOrReg(AlipayMiniProgramRegRequest alipayMiniProgramRegRequest) { try { + //2.获取openId + String openId = alipayInteg.getUserInfoByAuthCode(alipayMiniProgramRegRequest.getAuthCode()); + // 1. 获取手机号 String phoneNumber = alipayInteg.getPhoneNumberFromEncryptedData(alipayMiniProgramRegRequest.getEncryptedData(), alipayMiniProgramRegRequest.getSign()); if (StringUtils.isBlank(phoneNumber)) { throw new BizException("支付宝小程序登录失败,无法获取用户真实手机号"); } - //2.获取openId - String openId = alipayInteg.getUserInfoByAuthCode(alipayMiniProgramRegRequest.getAuthCode()); + // 3. 查询用户是否存在 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); diff --git a/src/main/java/com/sczx/user/thirdpart/integration/AlipayInteg.java b/src/main/java/com/sczx/user/thirdpart/integration/AlipayInteg.java index 0dff36e..e1dcccf 100644 --- a/src/main/java/com/sczx/user/thirdpart/integration/AlipayInteg.java +++ b/src/main/java/com/sczx/user/thirdpart/integration/AlipayInteg.java @@ -12,7 +12,11 @@ import com.alipay.api.response.AlipaySystemOauthTokenResponse; import com.sczx.user.exception.BizException; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Component; +import org.springframework.util.ResourceUtils; + +import java.io.IOException; @Slf4j @Component @@ -130,11 +134,11 @@ public class AlipayInteg { //设置签名类型 alipayConfig.setSignType(signType); //设置应用公钥证书路径 - alipayConfig.setAppCertPath(appCertPath); + alipayConfig.setAppCertPath(getRealPath(appCertPath)); //设置支付宝公钥证书路径 - alipayConfig.setAlipayPublicCertPath(alipayCertPath); + alipayConfig.setAlipayPublicCertPath(getRealPath(alipayCertPath)); //设置支付宝根证书路径 - alipayConfig.setRootCertPath(alipayRootCertPath); + alipayConfig.setRootCertPath(getRealPath(alipayRootCertPath)); AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig); @@ -143,7 +147,7 @@ public class AlipayInteg { tokenRequest.setGrantType("authorization_code"); tokenRequest.setCode(authCode); log.info("获取支付宝access_token请求参数: {}", tokenRequest); - AlipaySystemOauthTokenResponse tokenResponse = alipayClient.execute(tokenRequest); + AlipaySystemOauthTokenResponse tokenResponse = alipayClient.certificateExecute(tokenRequest); log.info("获取支付宝access_token返回结果: {}", tokenResponse.getBody()); if (!tokenResponse.isSuccess()) { @@ -157,4 +161,26 @@ public class AlipayInteg { } } + /** + * 获取证书文件的真实路径 + * @param path 配置的路径 + * @return 真实路径 + */ + private String getRealPath(String path) { + try { + if (path.startsWith("classpath:")) { + String resourcePath = path.substring("classpath:".length()); + ClassPathResource resource = new ClassPathResource(resourcePath); + String realPath = resource.getFile().getAbsolutePath(); + log.info("获取证书文件路径: {}", realPath); + return realPath; + } else { + return ResourceUtils.getFile(path).getAbsolutePath(); + } + } catch (IOException e) { + log.error("获取证书文件路径失败: {}", path, e); + throw new BizException("获取证书文件路径失败: " + path); + } + } + } \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index d4af316..0c884ff 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -74,7 +74,7 @@ wechat: alipay: miniapp: appid: 2021005174658269 - privateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCs8bglD1hj36054iZA7R42Sn41mR6cn2EwcRVWbAAcAjkGgkwIu8CbnTgFdKmCmpqIInoBFPAGSIPPh3IIxV8TdUTz6gwW1ep8dpkuF935f1VA2pELPQd5HYhuMaedtjFA4AQ4zrPT3ZR82J4bTQfJTnJER/OMmQhzK4Z4aBsgEbWA+kuFexApGFBiqngTGB3gtfqqcos8v3SQlWRCcdwmSn6sKhDnNLplRcTZ3/YbNjvGL3e5NTYIsyJntWLY5nWDvFj7INDNMD8Kx694l5beszpPzIGOUQnCzLAQvlyjdiqklQgwh798uOFFGCP4lSrnDSxGpvf4KzBAciOBzvVDAgMBAAECggEAeunoyF4ZohHs2cDDE03zNP7IqGtE+GfF+VnFooBrq3xg7yFXzLUz9OVOVYJOn0YmIi7uqyooVS7gj3RiNZ2hLwEfmoNzSB+M4hygTcQkvRgkjU1J3MTpNMkql7auvEYqx0LvfThbUm6fBAQoipq6t/YK/EBu9jQlb0U18wl6jdUdHWY1imybltwaq3RA9efSwehovhP5NsZmDWg7piViPizzRe0vQCDNx+yKXZF5v33HgWaoxuIuEzioO/lCCtki8JLFe5rmELXHob8P956zYUm3AQE7+Dy80kIwHzSsDjKOWnBgSivDPf7u3D7aMZ21BM8b2VGU3ogUlznTzvJQ8QKBgQDVczfuhW4Ii81G4qOM+kEei4OrhmYQfk6CmTqLAsTb1dNcH06Ff791miPGJ6tWqIy6+Q1OVWID7BoHBu9UgwpVxRFKDGGFEQb2J67auQCb57CWNZx8w/4R/OnVSZ4WvoOPiokq/f6bJH7Snk6Zj806MjTXgO+6sFfjAB9srF3jlQKBgQDPa2gOZtQGBgHw2MYdyu7Y2aXCAgBp7ruI02iPrNLjvJnoHDpTJjUYmbLWyx1xnZnHVR5TCtZB4MNMZnhwbiKpsF5omxf4/31zc7JzQPoD/VjME8+LeJekW5telwqUCK4qKUcWLbW1QfSUwyNVnyN4QsQfp7W7fmLSfi+ACGa/dwKBgHY8l7wBn30ObAybGLvMGGxiHfLSxRDX1oeTd5FvXDrmTGlYUjezFwx+8NggO1IKlcIwmYVN2LiRfa1s0wA+gmgWfMhG6XI7h16thrdUCZlTE0dxtRiLvN6b+a+TUwYITHoj5G2zOukXo0TqOmHn/WgCTbEelC0W5+gvtjiNloitAoGBAIUGXlr2Kb6fNblwXUcYMiyTEZKmU/ucZ1uuMh4K+cmi2JYbHHDdTSo00JSe+Yg3Sjuj5Gnfxl/DtZ0XDuEUUVjAyxuNdEd2G8/igK0YHABZCA0CG5ZYRfDb634zok4kbwaNKJEZybKw1RpfOBcek9H6B+xBU/UmblyPHwme2b6rAoGADXnDQBlMmYKrK8+34E28E0tiUr7UAc6t86ZnzVoUEdZEkJ5EwRraR/QBqumu7/B0SrcME9VZH1P++BYnsR0lZLlu+CE54UJ1fSopjExpcAluIgZ2FkrKFLm0qGdzt58AW7SK4lFECJKdQaS9ZogVx7+htQ6vyv3bVv21u2FJ3Is= + privateKey: MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCQke+mZsxNXJXMn2iUZRkhITWY9qPczwHMgRxl68JRuNzZE2AXhAc2ciF7EGob1y0al4hvJo5JUrDew9Zkv0BocAsPjLma3A9KFgj131xMuLxVvHtktkNSwwW9VIbOOhFAQAy3J9jt8PdEk40UONyu9J5Shjs6jbQ8RogdDuwuzKpNj0ZOTeUqgR6RME4xZ0VqvZe9XhVfq3QtVGttUzOpLPNg6boBy/5RqwC64lVFICMqjKkMW2NklVPBDFO46QwfWEbaA+APnd9bd+9WadyNySPb7kAK8GOlvZYfysy+QkOQdj/oebKWKzdKXpFnF+n52dYzeGTvckt1suDngwAFAgMBAAECggEAcPc39iTZe5HfE9d0FpCxBCw4/1+qRz4SP8SbdiC05Lq5B36WVYm7QRYJh2oaH8sR2XeTCpdsE2tj/Y21l1/Calkyq2HhHlraL5/sPIPeUa0ArVXsbZPmI2N0tq6376l8FWJ3DR876SGjdZh+YtDT0HogxIdS/LwBnB/Y+CvS7fWcqiMjcR4h28RU70CQqxpzYuPfqG6GZmByGyJAcdlhFAYgiksb+qZnkjoaKHsjb61xfUX4z+HGdQLqOlVKfNqIpiO7arXaeAb0RQiB8Lqi7fBvn8LLhlTmM1Hr4gyQO14lJmP5Vp2BIg9m5AC9vRkpZ9l79bUTIepDe9+Ovcx5eQKBgQDWZ5yoz8q8Z5VIfMSVTHO3wpfwOBM92S2c21hTsds7NezsMVqGcTuAcvbMW2i1MwxtS7kahXraRAxZnCDB9ZVJs+88xcgu5QJWZ1rJyrwEwB2gTQhColv+XZW6Ck/J6kk2/PG26rNQG6pg/xrKaMtPnXXyKCsdQTyEpr+mlNIJ2wKBgQCsnf4lIuwftCSm0jI73tO1Bb4U9TCIapKidnIhutbyg6u+hJMUTVDNkjsBnrTN24sSP7Cu4Zs/W4lkDqq86fHNEvnF+FouIfO/CwaGteDBNwXHSLM0D+zEBbK04bfoYi7lYZeDRPygFrM49Sxkp0MAmItDmXqbYRQBlhN1XVzznwKBgQCQ+72fFex1XOJBA0X345v4rlkKMxEn6J2EjXr8FbA3KO8OhQ0/DoD7CkLDzChRJ7UGj4cbXRnHUO69BevM3SHXlhp4ERKeS3Q6M2fcPwDHgZZHGPA2Bw6IQoaGKITt+EUMLx3Q4ILi7+JV9wwJxbV+H+9rEiidfsjKtuuwXMBvswKBgQChpElrCSrH/W8c8FSuD9l7+GapRXkvJW0uyW/S+h1yd66J96erKUNzXW339GAnLWErs4yGFynDyLn9gmaMBR6zBQP0SL5Z2N1hlreDyikvhZDZrtBw/kCexx8zlvMan2Z+0kaJXD6cwuUNfzkVADQUCMTQhpZzjhKn8ZtDGiyCzQKBgQCAhU0khG/ufZfQ089+1G7PAlErBr5MQaG40a2vfIWGtHkYyXq5N/3jow1bd2qsyLuz8mr2sWQeURK+B2xZridf6JtYz3gB+dLw0frlLKk4Q6jeehiRlE8H8tIYe/7KcgTmdIzEbo3lmyGMFAILvr/pSCWeUehQYR9PH91Qyi+Tog== # publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArPG4JQ9YY9+tOeImQO0eNkp+NZkenJ9hMHEVVmwAHAI5BoJMCLvAm504BXSpgpqaiCJ6ARTwBkiDz4dyCMVfE3VE8+oMFtXqfHaZLhfd+X9VQNqRCz0HeR2IbjGnnbYxQOAEOM6z092UfNieG00HyU5yREfzjJkIcyuGeGgbIBG1gPpLhXsQKRhQYqp4Exgd4LX6qnKLPL90kJVkQnHcJkp+rCoQ5zS6ZUXE2d/2GzY7xi93uTU2CLMiZ7Vi2OZ1g7xY+yDQzTA/CseveJeW3rM6T8yBjlEJwsywEL5co3YqpJUIMIe/fLjhRRgj+JUq5w0sRqb3+CswQHIjgc71QwIDAQAB appCertPath: classpath:crt/appCertPublicKey_2021005174658269.crt alipayCertPath: classpath:crt/alipayCertPublicKey_RSA2.crt