package foundation.send.sms; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; 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.google.gson.Gson; import darabonba.core.client.ClientOverrideConfiguration; public class AliyunSMSProvider extends SmsProvider { private static Logger logger; private static AliyunSMSProvider instance; static { logger = LogManager.getLogger(AliyunSMSProvider.class); } public static synchronized AliyunSMSProvider getInstance() { if (instance == null) { instance = new AliyunSMSProvider(); } return instance; } @Override public String getName() { logger.info("aliyun"); return "aliyun"; } @Override public void sendSms(SmsBuilder smsBuilder, SmsBuilderDetail smsBuilderDetail) throws Exception { StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder() .accessKeyId(smsBuilder.getSmsConfig().getIdkey()) .accessKeySecret(smsBuilder.getSmsConfig().getSecretkey()) .build()); AsyncClient client = AsyncClient.builder() .region(smsBuilder.getSmsConfig().getRegion()) .credentialsProvider(provider) .overrideConfiguration(ClientOverrideConfiguration.create() .setEndpointOverride(smsBuilder.getSmsConfig().getEndpoint())) .build(); SendSmsRequest sendSmsRequest = SendSmsRequest.builder() .signName(smsBuilderDetail.getSignName()) .templateCode(smsBuilderDetail.getTemplateCode()) .phoneNumbers(smsBuilder.getPhone()) .templateParam(smsBuilderDetail.getTemplateContent()) .build(); CompletableFuture response = client.sendSms(sendSmsRequest); SendSmsResponse resp = response.get(); System.out.println(new Gson().toJson(resp)); client.close(); } @Override public void sendBatchSms(SmsBuilder smsBuilder, SmsBuilderDetail smsBuilderDetail) throws Exception { } public static void main(String[] args) throws InterruptedException, ExecutionException { StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder() .accessKeyId("LTAI4G92tbAbpbN9eLbyFDdx") .accessKeySecret("bbGYrr1oYQQf3MDA3yNOkZswxn8UBi") .build()); AsyncClient client = AsyncClient.builder() .region("cn-hangzhou") .credentialsProvider(provider) .overrideConfiguration(ClientOverrideConfiguration.create() .setEndpointOverride("dysmsapi.aliyuncs.com")) .build(); SendSmsRequest sendSmsRequest = SendSmsRequest.builder() .signName("阿里云短信测试") .templateCode("SMS_284995800") .phoneNumbers("18350350522") .templateParam("{\"code\":\"03521\"}") .build(); CompletableFuture response = client.sendSms(sendSmsRequest); SendSmsResponse resp = response.get(); System.out.println(new Gson().toJson(resp)); client.close(); } }