package nju.seec.helper.util; import com.aliyuncs.CommonRequest; import com.aliyuncs.CommonResponse; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.http.MethodType; import com.aliyuncs.profile.DefaultProfile; import lombok.Data; import lombok.extern.slf4j.Slf4j; import nju.seec.helper.config.properties.SmsProperties; import nju.seec.helper.enums.ExceptionType; import nju.seec.helper.exception.HelperException; import org.springframework.stereotype.Component; /** * @author cst */ @Component @Slf4j public class SmsUtils { private static final String OK = "OK"; private final SmsProperties smsProperties; public SmsUtils(SmsProperties smsProperties) { this.smsProperties = smsProperties; } public void sendSmsCode(String to, String code) { DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", smsProperties.getAccessKeyId(), smsProperties.getAccessSecret()); 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", "cn-hangzhou"); request.putQueryParameter("PhoneNumbers", to); request.putQueryParameter("SignName", smsProperties.getSignName()); request.putQueryParameter("TemplateCode", smsProperties.getTemplateCode()); request.putQueryParameter("TemplateParam", "{\"code\":" + code + "}"); try { CommonResponse response = client.getCommonResponse(request); SendSmsResult sendSmsResult = JsonUtils.fromJson(response.getData(), SendSmsResult.class); if (!OK.equals(sendSmsResult.Code)) { log.error(sendSmsResult.Message); throw HelperException.of(ExceptionType.ERROR, "短信验证码发送失败"); } } catch (ClientException e) { log.error(e.getErrCode()); } } @Data public static class SendSmsResult { private String Message; private String RequestId; private String BizId; private String Code; } }