我将短信api写成了工具类方便页面调用
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
/**
* 发送短信验证码util类
*/
public class SendSmsUtil {
public static String code;//验证码
public static String getSendSms(String userPhone){
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "accessKeyId", "secret");//accessKey签名
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
request.setSysMethod(MethodType.POST);
request.setSysDomain("dysmsapi.aliyuncs.com");
request.setSysVersion("2017-05-25");
request.setSysAction("SendSms");
request.putQueryParameter("RegionId", "cn-hangzhou");
request.putQueryParameter("PhoneNumbers", userPhone);//手机号 这里通过用户传输
request.putQueryParameter("SignName", "短信签名");//短信签名
request.putQueryParameter("TemplateCode", "短信模板code");//短信模板code
request.putQueryParameter("TemplateParam", code=getSmsVerificationCode());//将生成的验证码发送给用户
try {
CommonResponse response = client.getCommonResponse(request);
System.out.println(response.getData());//日志打印
} catch (
ServerException e) {
e.printStackTrace();
} catch (
ClientException e) {
e.printStackTrace();
}
return code;
}
//生成四位随机短信验证码
private static String getSmsVerificationCode(){
//发送的验证码必须是字符串 需要拼接
String coRed = "{\"code\":\"";
String oneNum = String.valueOf(Math.round(Math.random()*9));
String twoNum = String.valueOf(Math.round(Math.random()*9));
String threeNum = String.valueOf(Math.round(Math.random()*9));
String fourNum = String.valueOf(Math.round(Math.random()*9));
String coEnd = "\"}";
code = coRed + oneNum + twoNum + threeNum + fourNum + coEnd;//验证码拼接
return code;
}
}
以上是短信api的工具类内容,只需要在相应的地方调用即可,将签名内容这些填写成自己的就可以使用了,手机号是通过调用工具类是时候传入手机号。
接入步骤如下:
①前往阿里云官网 --> 找到 ‘短信服务’ 进入产品控制台
②在国内消息中 选择签名管理 --> 添加签名
③签名内容填写 (由于只能有一个验证码签名,我已经申请过了,所以这里我没法继续选择了)
④签名审核通过 --> 进入模板管理 添加模板
⑤这里通过之后 就可以进入快速学习 选择通过的签名和模板 发送短信验证啦!!激动人心的时候到了!!
全都选择了?但还是报错怎么办,别着急,解决方案有两种:①购买国内通用短信套餐包(这个比较实惠)②直接进入费用给你的账户余额充点钱,以便能正常使用阿里短信服务。
然后就能发送成功啦!!
下面进入实际实现阶段
选中自己的头像 进入AccessKey管理
选择开始使用子用户AccessKey(注意!!!! AccessKey只生成一次,请注意及时保存到记事簿或任何可以记录的东西上,AccessKey ID用于填入上面代码的accessKeyId,生成的AccessKey Secret 用于填入secret空缺)
然后创建一个用户
添加权限
直接添加一个管理所有阿里云资源的权限
现在填入信息,代码就可以运行了(调用工具类,传一个手机号)
使用maven导入sdk
pom.xml
<!--阿里短信sdk-->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.3</version>
</dependency>
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
/**
* 发送短信验证码util类
*/
public class SendSmsUtil {
public static String code;//验证码
public static String getSendSms(String userPhone){
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "accessKeyId", "secret");//accessKey签名
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
request.setSysMethod(MethodType.POST);
request.setSysDomain("dysmsapi.aliyuncs.com");
request.setSysVersion("2017-05-25");
request.setSysAction("SendSms");
request.putQueryParameter("RegionId", "cn-hangzhou");
request.putQueryParameter("PhoneNumbers", userPhone);//手机号 这里通过用户传输
request.putQueryParameter("SignName", "短信签名");//短信签名
request.putQueryParameter("TemplateCode", "短信模板code");//短信模板code
request.putQueryParameter("TemplateParam", code=getSmsVerificationCode());//将生成的验证码发送给用户
try {
CommonResponse response = client.getCommonResponse(request);
System.out.println(response.getData());//日志打印
} catch (
ServerException e) {
e.printStackTrace();
} catch (
ClientException e) {
e.printStackTrace();
}
return code;
}
//生成四位随机短信验证码
private static String getSmsVerificationCode(){
//发送的验证码必须是字符串 需要拼接
String coRed = "{\"code\":\"";
String oneNum = String.valueOf(Math.round(Math.random()*9));
String twoNum = String.valueOf(Math.round(Math.random()*9));
String threeNum = String.valueOf(Math.round(Math.random()*9));
String fourNum = String.valueOf(Math.round(Math.random()*9));
String coEnd = "\"}";
code = coRed + oneNum + twoNum + threeNum + fourNum + coEnd;//验证码拼接
return code;
}
}
完结撒花