一,alibaba短信接口調用
1)調用阿里的短信接口是很方便的,前提是你要開通好阿里的短信服務;
二,開通大體流程
1)登錄阿里控制台----->開通短信服務------>交錢-------->獲取AK-------->配置簽名(配置消息簽名,一般是公司名)
-------->配置模板(配置消息內容,例如:你的驗證碼是${code},請妥善保管.....)------->開發
三,下載demo,引入依賴jar包
<dependency>
<groupId>aliyun.java.sdk</groupId>
<artifactId>core</artifactId>
<version>3.3.1</version>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/aliyun-java-sdk-core-3.3.1.jar</systemPath>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>aliyun.java.sdk</groupId>
<artifactId>dysmsapi</artifactId>
<version>1.0.0</version>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/aliyun-java-sdk-dysmsapi-1.0.0.jar</systemPath>
<scope>compile</scope>
</dependency>
四,調用接口
@Controller
public class ShortMessageController {
//產品名稱:雲通信短信API產品,開發者無需替換
static final String product = "Dysmsapi";
//產品域名,開發者無需替換
static final String domain = "dysmsapi.aliyuncs.com";
// TODO 此處需要替換成開發者自己的AK(在阿里雲訪問控制台尋找)
static final String accessKeyId = "**********";
static final String accessKeySecret = "**************";
@Autowired
private VerificationCodeMapper verificationCodeMapper;
@RequestMapping("getSsm")
@ResponseBody
public String getSsm(String number) {
//可自助調整超時時間
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//初始化acsClient,暫不支持region化
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
try {
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
} catch (ClientException e1) {
e1.printStackTrace();
}
IAcsClient acsClient = new DefaultAcsClient(profile);
//隨機生成六位驗證碼
int code = (int)((Math.random()*9+1)*100000);
//刪除該號碼上次的驗證碼記錄
verificationCodeMapper.deleteVerificationCodeMapper(number);
//保存到數據庫
VerificationCode verificationCode = new VerificationCode();
verificationCode.setCode(code+"");
verificationCode.setNumber(number);
int i =verificationCodeMapper.addVerificationCode(verificationCode);
//組裝請求對象-具體描述見控制台-文檔部分內容
SendSmsRequest request = new SendSmsRequest();
//必填:待發送手機號
request.setPhoneNumbers(number);
//必填:短信簽名-可在短信控制台中找到,你在簽名管理里的內容
request.setSignName("星晨");
//必填:短信模板-可在短信控制台中找到,你模板管理里的模板編號
request.setTemplateCode("SMS_115760262");
//可選:模板中的變量替換JSON串,如模板內容為"親愛的${name},您的驗證碼為${code}"時,此處的值為
request.setTemplateParam("{\"code\":\""+code+"\"}");
//選填-上行短信擴展碼(無特殊需求用戶請忽略此字段)
//request.setSmsUpExtendCode("90997");
//可選:outId為提供給業務方擴展字段,最終在短信回執消息中將此值帶回給調用者
//request.setOutId("yourOutId");
//hint 此處可能會拋出異常,注意catch
SendSmsResponse sendSmsResponse = null;
try {
sendSmsResponse = acsClient.getAcsResponse(request);
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
//獲取發送狀態
String cod = sendSmsResponse.getCode();
return cod;
}
}