本文默认已在阿里云开通短信服务功能,且生成了自己的AccessKeyId 和AccessKeySecret 。
第一步:
导入阿里提供的sdk包即可,我用的4.0.3版本:
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.0.3</version>
</dependency>
第二步: 进入阿里云官网,找到短信服务,设置短信模板。
点开详情如下:
然后提交审核就行,基本上非工作日十几分钟就能通过了。
然后是设置签名:
点击添加签名如下:
然后提交等审核通过即可。短信服务这块设置结束。
接下来是后台代码接入部分。直接上代码,工具类,拿走急用,无需更改不明白的可留言。
private static final String accessKeyId = "对应你阿里云账户的 accessKeyId";
private static final String accessKeySecret = "对应你阿里云账户的 accessKeySecret";
private static final String signName="对应签名名称";
private static final String templateCode="对应模板代码";
private static int mobile_code = (int)((Math.random()*9+1)*100000);
public static int getCode(){
return mobile_code;
}
/**
* 短信发送
* @param telphone 发送的手机号
* 该方法中的东西无需更改可复制即用
*/
public static String SendCode(String telphone) {
DefaultProfile profile = DefaultProfile.getProfile("default",
accessKeyId, accessKeySecret);
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
//request.setProtocol(ProtocolType.HTTPS);
request.setMethod(MethodType.POST);
//阿里云对应发送短信的服务器地址(无需更改)
request.setDomain("dysmsapi.aliyuncs.com");
//对应的版本号(无需更改)
request.setVersion("2017-05-25");
request.setAction("SendSms");
request.putQueryParameter("PhoneNumbers", telphone);
request.putQueryParameter("SignName", signName);
request.putQueryParameter("TemplateCode", templateCode);
request.putQueryParameter("TemplateParam", "{\"code\":"+mobile_code+"}");
CommonResponse response=null;
try {
response = client.getCommonResponse(request);
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
return response.getData();
}
controller层代码入下:
@RequestMapping(value="/getCode",method = RequestMethod.GET)
@ApiOperation("获取验证码(阿里)")
public String getCode(@RequestParam("phone") String phone){
int code = MessageSendUtil.getCode();
CacheFactory.set(phone+1,String.valueOf(code));
return MessageSendUtil.SendCode(phone);
}
发送成功返回信息如下:
ps:accessKeyId 和accessKeySecret位置在阿里云这个位置看:
signName的位置在阿里云这里看:
templateCode位置在阿里云这里看:
结束。