阿里大于 发送短信(maven)

问题1:升级后的App Key和App Secret获取入口找不到

问题2:为什么登入大于账户却进了云通信平台

原因:阿里大于全新升级为“阿里云 · 云通信”,成为阿里云旗下品牌。附上官网通告

问题3:阿里大于和网易云信有什么区别?

首先是API和SDK不一样, 其次是配置上有改动。新用户无法申请阿里大于的服务,只能使用阿里云通信。

旧版API发送短信,必须拥有 签名,APPKEY,APPSECRET 。官方给的demo例子

String url = "http://gw.api.taobao.com/router/rest";
TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest();
req.setExtend("123456");
 //必须填写normal
req.setSmsType("normal");
//你应用的名字
req.setSmsFreeSignName("阿里大于");
//模板中的参数,按照实际情况去
req.setSmsParamString("{\"code\":\"1234\",\"product\":\"alidayu\"}");
//电话号码
req.setRecNum("13000000000");
//模板
req.setSmsTemplateCode("SMS_585014");
AlibabaAliqinFcSmsNumSendResponse rsp = client.execute(req);
System.out.println(rsp.getBody());

新版API发送短信,必须拥有 签名,AccessKey ID,Access Key Secret 。官方给的demo例子

https://api.aliyun.com/?spm=a2c4g.11186623.2.14.59f150a4iZmuot#/?product=Dysmsapi&api=SendSms&params={%22RegionId%22:%22default%22,%22PhoneNumbers%22:%22%22,%22SignName%22:%22%22}&tab=DEMO&lang=JAVA

        DefaultProfile profile = DefaultProfile.getProfile("default", "<accessKeyId>", "<accessSecret>");
        IAcsClient client = new DefaultAcsClient(profile);
        CommonRequest request = new CommonRequest();
        //request.setProtocol(ProtocolType.HTTPS);
        request.setMethod(MethodType.POST);
        request.setDomain("dysmsapi.aliyuncs.com");
        request.setVersion("2017-05-25");
        request.setAction("SendSms");
        request.putQueryParameter("PhoneNumbers", "13800138000");
        request.putQueryParameter("SignName", "签名");
        request.putQueryParameter("TemplateCode", "SMS123456");
        try {
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }

 目前阿里大于已经不允许申请测试的签名,AccessKey ID,Access Key Secret以及短信模板可以正常申请,但需注意格式和命名,不符合规则的命名会导致审核时间过长甚至不通过。

 

 在了解上述问题后,接下来正式开发

1、创建Maven项目,下载SDK

阿里大于的SDK在maven库中,无法找到。需要开发中自己在本地打包加入。我的做法是直接把打包好maven包解压,然后放到本地的maven库。这是我自己打包好的maven包。有需要的可以去我的资源下载:https://download.youkuaiyun.com/download/henry_lin_wind/11011951

在 pom.xml文件中添加dependency,因为本地已存在该maven包,软件会自动导入。

<dependency>
         <groupId>alidayu</groupId>
         <artifactId>alidayu</artifactId>
         <version>1.0</version>
</dependency>

导入成功后,可以在开发软件的maven中查看。

 2、短信发送代码可以先参考官方demo,下面是根据我的开发需求改进的

import com.taobao.api.ApiException;
import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient;
import com.taobao.api.request.AlibabaAliqinFcSmsNumSendRequest;
import com.taobao.api.response.AlibabaAliqinFcSmsNumSendResponse;

public class DaYuDemo {
    public static String requestSmsCode(String mobiles,String template,String params) {
        //阿里大鱼URL
        String url = "http://gw.api.taobao.com/router/rest";
        //以下才是重点  三个参数,一个url阿里大鱼的服务地址,其他两个去阿里大鱼后端查看自己的相应的参数
        TaobaoClient client = new DefaultTaobaoClient(url, "", "");      
        AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest();
        req.setExtend("1");
        //必须填写normal
        req.setSmsType("normal");
        //你应用的名字
        req.setSmsFreeSignName("");
       //电话号码
        req.setRecNum(mobiles);
        //模板
        req.setSmsTemplateCode(template);//
        //模板中的参数,按照实际情况去
        req.setSmsParamString("{"+params+"}");

        try {
            AlibabaAliqinFcSmsNumSendResponse rsp = client.execute(req);
            if(rsp.getErrorCode() == null){
                System.out.println("发送成功");
                System.out.println(rsp.getBody().toString());
                System.out.println(rsp.getResult().getMsg());
                return "发送成功";
            }else {
                System.out.println("发送失败");
                System.out.println("code:" + rsp.getErrorCode());
                System.out.println("msg:" + rsp.getSubMsg());
                System.out.println("sub_code:" + rsp.getErrorCode());
                System.out.println("sub_msg:" + rsp.getSubMsg());
                System.out.println(rsp.getBody().toString());
                System.out.println();
                return "发送失败";
            }
        } catch (ApiException e) {
            // TODO Auto-generated catch block
             e.printStackTrace();
            return "接口调用失败";
        }


    }
    public static void main(String[] args){
        String result = requestSmsCode("13800138000","SMS_1234567898","code:"123456"");
        System.out.println("阿里大于短信发送结果:"+result);
    }
}

接口调用成功后,通过一个AlibabaAliqinFcSmsNumSendResponse实体类接收结果

a.发送失败的接口返回

b. 发送成功的接口返回

短信发送状态回执错误码:https://doc.alidayu.com/docs/doc.htm?spm=a3142.7629140.4.20.7c071239YFYQSE&treeId=135&articleId=107720&docType=1

生成短信日志时用到字符串的提取和替换,可以参考我的博客 https://blog.youkuaiyun.com/Henry_Lin_Wind/article/details/88639535

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值