Java接入阿里雲驗證碼短信服務體驗

申請阿里雲短信服務

打開阿里雲的控制檯,在產品與服務中找到雲通信,並選擇短信服務html

而後會有一個新手接入的教程,這邊直接跟着快速學習瞭解一下短信服務的基本流程,快速學習下面有短信測試的Demo,能夠嘗試一下,前提是得再阿里雲裏有餘額,本地每條短信0.04元已近很良心價了呢java

再使用以前,確定是先添加本身驗證短信的簽名和模板,這些在快速學習中有提到,只是申請須要1個小時左右的審覈時間。json

趁着審覈的這段時間,感受看看短信服務的開發文檔,java向阿里雲請求短信服務的參數api

請求參數

名稱 類型 是否必選 示例值 描述
PhoneNumbers String 15900000000 接收短信的手機號碼。格式:國內短信:11位手機號碼,例如15951955195。國際/港澳臺消息:國際區號+號碼,例如85200000000。支持對多個手機號碼發送短信,手機號碼之間以英文逗號(,)分隔。上限爲1000個手機號碼。批量調用相對於單條調用及時性稍有延遲。說明 驗證碼類型短信,建議使用單獨發送的方式。
SignName String 阿里雲 短信簽名名稱。請在控制檯簽名管理頁面簽名名稱一列查看。說明 必須是已添加、並經過審覈的短信簽名。
TemplateCode String SMS_153055065 短信模板ID。請在控制檯模板管理頁面模板CODE一列查看。說明 必須是已添加、並經過審覈的短信簽名;且發送國際/港澳臺消息時,請使用國際/港澳臺短信模版。
AccessKeyId String LTAIP00vvvvvvvvv 主帳號AccessKey的ID。
Action String SendSms 系統規定參數。取值:SendSms
OutId String abcdefgh 外部流水擴展字段。
SmsUpExtendCode String 90999 上行短信擴展碼,無特殊須要此字段的用戶請忽略此字段。
TemplateParam String {"code":"1111"} 短信模板變量對應的實際值,JSON格式。說明 若是JSON中須要帶換行符,請參照標準的JSON協議處理。

返回參數

名稱 類型 示例值 描述
BizId String 900619746936498440^0 發送回執ID,可根據該ID在接口QuerySendDetails中查詢具體的發送狀態。
Code String OK 請求狀態碼。返回OK表明請求成功。其餘錯誤碼詳見錯誤碼列表
Message String OK 狀態碼的描述。
RequestId String F655A8D5-B967-440B-8683-DAD6FF8DE990 請求ID。

而後咱們的先去控制檯,等簽名和模板都審覈經過後就能夠直接使用了bash

短信服務在java中的使用

首先得導入阿里雲短信服務的maven依賴dom

<!--阿里短信服務-->
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.1.0</version>
</dependency>
複製代碼

分裝一個短信服務的工具類maven

package com.drxzt.common.util;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
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;

/** * className MassageUtil * description TODO * * @author DR XZT * @version 1.0 * @date 2019/7/18 10:15 */
public class MassageUtil extends BaseUtil {

    private static final String ACCESS_KEY_Id = "AsccessKeyID";
    private static final String ACCESS_KEY_SECRET = "AsccessKeySecret";
    private static final String REGION_ID = "cn-hangzhou";
    private static final String SIGN_NAME = "短信簽名";
    private static final String TEMPLATE_CODE = "短信模板code";


    public static void main(String[] args) {
        System.out.println(senMassage("phoneNum"));
    }

    public static JSONObject senMassage(String phoneNumber) {
        JSONObject result = new JSONObject();
        //隨機生成6位驗證碼
        String code = String.valueOf((int) (Math.random() * 10000 + 10000)).substring(1);
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", ACCESS_KEY_Id, ACCESS_KEY_SECRET);
        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", REGION_ID);
        request.putQueryParameter("PhoneNumbers", phoneNumber);
        request.putQueryParameter("SignName", SIGN_NAME);
        request.putQueryParameter("TemplateCode", TEMPLATE_CODE);
        request.putQueryParameter("TemplateParam", "{\"code\":\"" + code + "\"}");
        try {
            CommonResponse response = client.getCommonResponse(request);
            result = JSON.parseObject(response.getData());
            result.put("verCode", code);
            return result;
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
        return result;
    }
}
複製代碼

調用結果:工具

{     
        "Message": "OK",
        "RequestId": "080D4F9C-E89C-42C3-BFA7-0B944CA5D67E",
        "BizId": "400511863443876834^0",
        "Code": "OK",
        "verCode": "5988"
    }
複製代碼
相關文章
相關標籤/搜索