微信小程序 - 使用阿里雲發送短信

開發中使用微信小程序發送短信驗證碼,總結下使用的流程。java

這個是首次接入完整的流程圖,按照流程來基本能夠實現接入。小程序

短信流程圖

介紹下簽名和模板:微信小程序

剛開始看這幾個字時候會想這是啥東西?要仔細看官網介紹,就是在短信內容裏附加個性化簽名,再發送給被叫手機客戶 ,例如短信內容這個xx科技就是你設置個性化簽名。那麼後面的內容就是你建立的短信內容模板,能夠建立多個簽名和模板,看本身選擇用哪個都寫,能夠根據你寫代碼入參時候肯定使用。api

其它:微信

前面幾很簡單,注意建立短信簽名時候,注意填寫簽名名稱按照規定來,不能隨意填寫審覈可能不經過。其餘的按照接入指引來很簡單,自行腦補。dom

報錯:ide

本身測試的時候會遇到,緣由本身反覆用本身手機號發短信#-_-致使函數

報錯is-business-limit-control-message

該錯誤碼是指觸發短信默認流控限制;學習

短信驗證碼 :使用同一個簽名,對同一個手機號碼發送短信驗證碼,支持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功能了,是否是很簡單,趕快試下吧。

 

水平有限,如有問題請留言交流。

互相學習,共同進步 :) 轉載請註明出處謝謝。

相關文章
相關標籤/搜索