企业发送短信的时候:
1.)运营商提供接口(Webservice、restful),运营商(移动、联通)帮你发(运营商,要求短信量非常大)
2.)买短信猫(设备,第三方公司开发),调用短信猫的接口。
开发应用两种方案:
- 直接运营商方案 :直接谈,费用比较低,但要求量大!提供一个接口即可。
- 第三方运营商方案:很多(百度所有)–接口+硬件(短信猫-插sim卡)-大于
阿里大于官方示例
官网网址:https://api.alidayu.com/doc2/apiDetail?spm=a3142.8065913.1999205497.20.1Hz1VI&apiId=25450
请求示例
TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest();
req.setExtend("123456"); //可空,返回状态
req.setSmsType("normal"); //不可更改
req.setSmsFreeSignName("阿里大于"); //申请的短信签名,不可填写与申请的不一样
req.setSmsParamString("{\"code\":\"1234\",\"product\":\"alidayu\"}"); //短信模板中的变量如:{name}
req.setRecNum("13000000000"); //手机号码
req.setSmsTemplateCode("SMS_585014"); //短信模板的编号
AlibabaAliqinFcSmsNumSendResponse rsp = client.execute(req);
System.out.println(rsp.getBody());
XML示例 ###
<alibaba_aliqin_fc_sms_num_send_response>
<result>
</result>
</alibaba_aliqin_fc_sms_num_send_response>
异常示例
<error_response>
<code>50</code>
<msg>Remote service error</msg>
<sub_code>isv.invalid-parameter</sub_code>
<sub_msg>非法参数</sub_msg>
</error_response>
开发应用
首先需要在阿里大于注册,设置签名、短信类型,详细教程:https://doc.alidayu.com。
测试通过后,将代码写到自己系统中,并下载sdk。
将sdk的jar安装到maven中。
项目中引入jar。
代码
/**
* 保存工单
* @param noticeBill
* @param staff
*/
private void saveWorkBill(NoticeBill noticeBill, Staff staff) {
WorkBill workBill = new WorkBill();
workBill.setNoticeBill(noticeBill);//设置通知单
workBill.setRemark(noticeBill.getRemark());//设置备注
workBill.setStaff(staff);//设置取派员
workBill.setAttachbilltimes(new BigDecimal(0));//追单次数
workBill.setBuildtime(new Date());
workBill.setPickstate("新单");//取件状态:,取派员更改状态
workBill.setType("新");//工单类型(工单的类型状态:新,追,销)
//保存
workBillDao.save(workBill);
//将短信中需要的参数封装成json
Map<String,Object> map = new HashMap<String,Object>();
map.put("time", workBill.getBuildtime());
map.put("username", staff.getName());
String jsonString = JSON.toJSONString(map);
try {
//参数1:请求地址,查官方api
//参数2:应用的key
//参数3:安全码
TaobaoClient client = new DefaultTaobaoClient("https://eco.taobao.com/router/rest", "23658856", "5b4f951a07d3456883dac9");
AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest();
req.setExtend( "" );//扩展
req.setSmsType( "normal" );//短信类型
req.setSmsFreeSignName( "物流通知" );//必须是通过验证的签名名称
req.setSmsParamString( jsonString );//短信模板中设置的参数
req.setRecNum( staff.getTelephone() );//电话号码
req.setSmsTemplateCode( "SMS_50936897" );//短信模板中的模板ID
AlibabaAliqinFcSmsNumSendResponse rsp = client.execute(req);
System.out.println(rsp.getBody());
} catch (ApiException e) {
e.printStackTrace();
throw new RuntimeException("短信发送失败!");
}
}