对接阿里的短信接口笔记

主要引入的依赖:

<dependency>
    <groupId>com.aliyun.api.gateway</groupId>
    <artifactId>sdk-core-java</artifactId>
    <version>1.1.0</version>
</dependency>

代码展示:

import com.alibaba.cloudapi.sdk.client.ApacheHttpClient;
import com.alibaba.cloudapi.sdk.enums.HttpMethod;
import com.alibaba.cloudapi.sdk.enums.ParamPosition;
import com.alibaba.cloudapi.sdk.enums.Scheme;
import com.alibaba.cloudapi.sdk.model.ApiCallback;
import com.alibaba.cloudapi.sdk.model.ApiRequest;
import com.alibaba.cloudapi.sdk.model.ApiResponse;
import com.alibaba.cloudapi.sdk.model.HttpClientBuilderParams;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

@Slf4j
@Service
public class SMSUtil extends ApacheHttpClient {
    private static final String HOST = "smssend.shumaidata.com";
    private static final String PATH = "/sms/send";
    private static final String APPKEY = "xxxxx";
    public static final String APPSECRET = "xxxxx";
    public static final String APPCODE = "xxxxx";
    static SMSUtil instance = new SMSUtil();

    public static SMSUtil getInstance(){return instance;}

    public SMSUtil(){
        HttpClientBuilderParams httpClientBuilderParams = new HttpClientBuilderParams();
        httpClientBuilderParams.setAppKey(APPKEY);
        httpClientBuilderParams.setAppSecret(APPSECRET);
        httpClientBuilderParams.setScheme(Scheme.HTTPS);
        httpClientBuilderParams.setHost(HOST);
        super.init(httpClientBuilderParams);
    }

    /**
     * 异步接口
     * @param templateId
     * @param receive
     * @param tag
     * @param callback
     */
    public void sendAnsy(String templateId , String receive , String tag , ApiCallback callback) {

        ApiRequest request = new ApiRequest(HttpMethod.POST_FORM , PATH);
        request.addParam("templateId" , templateId , ParamPosition.QUERY , true);
        request.addParam("receive" , receive , ParamPosition.QUERY , true);
        request.addParam("tag" , tag , ParamPosition.QUERY , false);
        log.info("【异步发送短信】请求为{}", request.getFormParams());
        sendAsyncRequest(request , callback);
    }

    /**
     * 同步接口
     * @param templateId
     * @param receive
     * @param tag
     * @return
     */
    public ApiResponse send(String templateId , String receive , String tag) {
        ApiRequest request = new ApiRequest(HttpMethod.POST_FORM , PATH);
        request.addParam("templateId" , templateId , ParamPosition.QUERY , true);
        request.addParam("receive" , receive , ParamPosition.QUERY , true);
        request.addParam("tag" , tag , ParamPosition.QUERY , false);
        log.info("【同步发送短信】请求为{}", request.getFormParams());
        return sendSyncRequest(request);
    }

}

说明:

主要参数有三
* @param templateId   模板ID,这个要去对应的控制台去申请
* @param receive  短信接受者的手机号
* @param tag  填充内容,多变量传入格式 aaa|bbb 用 | 符号按顺序隔开

 

posted @ 2023-04-10 16:52  忧愁的chafry  阅读(157)  评论(0)    收藏  举报