AlipayServiceImpl.java 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package com.ydtech.modules.admin.service.impl;
  2. import cn.dev33.satoken.stp.StpUtil;
  3. import com.alipay.api.AlipayApiException;
  4. import com.alipay.api.AlipayClient;
  5. import com.alipay.api.AlipayConfig;
  6. import com.alipay.api.DefaultAlipayClient;
  7. import com.alipay.api.request.AlipaySystemOauthTokenRequest;
  8. import com.alipay.api.response.AlipaySystemOauthTokenResponse;
  9. import com.ydtech.core.page.HttpResult;
  10. import com.ydtech.exception.SystemException;
  11. import com.ydtech.modules.admin.model.SysUser;
  12. import com.ydtech.modules.admin.model.vo.AlipayBindVo;
  13. import com.ydtech.modules.admin.model.vo.AlipayVo;
  14. import com.ydtech.modules.admin.service.AlipayService;
  15. import com.ydtech.modules.admin.service.SysUserService;
  16. import lombok.RequiredArgsConstructor;
  17. import lombok.extern.slf4j.Slf4j;
  18. import org.springframework.stereotype.Service;
  19. import org.springframework.util.ObjectUtils;
  20. @Slf4j
  21. @Service
  22. @RequiredArgsConstructor
  23. public class AlipayServiceImpl implements AlipayService {
  24. private final SysUserService sysUserService;
  25. @Override
  26. public HttpResult<AlipayVo> login(AlipayBindVo alipayBindVo) throws AlipayApiException {
  27. AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
  28. // 构造请求参数以调用接口
  29. AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
  30. // 设置授权码
  31. request.setCode(alipayBindVo.getCode());
  32. // 设置授权方式
  33. request.setGrantType("authorization_code");
  34. AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
  35. String aliPayId = response.getUserId();
  36. SysUser sysUser = sysUserService.lambdaQuery()
  37. .eq(SysUser::getAlipay, aliPayId)
  38. .one();
  39. // 没有绑定支付宝
  40. if (sysUser == null) {
  41. throw new SystemException("您还未绑定工号");
  42. }
  43. SysUser.verifyUser(sysUser);//验证用户状态
  44. String token = StpUtil.createLoginSession(sysUser.getId());
  45. AlipayVo alipayVo = new AlipayVo(token, sysUser.getId());
  46. return HttpResult.ok("",alipayVo);
  47. }
  48. @Override
  49. public HttpResult<Object> bind(AlipayBindVo alipayBindVo, String userId) throws AlipayApiException {
  50. AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
  51. // 构造请求参数以调用接口
  52. AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
  53. // 设置授权码
  54. request.setCode(alipayBindVo.getCode());
  55. // 设置授权方式
  56. request.setGrantType("authorization_code");
  57. AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
  58. String aliPayId = response.getUserId();
  59. SysUser sysUser = sysUserService.lambdaQuery().eq(SysUser::getAlipay, aliPayId).one();
  60. if (sysUser != null) {
  61. throw new SystemException("同一支付宝不能重复绑定");
  62. }
  63. SysUser user = sysUserService.lambdaQuery().eq(SysUser::getId, userId).one();
  64. if (ObjectUtils.isEmpty(user)) {
  65. throw new SystemException("你输入的工号不存在");
  66. }
  67. user.setAlipay(aliPayId);
  68. boolean update = sysUserService.updateById(user);
  69. if (update) {
  70. return HttpResult.ok("绑定成功");
  71. }
  72. throw new SystemException("绑定失败");
  73. }
  74. private static AlipayConfig getAlipayConfig() {
  75. String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCmb0GfNv7ex5SmUiBnMn3szFP4XM5c8KnYll6HGoFCQTxwMSVYq652ELBtGAScqV9QOVcF/1Z1NF+a0AabGd0qSKKsPOhHNg3vG4yHHs4gwOdqFxwjATXqgHaZXSIQGnoPUJ3J05AlYLlinm9oOoTAY68880pM9h9d7t4Aq4WqVfnGteNaV5+oaV/KgX2OGo7m3WPR+e5Yjl9xxYXjVF1Uv7hznNER74KuYhRP44759lgfo0RlncGXuaygKHoxCpKTozGmvedP0hTO/WJTEi5l11Gp4mfMN9Gb/VtjsRDJaCFMmXU19UcHOFxyFOrKoyNYxdj3ue07/l51l4+8TVyJAgMBAAECggEBAJGR09qW9nsSIxEJ2e+I+RzpZjRfr9sYX+XhN1KBuzag6mTSh3Cz0IbReA4jKL2BYq0/Sb8kIpGmukwk0PJNv+Rg3W86YosOW0ecV+BC8FUzg/SFvAVd5LNzosfm7okZL1M/1pKVaYlXvS3ll1mZfUzso3Py8zS3PJ4i86ewXdupp2HcQt8c5O57lkzdhi35a38k9RrrSsYgnUClAMFWvmN4x1v7vuddzW0/q5Ztg1k9Ukz209dMOIc5cZ8+zyX5PO0rEofUETMtF5D5N2qtsMsMlDxvYq7aQoNq5I1p8e2mjZv5U7EvkLENTZmPRtAdddut1LGACU0AAlvvOOgu9wECgYEA27Q/EuQPfFh/aOYyi6zq0AWFN2U+tN/y3/nAvGymisdp6c2q1s6ESvENJep7v9PR/cownHKIllTJbzh03DKrQd0LYJrh4CFr6xv5DSUXMft5+6Te+t1FpULqhtkVLcqqTSqMRo8Yl/QMDxI6mRd4pmEFscOIEW+5lzyofxfL7mECgYEAwe4hNIyz2b/uBCCUMPA8CL8kJILqw0ZHB4EekoLugqYHAi3LPCDpJzFJ3pcZXjUdH9TUKQp67eizk+xedfFdicm0ENzPqCoUPidT88QZImaP8uP2LblTlxNCDf8D15BQzBHDlTDN+2tzFi7qAb3v2mgK5U9WGOOkicmMGzv8jykCgYARP3hIKmFQ2L2/5XqIXp3ckOJhc/BVUNOHY9sOr9TvRjJ5aW0FChd2rq/ijyMB70YoD2x7i75PVv6tXZhHBS9Or2TKQ76B0v3e6kZGEuhcQyrTZ6EdvqtOCw/QYFB6VNPD1RhIHcnHfCBKOpshE6ekIC/LQdd3zvaZ+egceijHYQKBgDgN250z2jxjZKnevNbUaZXhodHH4ZGl+5vor2yL2eL7mGUB1Y/At4OzlHV5WUTIt21e+CAQvm2L6HQmSztuE6pjGeAR4xfpacZ5WaPJF7bAzHTZfWvD+KxfTaV8A6FIPoJt1AmIfNFiQna0AsGUJAMONbAIWYuCKSoGjq/EjADZAoGAS0ZaZdPKKQnd4g/lqM8CnHTfhW11ANP/rPZDU+NvjW2jQ6SIdJhwJaKMEQCcDp63j0SADlghzrvm+KMbnTrFqTHlAizcFxnOOOxO1pKXKuOJWWsyNBN33suB3XPFrsobEtmtnWyvph1GoAZOX457RN5LSmBTbqpbyEsjKg/W1zc=";
  76. String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArP+St5P9dLhPmm/ggf3jPDc2552wu/+91QSAzlEqRSrdWAIwrHcntM0VY/4/+39Z8h44/0TBNTb0j1gdWrCyb+1ENxwwgCqs7f8C/5gClTQCcoNys4MtGAAM7BbNp/LzmswOuPTOMtjlUBArWFvJDgDoSQJ8vGwGHgRcLsSLPwlhwVdnqVbq60CI185U/yZgNITTCGpDXv5bnQQ26GrUbH+5Qm4fYmT2B/2ijAVJUYq+EaBMOyv+AD8C1+CtXcgH86+g13MdD1T8cw5nkV9/4fcPIWD8R1aj20C1+kCMujaydB4yDpHiqQcQEtJoVbZJk5MYp8JcctqDT01brVct5wIDAQAB";
  77. AlipayConfig alipayConfig = new AlipayConfig();
  78. alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
  79. alipayConfig.setAppId("2021004153668213");
  80. alipayConfig.setPrivateKey(privateKey);
  81. alipayConfig.setFormat("json");
  82. alipayConfig.setAlipayPublicKey(alipayPublicKey);
  83. alipayConfig.setCharset("UTF-8");
  84. alipayConfig.setSignType("RSA2");
  85. return alipayConfig;
  86. }
  87. }