Si eso.
Que se utiliza aquí es Tencent plataforma de mensajería en la nube, con el argumento de que, por primera vez presentó la abertura 100 SMS
Después de la autenticación de nombre real personal, introduzca https://cloud.tencent.com/act/free
Según los pasos para llenar y plantillas de aplicación
A continuación, crear claves de la API https://console.cloud.tencent.com/cam/capi
Clic para continuar con el uso, haga clic en Nuevas claves
A continuación, introduzca https://console.cloud.tencent.com/api/explorer?Product=sms&Version=2019-07-11&Action=SendSms&SignVersion=
Copiar el código
1 importación com.tencentcloudapi.common.Credential; 2 importación com.tencentcloudapi.common.profile.ClientProfile; 3 importación com.tencentcloudapi.common.profile.HttpProfile; 4 importación com.tencentcloudapi.common.exception.TencentCloudSDKException; 5 6 importación com.tencentcloudapi.sms.v20190711.SmsClient; 7 8 importación com.tencentcloudapi.sms.v20190711.models.SendSmsRequest; 9 importación com.tencentcloudapi.sms.v20190711.models.SendSmsResponse; 10 11 pública de clase SendSMS 12 { 13 público estáticas void principales (args String []) { 14 try { 15 16 credencial CRED = nueva credencial ( "【SecretId】", "【SecretKey】" ); 17 18 HttpProfile httpProfile = nuevo HttpProfile (); 19 httpProfile.setEndpoint ( "sms.tencentcloudapi.com" ); 20 21 ClientProfile clientProfile = nuevo ClientProfile (); 22 clientProfile.setHttpProfile (httpProfile); 23 24 cliente SMSClient = nuevaSMSClient (CRED, "ap-Beijing" , clientProfile); 25 26 params String = "{\" PhoneNumberSet \ ": [\" + 86 【电话号码】 \ "], \" TemplateID \ ": \" 【模板ID】 \ "\ "SmsSdkAppid \": \" 【 SmsSdkAppid】 \ "}" ; 27 SendSmsRequest req = SendSmsRequest.fromJsonString (params, SendSmsRequest. Clase ); 28 29 SendSmsResponse resp = client.SendSms (req); 30 31 System.out.println (SendSmsRequest.toJsonString (resp)); 32 } catch (TencentCloudSDKException e) { 33 System.out.println (e.ToString ()); 35 36 } 37 38 }
Luego hay que añadir pom-dependientes:
. 1 < dependencia > 2 < la groupId > com.tencentcloudapi </ el groupId > 3. < El artifactId > tencentcloud-SDK-Java </ el artifactId > 4. < Versión > 3.1.27 </ Version > <! - Nota: Esto es sólo un ejemplo de número versión , por favor obtener la última versión https://mvnrepository.com/artifact/com.tencentcloudapi/tencentcloud-sdk-java -> 5 </ dependencia >
A continuación, puede utilizarlo.
---------------------------------
herramienta de sugerencia en el paquete, el número de teléfono entrante y el código de verificación, se establece en un método estático.
códigos de la primavera de arranque usadas en combinación código de la interfaz Redis:
1 paquete top.bigking.backstage.service.impl; 2 3 importación org.springframework.data.redis.core.RedisTemplate; 4 importación org.springframework.data.redis.serializer.StringRedisSerializer; 5 importación org.springframework.stereotype.Service; 6 importación top.bigking.backstage.service.VerifyCodeService; 7 importación top.bigking.backstage.utils.SendSms; 8 9 importación javax.annotation.Resource; 10 importación java.util.Random; 11 importación java.util.concurrent.TimeUnit; 12 13 / ** 14 * @author ABKing 15 * @since 02/04/2020下午5:41 16 * * / 17 @Service 18 pública de clase VerifyCodeServiceImpl implementos VerifyCodeService { 19 @Resource 20 privado RedisTemplate <String, String> redisTemplate; 21 22 @ Override 23 pública Boolean setVerifyCode (String phoneNum) { 24 redisTemplate.setKeySerializer ( nuevo StringRedisSerializer ()); 25 redisTemplate.setValueSerializer (nuevo nuevo StringRedisSerializer ()); 26 es Cadena Clave de código = "Verify_code:" + phoneNum + ": código" ; 27 Cadena codeCount = "Verify_code:" + phoneNum + ": COUNT" ; 28 código String = la getCode (6. ); 29 SendSMS. SendSMS (phoneNum, código); 30 // un día número uno hasta tres veces los códigos de transmisión 31 es de cadena COUNT = redisTemplate.opsForValue () GET (codeCount) ;. 32 IF (COUNT == nula ) { 33 se redisTemplate.opsForValue () SET. (codeCount, ,. 1" 1" . , TimeUnit.DAYS); 34 // códigos de 60 segundos expiran 35 redisTemplate.opsForValue () define (Clave de código, código, 60. , TimeUnit.SECONDS); 36 volver verdadero ; 37 } más si (Integer.parseInt (recuento) <= 2 ) { 38 redisTemplate.opsForValue () conjunto (codeCount, String.valueOf (Integer.parseInt (recuento) + 1), 1. , TimeUnit.DAYS); 39 // 验证码60秒过期 40 redisTemplate.opsForValue () define (Clave de código, código, 60. , TimeUnit.SECONDS); 41 regresan verdadera ; 42 } 43 de retorno falsa ; 44 } 45 Privada Cadena la getCode (longitud entero) { 46 es código String = "" ; 47 la Random Random = nuevo nuevo el Random (); 48 para ( int i = 0; i <longitud; i ++ ) { 49 // unido establecer los parámetros, valores en el rango [0, con destino), si no los parámetros de escritura, el valor int de la gama, 31 es de ~ 2 ^ -2 ^ 31-1 50 código random.nextInt = + (10 ); 51 es } 52 es el retorno de código; 53 es } 54 es 55 @ Override 56 es público cadena getVerifyCode (phoneNum String) { 57 es redisTemplate.setKeySerializer ( nuevo StringRedisSerializer ()); 58 redisTemplate.setValueSerializer ( nuevo StringRedisSerializer ()); 59 Cadena de Clave de código = "Verify_code:" + phoneNum + ": código" ; 60 de retorno redisTemplate.opsForValue get () (Clave de código).; 61 } 62 63 }