PHP下基于创蓝253接口的短信发送
写这篇博客记念下我这次尴尬的工作。
首先这次的需求是公司基于借款人给投资人还款时批量发送短信的需求,刚接到需求的时候我一脸懵逼,无所适从。我可是从没写过的,也不知道发送短信的机制是什么。今天写下这篇blog写是防止自己以后忘记方便看一下。同时也给如果有同样需求的新手们借鉴,可能写的不好,希望看到的大神们多多指教,共同学习,共同进步。
好了!不多说那些有的没了,再多说就矫情了。
现在来看下235的接口文档:
1 普通短信发送
用户在遵循HTTP或者HTTPS协议的前提下,可通过GET和POST方式提交短信发送请求。POST方式提交短信不超过50000个手机号码,每个号码用英文逗号间隔。(营销及通知发送相同内容给多个手机号码时,通过POST方式提交,建议1000或者1000以上一个包提交)。
1.1 短信提交地址
1.1 参数定义
序号 |
参数 |
说明 |
1 |
account |
必填参数。用户账号 |
2 |
pswd |
必填参数。用户密码 |
3 |
mobile |
必填参数。合法的手机号码,号码间用英文逗号分隔 |
4 |
msg |
必填参数。短信内容,短信内容长度不能超过585个字符。使用URL方式编码为UTF-8格式。短信内容超过70个字符(企信通是60个字符)时,会被拆分成多条,然后以长短信的格式发送。 |
5 |
needstatus |
必填参数。是否需要状态报告,取值true或false,true,表明需要状态报告;false不需要状态报告 |
6 |
extno |
可选参数,扩展码,用户定义扩展码,3位 |
我用的是这个URL:因为我的短信内容是带变量的。http://sapi.253.com/msg/HttpVarSM
因为批量发送: 我的第三个参数用的是params,字符串格式的多条信息,每个数组用';'隔开,数组的每个元素用','隔开。规定格式。
我的params格式是这样的‘mobileNo,UserName,Time;mobileNo,UserName,Time’...
msg格式"{$var}你好,{$var}立冬了。",这样params的第二个第三个参数就自动匹配到msg上了,第一个参数253接口那边就当是手机号码,发送短信用的。设置个最大限度就可以了。msg是变量短信模板
Ø 提交成功
响应状态为0 表明那个成功提交到服务器:如20171108101609,0,1,0
手机成功收到短信:发送成功
Ø 提交失败
错误码为101,服务器端并未返回msgid。这是我密码输错时。
其实做完这个事的时候我就感觉到其实就是简单的调用接口,何必大费波折写博客。但我觉得发送短信的那一刻确实是蛮有成就感的。
我有一点疑惑的是为什么我用POST的形式就是报发送失败,得用GET请求。我贴一下我的代码上来。
之前单发的时候都是用POST,可能是只能用GET请求,我也不纠结它了,我就用GET吧!至于GET可能不安全253那边应该做好处理了。
到此就差不多了,注意接口要传送的参数就可以了。一步一步的来。