SmsAliYunUtil.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package jnpf.util.message;
  2. import com.aliyun.dysmsapi20170525.Client;
  3. import com.aliyun.dysmsapi20170525.models.*;
  4. import com.aliyun.teaopenapi.models.*;
  5. import jnpf.util.JsonUtil;
  6. import jnpf.util.ParameterUtil;
  7. import jnpf.util.StringUtil;
  8. import lombok.extern.slf4j.Slf4j;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11. import java.util.Map;
  12. /**
  13. * 阿里云发送短信
  14. *
  15. * @版本: V3.2.0
  16. * @版权: 引迈信息技术有限公司(https://www.jnpfsoft.com)
  17. * @作者: JNPF开发平台组
  18. * @日期: 2021/4/21 11:45
  19. */
  20. @Slf4j
  21. public class SmsAliYunUtil {
  22. /**
  23. * 使用AK&SK初始化账号Client
  24. *
  25. * @param accessKeyId
  26. * @param accessKeySecret
  27. * @param endpoint
  28. * @return Client
  29. */
  30. private static Client createClient(String accessKeyId, String accessKeySecret, String endpoint) {
  31. try {
  32. Config config = new Config()
  33. // 您的AccessKey ID
  34. .setAccessKeyId(accessKeyId)
  35. // 您的AccessKey Secret
  36. .setAccessKeySecret(accessKeySecret);
  37. // 访问的域名
  38. config.endpoint = endpoint;
  39. return new Client(config);
  40. } catch (Exception e) {
  41. log.error("创建阿里云短信客户端错误:" + e.getMessage());
  42. }
  43. return null;
  44. }
  45. /**
  46. * 查询短信模板详情
  47. *
  48. * @param accessKeyId
  49. * @param accessKeySecret
  50. * @param endpoint
  51. * @param templateId
  52. */
  53. public static List<String> querySmsTemplateRequest(String accessKeyId, String accessKeySecret, String endpoint, String templateId) {
  54. try {
  55. Client client = createClient(accessKeyId, accessKeySecret, endpoint);
  56. QuerySmsTemplateRequest querySmsTemplateRequest = new QuerySmsTemplateRequest()
  57. .setTemplateCode(templateId);
  58. QuerySmsTemplateResponse querySmsTemplateResponse = client.querySmsTemplate(querySmsTemplateRequest);
  59. String templateContent = querySmsTemplateResponse.getBody().templateContent;
  60. if (StringUtil.isNotEmpty(templateContent)) {
  61. List<String> list = new ArrayList<>();
  62. ParameterUtil.parse("${", "}", templateContent, list);
  63. return list;
  64. } else {
  65. return null;
  66. }
  67. } catch (Exception e) {
  68. log.error("查询阿里云短信模板错误:" + e.getMessage());
  69. }
  70. return null;
  71. }
  72. /**
  73. * 查询短信模板详情
  74. *
  75. * @param accessKeyId
  76. * @param accessKeySecret
  77. * @param endpoint
  78. * @param templateId
  79. */
  80. public static String querySmsTemplateContent(String accessKeyId, String accessKeySecret, String endpoint, String templateId) {
  81. try {
  82. Client client = createClient(accessKeyId, accessKeySecret, endpoint);
  83. QuerySmsTemplateRequest querySmsTemplateRequest = new QuerySmsTemplateRequest()
  84. .setTemplateCode(templateId);
  85. QuerySmsTemplateResponse querySmsTemplateResponse = client.querySmsTemplate(querySmsTemplateRequest);
  86. String templateContent = querySmsTemplateResponse.getBody().templateContent;
  87. if (StringUtil.isNotEmpty(templateContent)) {
  88. return templateContent;
  89. } else {
  90. return null;
  91. }
  92. } catch (Exception e) {
  93. log.error("查询阿里云短信模板错误:" + e.getMessage());
  94. }
  95. return null;
  96. }
  97. /**
  98. * 发送短信
  99. *
  100. * @param accessKeyId
  101. * @param accessKeySecret
  102. * @param endpoint
  103. * @param phoneNumbers
  104. * @param signContent
  105. * @param templateId
  106. * @param map
  107. * @return
  108. */
  109. public static String sentSms(String accessKeyId, String accessKeySecret, String endpoint, String phoneNumbers, String signContent, String templateId, Map<String, Object> map) {
  110. // 复制代码运行请自行打印 API 的返回值
  111. try {
  112. Client client = createClient(accessKeyId, accessKeySecret, endpoint);
  113. SendSmsRequest sendSmsRequest = new SendSmsRequest();
  114. // 接收者的号码
  115. sendSmsRequest.setPhoneNumbers(phoneNumbers);
  116. // 签名
  117. sendSmsRequest.setSignName(signContent);
  118. // 模板id
  119. sendSmsRequest.setTemplateCode(templateId);
  120. // 模板参数
  121. sendSmsRequest.setTemplateParam(JsonUtil.getObjectToString(map));
  122. SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);
  123. if (!"Ok".equalsIgnoreCase(sendSmsResponse.body.code)) {
  124. log.error("发送短信失败:" + sendSmsResponse.getBody().message);
  125. return "发送短信失败:" + sendSmsResponse.getBody().message;
  126. }
  127. return "Ok";
  128. } catch (Exception e) {
  129. log.error("发送短信失败:" + e.getMessage());
  130. return "发送短信失败:" + e.getMessage();
  131. }
  132. // return null;
  133. }
  134. }