Página oficial de Aliyun
- Inicie sesión en https://www.aliyun.com/
- Solicite un nombre de firma para el sevricio de mensajes
- Agregue un patrón
Dependencia en el proeycto
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.16</version>
</dependency>
Archivo de configuración
aliyun.sms.regionId=default
aliyun.sms.key=LTAI5tM1Vtb****
aliyun.sms.secreto=PAjXlhEOU6ehy*****
Clase de configuración de herramientas
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class ConfigProperties implements InitializingBean {
@Value("${aliyun.sms.regionId}")
private String region;
@Value("${aliyun.sms.key}")
private String key;
@Value("${aliyun.sms.secreto}")
private String secret;
// Proporcionar acceso externo
public static String REGION;
public static String API_KEY;
public static String SECRET_KEY;
@Override
public void afterPropertiesSet() throws Exception {
REGION = region;
API_KEY = key;
SECRET_KEY = secret;
}
}
Generador de código aleatorio
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
public class RandomGenerator {
private static final Random random = new Random();
private static final DecimalFormat fourdf = new DecimalFormat("0000");
private static final DecimalFormat sixdf = new DecimalFormat("000000");
public static String generateFourDigitCode() {
return fourdf.format(random.nextInt(10000));
}
public static String generateSixDigitCode() {
return sixdf.format(random.nextInt(1000000));
}
/**
* Extraer n elementos de una lista
* @param list
* @param count
* @return
*/
public static ArrayList getRandomElements(List list, int count) {
Random random = new Random();
HashMap<Object, Object> map = new HashMap<>();
for (int i = 0; i < list.size(); i++) {
int number = random.nextInt(100) + 1;
map.put(number, i);
}
Object[] values = map.values().toArray();
ArrayList result = new ArrayList();
for (int i = 0; i < count; i++) {
result.add(list.get((int) values[i]));
System.out.print(list.get((int) values[i]) + "\t");
}
System.out.println();
return result;
}
}
Código para integrar el servicio de mensajería de Aliyun
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;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.HashMap;
import java.util.Map;
@Service
public class MessageService {
public boolean send(String phoneNumber, String verificationCode) {
if (StringUtils.isEmpty(phoneNumber)) {
return false;
}
DefaultProfile profile = DefaultProfile.
getProfile(ConfigProperties.REGION,
ConfigProperties.API_KEY,
ConfigProperties.SECRET_KEY);
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("PhoneNumbers", phoneNumber);
request.putQueryParameter("SignName", "ixuetao");
request.putQueryParameter("TemplateCode", "SMS_27947xxx");
Map<String, Object> parameters = new HashMap<>();
parameters.put("code", verificationCode);
request.putQueryParameter("TemplateParam", JSONObject.toJSONString(parameters));
try {
CommonResponse response = client.getCommonResponse(request);
System.out.println(response.getData());
return response.getHttpResponse().isSuccess();
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
return false;
}
}