引入依赖

maven

  1. <!--阿里云短信服务-->
  2. <dependency>
  3. <groupId>com.aliyun</groupId>
  4. <artifactId>tea-openapi</artifactId>
  5. <version>0.0.13</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>com.aliyun</groupId>
  9. <artifactId>dysmsapi20170525</artifactId>
  10. <version>2.0.1</version>
  11. </dependency>

gradle

  1. // 短信服务
  2. compile 'com.aliyun:tea-openapi:0.0.13'
  3. compile 'com.aliyun:dysmsapi20170525:2.0.1'

阿里云短信文档地址

api
java sdk

参数

在配置表中,配置以下参数:

名称 配置名 配置值
accessKeyId accessKeyId LTAI5tG6KbHDK7nVt2X6ifBF
accessKeySecret accessKeySecret wwCjeH5X8Shr9dCGdC8QxooIuM7Etl

参数申请参考最后

工具类 AliSmsUtil

  1. // This file is auto-generated, don't edit it. Thanks.
  2. package com.hn.common.utils;
  3. import cn.hutool.json.JSONUtil;
  4. import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
  5. import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
  6. import com.aliyun.teaopenapi.models.Config;
  7. import com.hn.common.exception.BusinessException;
  8. import lombok.extern.slf4j.Slf4j;
  9. import java.util.HashMap;
  10. import java.util.Map;
  11. @Slf4j
  12. public class AliSmsUtil {
  13. /**
  14. * 您在xxx提交的商户资料,已认证通过,请登录app继续操作。祝颂商祺!
  15. * 用户成为我们商家推送短信
  16. */
  17. public static final String TEMPLATE_AUTH_SUCCESS = "SMS_123456";
  18. /**
  19. * 您的注册验证码为:${code},请妥善保管,请勿告诉他人。
  20. * 用于xxx短信注册使用
  21. */
  22. public static final String TEMPLATE_REGISTER = "SMS_1234";
  23. /**
  24. * 您的登录验证码为:${code},请妥善保管,勿告诉他人。
  25. */
  26. public static final String TEMPLATE_LOGIN = "SMS_12345";
  27. /**
  28. * 您的绑定手机号验证码为:${code},请妥善保管,请勿告诉他人。
  29. */
  30. public static final String TEMPLATE_BIND = "SMS_11111";
  31. /**
  32. * 短信签名
  33. */
  34. private static final String SIGN_NAME = "xxxx";
  35. /**
  36. * accessKeyId
  37. */
  38. private static final String ACCESS_KEY_ID = "accessKeyId";
  39. /**
  40. * accessKeySecret
  41. */
  42. private static final String ACCESS_KEY_SECRET = "accessKeySecret";
  43. /**
  44. * 使用AK&SK初始化账号Client
  45. * @param accessKeyId
  46. * @param accessKeySecret
  47. * @return Client
  48. * @throws Exception
  49. */
  50. public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
  51. Config config = new Config()
  52. // 您的AccessKey ID
  53. .setAccessKeyId(accessKeyId)
  54. // 您的AccessKey Secret
  55. .setAccessKeySecret(accessKeySecret);
  56. // 访问的域名
  57. config.endpoint = "dysmsapi.aliyuncs.com";
  58. return new com.aliyun.dysmsapi20170525.Client(config);
  59. }
  60. public static void login(String phone,String code){
  61. send(phone,code,TEMPLATE_LOGIN);
  62. }
  63. /**
  64. * 注册
  65. * @param phone
  66. * @param code
  67. */
  68. public static void register(String phone,String code){
  69. send(phone,code,TEMPLATE_REGISTER);
  70. }
  71. /**
  72. * 绑定
  73. * @param phone
  74. * @param code
  75. */
  76. public static void bind(String phone,String code){
  77. send(phone,code,TEMPLATE_BIND);
  78. }
  79. public static void send(String phone,String code,String templateCode) {
  80. com.aliyun.dysmsapi20170525.Client client = null;
  81. try {
  82. client = AliSmsUtil.createClient(ACCESS_KEY_ID,ACCESS_KEY_SECRET);
  83. } catch (Exception e) {
  84. log.error(e.getMessage());
  85. throw new BusinessException("短信发送失败");
  86. }
  87. Map map = new HashMap<>();
  88. map.put("code",code);
  89. SendSmsRequest sendSmsRequest = new SendSmsRequest()
  90. .setPhoneNumbers(phone)
  91. .setSignName(SIGN_NAME)
  92. .setTemplateCode(templateCode)
  93. .setTemplateParam(JSONUtil.toJsonStr(map));
  94. // 复制代码运行请自行打印 API 的返回值
  95. SendSmsResponse sendSmsResponse = null;
  96. try {
  97. sendSmsResponse = client.sendSms(sendSmsRequest);
  98. } catch (Exception e) {
  99. log.error(e.getMessage());
  100. throw new BusinessException("发送短信失败");
  101. }
  102. System.out.println(JSONUtil.toJsonStr(sendSmsResponse));
  103. }
  104. }

使用

  1. public static void main(String[] args_) throws Exception {
  2. AliSmsUtil.register("18715081234","123456");
  3. }

申请 AccessKey 和 AccessKeySecret

image.png

  • 他会提示您不能使用您的主 Key 要您使用子用户 Key

image.png

  • 点击开始使用子用户 AccessKey
  • 进入之后 选择创建用户 一定要勾选 编程访问 否则无法使用 Java 进行调用!!!

image.png

  • 创建用户完成之后 , 复制 AccessKey ID 和 AccessKey Secret

image.png

  • image.png
  • 权限可在用户选项卡中查看 => 继承用户组的权限 也可也单独给该用户添加权限

image.png

  • 添加权限,选择 AliyunDysmsFullAccess

image.png

image.png

  • 这样就可以了
  • 现在已经可以使用该 Key 和 Secert 进行调用阿里云 API 了

注意事项

即使 AccessKey Secret 丢了也不要紧 再次创建一个就可以了!

如果 AccessKey 丢失了 或者泄露 请马上删除 丢失 Key 的用户 以免造成财产丢失或被盗!

尽量不要使用主 AccessKey

参考

https://blog.csdn.net/weixin_43420255/article/details/105914979