package com.zy.crm.manager.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.aliyun.auth.credentials.Credential; import com.aliyun.auth.credentials.provider.StaticCredentialProvider; import com.aliyun.sdk.service.dysmsapi20170525.AsyncClient; import com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsRequest; import com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsResponse; import com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsResponseBody; import darabonba.core.client.ClientOverrideConfiguration; import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 短信发送工具 */ public class SmsUtils { /** * 阿里云市场API */ private static boolean aliyun_1(String phone, String code) { ArrayList> list = new ArrayList<>(); try { HashMap headers = new HashMap<>(); HashMap param = new HashMap<>(); String APPCODE = "15ce5d8be5e348c7b680dfd7cfb8307e"; headers.put("Authorization", "APPCODE " + APPCODE); param.put("templateId", "MEA92C3A45"); param.put("receive", phone); param.put("tag", code); String response = new HttpHandler.Builder() .setUri("https://smkjdxtzjk.market.alicloudapi.com") .setPath("/standard/sms/send") .setHeaders(headers) .setParams(param) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); if (Integer.parseInt(jsonObject.get("code").toString()) == 200) { return true; } } catch (Exception e) { e.printStackTrace(); } return false; } /** * 阿里云市场API 分配了新的规划申请单任务!请注意查收! */ private static boolean aliyun_2(String phone, String code) { try { HashMap headers = new HashMap<>(); HashMap param = new HashMap<>(); String APPCODE = "15ce5d8be5e348c7b680dfd7cfb8307e"; headers.put("Authorization", "APPCODE " + APPCODE); param.put("templateId", "M6F3C81FE3"); param.put("receive", phone); param.put("tag", code); String response = new HttpHandler.Builder() .setUri("https://smkjdxtzjk.market.alicloudapi.com") .setPath("/standard/sms/send") .setHeaders(headers) .setParams(param) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); if (Integer.parseInt(jsonObject.get("code").toString()) == 200) { return true; } } catch (Exception e) { e.printStackTrace(); } return false; } private static AsyncClient getClient() { StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder() .accessKeyId("LTAI4GBCtqGZAn5XDEREh1Pp") .accessKeySecret("SQQkh2kps3wxfbNXUg5nLZgWS2CMjm") .build()); // Configure the Client AsyncClient client = AsyncClient.builder() //.httpClient(httpClient) // Use the configured HttpClient, otherwise use the default HttpClient (Apache HttpClient) .credentialsProvider(provider) //.serviceConfiguration(Configuration.create()) // Service-level configuration // Client-level configuration rewrite, can set Endpoint, Http request parameters, etc. .overrideConfiguration( ClientOverrideConfiguration.create() // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi .setEndpointOverride("dysmsapi.aliyuncs.com") //.setConnectTimeout(Duration.ofSeconds(30)) ) .build(); return client; } /** * 发送短信验证码-阿里云原生 */ private static boolean aliyun_origin(String phone, String code) { AsyncClient client = getClient(); try { HashMap templateParam = new HashMap<>(); templateParam.put("code", code); // Parameter settings for API request SendSmsRequest sendSmsRequest = SendSmsRequest.builder() .phoneNumbers(phone) .signName("某某商场") .templateCode("SMS_195220399") .templateParam(JSON.toJSONString(templateParam)) // Request-level configuration rewrite, can set Http request parameters, etc. // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders())) .build(); // Asynchronously get the return value of the API request CompletableFuture response = client.sendSms(sendSmsRequest); // Synchronously get the return value of the API request SendSmsResponse resp = response.get(); SendSmsResponseBody body = resp.getBody(); // System.out.println(body.getCode()); // System.out.println(body.getMessage()); if (body.getCode().equals("OK")) { return true; } return false; } catch (Exception e) { return false; } finally { // Finally, close the client client.close(); } } /** * 发送短信验证码-阿里云原生 */ public static boolean sendSmsCode(String phone, String code) { return aliyun_1(phone, code); } /** * 发送短信-阿里云原生 */ public static boolean sendSmsCodeText(String phone, String code) { return aliyun_2(phone, code); } /** * 获取随机数 * @param length 随机数长度 */ public static String getRandomNum(Integer length) { Random random = new Random(); StringBuffer buffer = new StringBuffer(); for (int i = 0; i < length; i++) { buffer.append(random.nextInt(10)); } return buffer.toString(); } /** * 正则验证手机号 */ public static boolean verifyPhone(String phone) { // 定义手机号码的正则表达式 String regex = "^1[3456789]\\d{9}$"; // 编译正则表达式 Pattern pattern = Pattern.compile(regex); // 创建 Matcher 对象 Matcher matcher = pattern.matcher(phone); // 进行匹配 if (!matcher.matches()) { return false; } return true; } public static void main(String[] args) throws Exception { sendSmsCode("17788886666","666666"); } }