1. 程式人生 > >阿里雲簡訊服務(JAVA)

阿里雲簡訊服務(JAVA)

一,前言

​ 簡訊驗證碼想必大家都不陌生,在很多網站,APP中都有使用到。比如登入,註冊,身份校驗等場景。不過通常情況下,簡訊服務都是外包給第三方公司的,接下來向大家分享如何使用阿里的簡訊服務。

二,雲通訊

​ 阿里雲官網:https://www.aliyun.com/

​ 忘記說了,沒有賬號的可以直接使用阿里旗下的任何一款賬號進行登入,支付寶,淘寶,釘釘等都可以,或者也可以單獨進行註冊,這裡就不再講述如何註冊了。

​ 登入成功以後,首頁如下,在上方搜尋框中搜索簡訊服務:

​ 1,點選簡訊服務控制檯,如圖:

​ 2,點選快速學習。

​ 顯示對號表示已經學習完成,如果是初次使用,可依此點選上面的5個選項,按照提示完成操作即可。

​ 補充一點,使用阿里簡訊服務在賬戶中是必須要有餘額,也就是先充值再消費。如圖點選充值即可:

​ 3,以上步驟完成以後,在左側目錄點選國內訊息。首先進行簽名管理,然後新增模板管理。
切記,簽名管理通過後產生的AK一定要儲存好,後期呼叫介面會用到。

​ 到這裡為止,前期都是基本的準備工作,可能有些細節問題沒有描述到,但是按照官網的指示也基本差不多。然後再去看官網提供的API介面文件說明。

三,API學習

3.1,基本引數介紹

​ 阿里簡訊API提供多種程式語言的DEMO,可以根據自己的需要進行選擇。

​ 其實阿里簡訊服務的API介紹的非常詳細,從上圖中可以看出,除了可以單獨給使用者傳送簡訊,還支援批量傳送,以及簡訊詳情查詢。首先我們可以先了解如何單獨給使用者傳送驗證碼,請看下圖的基本引數:

​ 以上3個引數是呼叫API必須要填寫的,第一個引數為手機號,第二個引數為簽名。簽名就是之前說過的,申請簽名通過後的簽名名稱。而最後一個是模板程式碼,同樣在上面介紹過模板申請通過後,會產生一個模板CODE。

3.2,引入SDK

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.1.0</version>
</dependency>

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
    <version>1.1.0</version>
</dependency>

3.3,示例程式碼(官網提供)

//設定超時時間-可自行調整
   System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
        System.setProperty("sun.net.client.defaultReadTimeout", "10000");
        //初始化ascClient需要的幾個引數
        final String product = "Dysmsapi";//簡訊API產品名稱(簡訊產品名固定,無需修改)
        final String domain = "dysmsapi.aliyuncs.com";//簡訊API產品域名(介面地址固定,無需修改)
        //替換成你的AK
        //final String accessKeyId = "yourAccessKeyId";//你的accessKeyId,參考本文件步驟2
        // final String accessKeySecret = "yourAccessKeySecret";//你的accessKeySecret,參考本文件步驟2
        //初始化ascClient,暫時不支援多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();


        //使用post提交
        request.setMethod(MethodType.POST);
        //1,必填:待發送手機號。支援以逗號分隔的形式進行批量呼叫,批量上限為1000個手機號碼,批量呼叫相對於單條呼叫及時性稍有延遲,驗證碼型別的簡訊推薦使用單條呼叫的方式;傳送國際/港澳臺訊息時,接收號碼格式為國際區號+號碼,如“85200000000”
        request.setPhoneNumbers("");
        //2,必填:簡訊簽名-可在簡訊控制檯中找到
        request.setSignName("");
        //3,必填:簡訊模板-可在簡訊控制檯中找到,傳送國際/港澳臺訊息時,請使用國際/港澳臺簡訊模版
        request.setTemplateCode("");
        //可選:模板中的變數替換JSON串,如模板內容為"親愛的${name},您的驗證碼為${code}"時,此處的值為
        //友情提示:如果JSON中需要帶換行符,請參照標準的JSON協議對換行符的要求,比如簡訊內容中包含\r\n的情況在JSON中需要表示成\\r\\n,否則會導致JSON在服務端解析失敗
        request.setTemplateParam("");
        SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);

        // 判斷是否傳送成功
        if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {
            //請求成功
            System.out.println("返回的狀態碼:" + sendSmsResponse.getCode());
            System.out.println("返回的資訊:" + sendSmsResponse.getMessage());
        }

​ 將以上的3個引數填成自己的,啟動工程便可以成功傳送簡訊。

​ 結果如圖所示:

    ![](https://img2018.cnblogs.com/blog/1655301/201908/1655301-20190815203410419-327235263.jpg)

四,總結

​ 是不是呼叫很簡單,但是在真正的專案中還是要進一步優化,尤其在分散式專案中呼叫。比如將引數抽取到配置檔案,及抽取成工具類等。

​ 最後由於時間倉促只是簡短的記錄,有很多細節沒有為大家分享到,所以如果遇到什麼問題可以在下方留言,看到後會第一時間回覆。感謝閱讀