打開阿里雲的控制檯,在產品與服務中找到雲通信,並選擇短信服務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
首先得導入阿里雲短信服務的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"
}
複製代碼