手把手教你对接阿里云短信服务
正好雙十二,最近在做一個(gè)小項(xiàng)目需要用到短信業(yè)務(wù),注冊了新用戶125買了5000條短信,有效期2年。
那么如何對接阿里云短信,需要做哪些操作?
可以參考https://help.aliyun.com/document_detail/59210.html
短信流程圖
短信使用流程見下圖:
入駐阿里云,阿里云注冊入口:點(diǎn)擊注冊頁面、然后實(shí)名認(rèn)證
開通短信服務(wù)
1.開通短信服務(wù):點(diǎn)擊開通短信服務(wù)
2.進(jìn)入控制臺:點(diǎn)擊查看控制臺頁面
獲取AccessKey
1創(chuàng)建AccessKey: 點(diǎn)擊創(chuàng)建AccessKey
2.獲取AccessKey ID和AccessKey Secret:點(diǎn)擊查看AccessKey ID和AccessKey Secret
創(chuàng)建簽名和模版
1.創(chuàng)建簽名前查看短信規(guī)則和審核規(guī)則:短信業(yè)務(wù)規(guī)則,審核規(guī)則
2.創(chuàng)建短信簽名:點(diǎn)擊查看創(chuàng)建短信簽名
需要審核,大概兩個(gè)小時(shí)。
3.創(chuàng)建短信模版:點(diǎn)擊查看創(chuàng)建短信模版
注意模板中只能包含一個(gè)占位符。如下。需要審核,大概兩個(gè)小時(shí)。請記住模板Code,如:SMS_181918946。下面調(diào)用接口是需要該參數(shù)。
您的驗(yàn)證碼為${code},該驗(yàn)證碼有效時(shí)間為3分鐘。驗(yàn)證碼只能自己知道,打死也不能告訴別人哦!
短信接口配置
1.設(shè)置訪問權(quán)限控制:點(diǎn)擊訪問權(quán)限控制
2.SDK及DEMO下載:點(diǎn)擊下載SDK及DEMO
3.API文檔:點(diǎn)擊查看API文檔簡介
創(chuàng)建AccessKey
訪問密鑰AccessKey(AK)相當(dāng)于登錄密碼,只是使用場景不同。AccessKey用于程序方式調(diào)用云服務(wù)API,而登錄密碼用于登錄控制臺。如果您不需要調(diào)用API,那么就不需要?jiǎng)?chuàng)建AccessKey。
背景信息
您可以使用AccessKey構(gòu)造一個(gè)API請求(或者使用云服務(wù)SDK)來操作資源。AccessKey包括AccessKeyId和AccessKeySecret。
AccessKeyId用于標(biāo)識用戶。 AccessKeySecret是用來驗(yàn)證用戶的密鑰。AccessKeySecret必須保密。警告 禁止使用主賬號AK,因?yàn)橹髻~號AK泄露會威脅您所有資源的安全。請使用子賬號(RAM用戶)AK進(jìn)行操作,可有效降低AK泄露的風(fēng)險(xiǎn)。
操作步驟
云賬號登錄RAM控制臺。在左側(cè)導(dǎo)航欄的人員管理菜單下,單擊用戶。在用戶登錄名稱/顯示名稱列表下,單擊目標(biāo)RAM用戶名稱。在用戶AccessKey 區(qū)域下,單擊創(chuàng)建新的AccessKey。首次創(chuàng)建時(shí)需填寫手機(jī)驗(yàn)證碼。單擊確認(rèn)。
1、先創(chuàng)建用戶組,給用戶組加權(quán)限【短信管理權(quán)限】;
2、創(chuàng)建用戶,該用戶可以設(shè)置登陸權(quán)限,可以有獨(dú)立的密碼;
3、把用戶加入到用戶組,該用戶將擁有用戶組設(shè)置的權(quán)限;
4、給用戶生成Access Key和SecretKey;
上面的步驟做完后,可以參考API文檔中的示例代碼,調(diào)用阿里云短信接口。
我編寫的代碼如下:
package org.linlinjava.litemall.core.notify;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; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.linlinjava.litemall.core.util.JacksonUtil;import java.util.HashMap; import java.util.Map;/** 阿里云短信服務(wù)*/ public class AliyunSmsSender implements SmsSender {private final Log logger = LogFactory.getLog(AliyunSmsSender.class);private String regionId;private String accessKeyId;private String accessKeySecret;private String sign;public String getRegionId() {return regionId;}public void setRegionId(String regionId) {this.regionId = regionId;}public String getAccessKeyId() {return accessKeyId;}public void setAccessKeyId(String accessKeyId) {this.accessKeyId = accessKeyId;}public String getAccessKeySecret() {return accessKeySecret;}public void setAccessKeySecret(String accessKeySecret) {this.accessKeySecret = accessKeySecret;}public String getSign() {return sign;}public void setSign(String sign) {this.sign = sign;}@Overridepublic SmsResult send(String phone, String content) {SmsResult smsResult = new SmsResult();smsResult.setSuccessful(false);return smsResult;}@Overridepublic SmsResult sendWithTemplate(String phone, String templateId, String[] params) {DefaultProfile profile = DefaultProfile.getProfile(this.regionId, this.accessKeyId, this.accessKeySecret);IAcsClient client = new DefaultAcsClient(profile);CommonRequest request = new CommonRequest();request.setMethod(MethodType.POST);request.setDomain("dysmsapi.aliyuncs.com");request.setVersion("2017-05-25");request.setAction("SendSms");request.putQueryParameter("RegionId", this.regionId);request.putQueryParameter("PhoneNumbers", phone);request.putQueryParameter("SignName", this.sign);request.putQueryParameter("TemplateCode", templateId);String templateParam = "{}";if(params.length == 1){Map<String, String> data = new HashMap<>();data.put("code", params[0]);templateParam = JacksonUtil.toJson(data);}else if(params.length > 1){Map<String, String> data = new HashMap<>();data.put("code", params[0]);for(int i = 1; i < params.length; i++){data.put("code" + i, params[i]);}templateParam = JacksonUtil.toJson(data);}request.putQueryParameter("TemplateParam", templateParam);try {CommonResponse response = client.getCommonResponse(request);SmsResult smsResult = new SmsResult();smsResult.setSuccessful(true);smsResult.setResult(response);return smsResult;} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();}SmsResult smsResult = new SmsResult();smsResult.setSuccessful(false);return smsResult;} }其中RegionId可以是cn-hangzhou、cn-beijing等;Version必須是2017-05-25;其他參數(shù)AccessKey和SecretKey為在上面申請的。
最終效果
總結(jié)
以上是生活随笔為你收集整理的手把手教你对接阿里云短信服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GMap.NET控件使用
- 下一篇: 俞敏洪沉默,新东方落泪