短信sdk:使用阿里云短信sdk
生活随笔
收集整理的這篇文章主要介紹了
短信sdk:使用阿里云短信sdk
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
背景
項目要求短信驗證,先說思路。
1.調用阿里云短信sdk或其他廠商短信sdk
2.將隨機驗證碼保存 (可以保存到redis或mysql之類的,設置一個失效時間。 )
3.用戶輸入驗證碼說 和保存的驗證碼進行比較。 看是否一致,如果一致刪除保存的驗證碼,不一致就返回驗證失敗。
pom 引入
!-- 同步----> <dependency><groupId>com.aliyun</groupId><artifactId>dysmsapi20170525</artifactId><version>2.0.9</version></dependency>!-- 異步---><dependency><groupId>com.aliyun</groupId><artifactId>alibabacloud-dysmsapi20170525</artifactId><version>1.0.1</version></dependency>配置文件如下
aliyun.access-key-id=你的key aliyun.access-key-secret=你的keySecret aliyun.endpoint=dysmsapi.aliyuncs.com aliyun.region= cn-hangzhou #阿里云短信 aliyun.note.sign-name=阿里云短信測試 aliyun.note.template-code=SMS_154950909編寫配置文件
@Configuration @ConfigurationProperties(prefix = "aliyun") @Setter @Getter public class AliyunSendNoteConfig {private String accessKeyId;private String accessKeySecret;private String endpoint="dysmsapi.aliyuncs.com";private String region="cn-hangzhou";}創建config
@Configuration public class AliyunClientConfig {@Resourceprivate AliyunSendNoteConfig aliyunSendNoteConfig;/*** 使用AK&SK初始化賬號Client 同步* 發送短信后立馬知道結果* @return Client* @throws Exception*/@Beanpublic com.aliyun.dysmsapi20170525.Client createClient() throws Exception {Config config = new Config()// 您的 AccessKey ID.setAccessKeyId(aliyunSendNoteConfig.getAccessKeyId())// 您的 AccessKey Secret.setAccessKeySecret(aliyunSendNoteConfig.getAccessKeySecret());// 訪問的域名config.endpoint = aliyunSendNoteConfig.getEndpoint();return new com.aliyun.dysmsapi20170525.Client(config);}/*** 使用AK&SK初始化賬號Client 異步* 發送短信后,不需要知道結果,當然也可以通過Futur.get來獲取結果,可設置超時時間。* @return Client* @throws Exception*/@Beanpublic AsyncClient createAsyncClient() throws Exception {StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder().accessKeyId(aliyunSendNoteConfig.getAccessKeyId()).accessKeySecret(aliyunSendNoteConfig.getAccessKeySecret())//.securityToken("<your-token>") // use STS token.build());return AsyncClient.builder().region(aliyunSendNoteConfig.getRegion()).credentialsProvider(provider)//.serviceConfiguration(Configuration.create()) // Service-level configuration// Client-level configuration rewrite, can set Endpoint, Http request parameters, etc..overrideConfiguration(ClientOverrideConfiguration.create().setEndpointOverride(aliyunSendNoteConfig.getEndpoint())//.setReadTimeout(Duration.ofSeconds(30))).build();}}編寫service
基類接口
/**** 同步* @param phoneNumber 接收短信的手機號碼* @param signName 短信簽名名稱* @param templateCode 短信模板CODE* @param code 短信模板變量對應的實際值* @param outId 外部流水擴展字段* @return*/boolean syncSendMsg(String phoneNumber,String signName,String templateCode,String code,String outId);/**** 異步* @param phoneNumber 接收短信的手機號碼* @param signName 短信簽名名稱* @param templateCode 短信模板CODE* @param code 短信模板變量對應的實際值* @param outId 外部流水擴展字段* @return*/void asyncSendMsg(String phoneNumber,String signName,String templateCode,String code,String outId);阿里云短信接口
public interface AliyunSendMsgBaseService extends SendMsgBaseService{ }實現阿里云短信接口
@Service public class AliyunSendMsgServiceImpl implements AliyunSendMsgBaseService {@Resourceprivate com.aliyun.dysmsapi20170525.Client client;@Resourceprivate com.aliyun.sdk.service.dysmsapi20170525.AsyncClient asyncClient;@Overridepublic boolean syncSendMsg(String phoneNumber,String signName,String templateCode, String code,String outId) {HashMap<String, Object> templateMaps = Maps.newHashMap();templateMaps.put("code",code);SendSmsRequest sendSmsRequest = new SendSmsRequest().setSignName(signName).setTemplateCode(templateCode).setPhoneNumbers(phoneNumber).setTemplateParam(GsonUtil.object2String(templateMaps));if(StringUtils.hasLength(outId))sendSmsRequest.setOutId(outId);RuntimeOptions runtime = new RuntimeOptions();try {// 復制代碼運行請自行打印 API 的返回值SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, runtime);if(sendSmsResponse != null) {return SEND_MSG_SUCCESS.equals(sendSmsResponse.getBody().code);}} catch (TeaException error) {// 如有需要,請打印 errorerror.printStackTrace();com.aliyun.teautil.Common.assertAsString(error.message);} catch (Exception _error) {// 如有需要,請打印 error_error.printStackTrace();TeaException error = new TeaException(_error.getMessage(), _error);// 如有需要,請打印 errorcom.aliyun.teautil.Common.assertAsString(error.message);}return false;}@Overridepublic void asyncSendMsg(String phoneNumber, String signName, String templateCode, String code, String outId) {HashMap<String, Object> templateMaps = Maps.newHashMap();templateMaps.put("code",code);com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsRequest.Builder builder = com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsRequest.builder().signName(signName).templateCode(templateCode).phoneNumbers(phoneNumber).templateParam(GsonUtil.object2String(templateMaps));if(StringUtils.hasLength(outId))builder.outId(outId);// Asynchronously get the return value of the API requestasyncClient.sendSms(builder.build());}}調用發送短信接口
//驗證碼 可以是4位或6位的隨機數 String code= "1234" sendMsgBaseService.syncSendMsg(phoneNumber, aliYunNoteConfig.getSignName(),aliYunNoteConfig.getTemplateCode(), code, null)驗證
交流群
java交流群: 868794080
源碼資料
源碼資料
參考資料
阿里云短信sdk
總結
以上是生活随笔為你收集整理的短信sdk:使用阿里云短信sdk的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中信所 分区 查询_SCI期刊引证报告自
- 下一篇: IT项目管理