開發中使用微信小程序發送短信驗證碼,總結下使用的流程。java
這個是首次接入完整的流程圖,按照流程來基本能夠實現接入。小程序
介紹下簽名和模板:微信小程序
剛開始看這幾個字時候會想這是啥東西?要仔細看官網介紹,就是在短信內容裏附加個性化簽名,再發送給被叫手機客戶 ,例如短信內容這個xx科技就是你設置個性化簽名。那麼後面的內容就是你建立的短信內容模板,能夠建立多個簽名和模板,看本身選擇用哪個都寫,能夠根據你寫代碼入參時候肯定使用。api
其它:微信
前面幾很簡單,注意建立短信簽名時候,注意填寫簽名名稱按照規定來,不能隨意填寫審覈可能不經過。其餘的按照接入指引來很簡單,自行腦補。dom
報錯:ide
本身測試的時候會遇到,緣由本身反覆用本身手機號發短信#-_-致使函數
該錯誤碼是指觸發短信默認流控限制;學習
短信驗證碼 :使用同一個簽名,對同一個手機號碼發送短信驗證碼,支持1條/分鐘,5條/小時,10條/天。一個手機號碼經過阿里雲短信服務平臺只能收到40條/天。(如您是在發送驗證碼時提示業務限流,建議根據以上業務調整接口調用時間)測試
短信通知: 使用同一個簽名和同一個短信模板ID,對同一個手機號碼發送短信通知,支持50條/日(如您是在發短信通知時提示業務限流,建議根據以上業務調整接口調用時間)
按照以上的限制來發送,即不會出現觸發流控的狀況。
下面舉個栗子Demo(以我作的驗證碼爲例)
public class SmsDemo { //產品名稱:雲通訊短信API產品,開發者無需替換 static final String product = "Dysmsapi"; //產品域名,開發者無需替換 static final String domain = "dysmsapi.aliyuncs.com"; //此處須要替換成開發者本身的AK(在阿里雲訪問控制檯尋找) static final String accessKeyId = "yourAccessKeyId"; static final String accessKeySecret = "yourAccessKeySecret"; public static SendSmsResponse sendSms() throws ClientException { //可自助調整超時時間 System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); System.setProperty("sun.net.client.defaultReadTimeout", "10000"); //初始化acsClient,暫不支持region化 IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret); DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); IAcsClient acsClient = new DefaultAcsClient(profile); //組裝請求對象-具體描述見控制檯-文檔部份內容 SendSmsRequest request = new SendSmsRequest(); //必填:待發送手機號 request.setPhoneNumbers("15000000000");//號碼不固定根據業務來 //必填:短信簽名-可在短信控制檯中找到 request.setSignName("雲通訊"); //必填:短信模板-可在短信控制檯中找到 request.setTemplateCode("SMS_1000000"); //可選(根據需求肯定,我作的發驗證碼因此要寫):模板中的變量替換JSON串, //如模板內容爲"親愛的${name},您的驗證碼爲${code}"時,此處的值爲 String codeId=RandomStringUtils.randomNumeric(6);//生成6位隨機數 request.setTemplateParam("{\"code\":\"" + codeId + "\"}"); //hint 此處可能會拋出異常,注意catch SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request); return sendSmsResponse; }
別忘了加上項目依賴的jar包
<dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>3.2.8</version> 注:如提示報錯,先升級基礎包版,沒法解決可聯繫技術支持 </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-dysmsapi</artifactId> <version>1.1.0</version> </dependency>
若是對本身的驗證碼錶示不滿,還能夠試試這幾個,或者本身找下其餘方法也行。
//產生6位長度的隨機字符串 RandomStringUtils.random(6); //使用指定的字符生成6位長度的隨機字符串 RandomStringUtils.random(6, new char[]{'a','b','c','d','e','f'}); //生成指定長度的字母和數字的隨機組合字符串 RandomStringUtils.randomAlphanumeric(6); //生成隨機數字字符串 RandomStringUtils.randomNumeric(6);
下面執行main函數便可體驗短信產品API功能了,是否是很簡單,趕快試下吧。
水平有限,如有問題請留言交流。
互相學習,共同進步 :) 轉載請註明出處謝謝。