package com.java110.core.factory; 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; import com.java110.utils.cache.MappingCache; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Random; /* pom.xml com.aliyun aliyun-java-sdk-core 4.0.3 */ /** * Created by wuxw on 2019/3/23. */ public class AliSendMessageFactory { private final static Logger logger = LoggerFactory.getLogger(AliSendMessageFactory.class); public final static int DEFAULT_MESSAGE_CODE_LENGTH = 6; public final static String ALI_SMS_DOMAIN = "ALI_SMS"; /** * 生成6位短信码 * * @return */ public static String generateMessageCode() { return generateMessageCode(DEFAULT_MESSAGE_CODE_LENGTH); } /** * 生成验证码 * * @param limit 位数 * @return */ public static String generateMessageCode(int limit) { Random random = new Random(); String result = ""; for (int i = 0; i < limit; i++) { result += (random.nextInt(9) + 1); } return result; } public static void sendMessage(String tel, String code) { //开始发送验证码 logger.debug("发送号码为{},短信码为{}", tel, code); DefaultProfile profile = DefaultProfile.getProfile(MappingCache.getValue(ALI_SMS_DOMAIN, "region"), MappingCache.getValue(ALI_SMS_DOMAIN, "accessKeyId"), MappingCache.getValue(ALI_SMS_DOMAIN, "accessSecret")); IAcsClient client = new DefaultAcsClient(profile); CommonRequest request = new CommonRequest(); request.setSysMethod(MethodType.POST); request.setSysDomain("dysmsapi.aliyuncs.com"); request.setSysVersion("2017-05-25"); request.setSysAction("SendSms"); request.putQueryParameter("RegionId", MappingCache.getValue(ALI_SMS_DOMAIN, "region")); request.putQueryParameter("PhoneNumbers", tel); request.putQueryParameter("SignName", MappingCache.getValue(ALI_SMS_DOMAIN, "signName")); request.putQueryParameter("TemplateCode", MappingCache.getValue(ALI_SMS_DOMAIN, "TemplateCode")); request.putQueryParameter("TemplateParam", "{\"code\":" + code + "}"); try { CommonResponse response = client.getCommonResponse(request); logger.debug("发送验证码信息:{}", response.getData()); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } }