企业发送短信的时候:
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());
<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("短信发送失败!"); } }