短信接口开发文档
一、短信接口工作方式
双方通过HTTP或HTTPS方式交互数据,第三方可以简单的“name=value”方式发送提交内容或响应请求内容。即通过HTTP或HTTPS的GET/POST方式交换。另外双方需要保证数据传输的完整性和安全性,为了更安全验证建议采用secret签名验证和IP绑定的方式。
1.1 secret签名验证
注:签名验证方式(tokenkey)=md5(用户名+secretkey+timestamp时间戳)secretkey:登录后台-》短信设置-》接口密码-》获取secretkey
时间戳 :timestamp(yyyyMMddHHmmss)确保现在北京时间的准确性,左右不能差5分钟时间,超过报错“超过验证时效”;
接口参数:https://api.sms.cn/sms/?ac=send&uid=90010&tokenkey=67da3bb4523ce538ff9adec57dc25162×tamp=20120102102033
1.2 登录密码验证
短信接口密码使用“登录密码”与“用户名”拼接字符串后能过md5加密进行验证如登录密码是:123123
如用户名是:test
接口密码(pwd)=md5(登录密码+用户名)
pwd=md5(123123test)
pwd=b9887c5ebb23ebb294acab183ecf0769
二、字符编码
服务器接收数据可以是GBK或UTF-8编码字符;默认接收数据是UTF-8编码,如提交的是GBK编码字符,需要添加参数encode=gbk。
三、响应格式
所为响应即每次向服务器提交请求后返回值响应值格式有:JSON、XML、纯文本
默认:JSON格式
GET/POST操作格式:http://api.sms.cn/sms/?ac=send&uid=用户账号&pwd=MD532位密码&mobile=号码&content={"key":"内容"}
参数名 | 参数字段 | 参数说明 |
---|---|---|
ac | 接口功能 | 接口功能,传入值请填写 send |
uid | 用户账号 | 登录名 |
pwd | 用户密码 | 32位MD5加密md5(密码+uid) 如登录密码是:123123 ,uid是:test; pwd=md5(123123test) pwd=b9887c5ebb23ebb294acab183ecf0769 |
mobile | 接收号码 | 短信接口同时发送给多个号码时,号码之间用英文半角逗号分隔(,);小灵通需加区号 如:13972827282,13072827282 |
content | 短信内容 | JSON变量模板发送,传参规则{"key":"value"}JSON格式,key的名字须和申请模板中的变量名一致,多个变量之间以逗号隔开。示例:针对模板“短信验证码{$code},您正在进行{$product}身份验证,请在10分钟内完成操作!”,传参时需传入{"code":"352333","product":"电商平台"} |
template | 模板短信ID | 发送变量模板短信时需要填写对应的模板ID号,进入平台-》短信设置-》模板管理 |
time | 返回格式 | 可选项,格式:年月日时分,定时时间到分,共12个数字 如定时到2032-10-01 12:01发 time=203210011201 |
format | 返回格式 | 可选项,有三参数值:json,xml,txt 默认json格式 |
encode | 字符编码 | 可选项,默认接收数据是UTF-8编码,如提交的是GBK编码字符,需要添加参数 encode=gbk |
mobileids | 消息编号 | 可选项 该参数用于发送短信收取状态报告用,格式为消息编号+逗号;与接收号码一一对应,可以重复出现多次。 消息编号:全部由数字组成接收状态报告的时候用到,该消息编号的格式可就为目标号码+当前时间戳整数,精确到毫秒,确保唯一性。供收取状态报告用 如: 1590049111112869461937; |
例:
你在平台添加了JSON变量模板如下:
短信验证码{$code},您正在进行{$product}身份验证,请在10分钟内完成操作!
模板ID:100001
接收号:13900008888
接口内容JSON格式:
{"key":"234336","product":"电商平台"}
http://api.sms.cn/sms/?ac=send&uid=test&pwd=b9887c5ebb23ebb294acab183ecf0769&mobile=13900008888&content=
{"key":"234336","product":"电商平台"}&template=100001
注:发送内容content需要进行URL字符标准化转码。
响应结果值:
json格式
{"stat":"100","message":"发送成功"}
xml格式
<result><stat>100</stat><message>发送成功</message></result>
txt 文本字符格
sms&stat=100&message=发送成功
stat 状态码
message 状态说明
返回发送的状态码
状态码 说明
100 发送成功
101 验证失败
102 短信不足
103 操作失败
104 非法字符
105 内容过多
106 号码过多
107 频率过快
108 号码内容空
109 账号冻结
112 号码错误
113 定时出错
116 禁止接口发送
117 绑定IP不正确
161 未添加短信模板
162 模板格式不正确
163 模板ID不正确
164 全文模板不匹配
166 模板内容重复
167 模板审核中
168 模板审核不通过
GET/POST操作格式:http://api.sms.cn/sms/?ac=send&uid=用户账号&pwd=MD532位密码&mobile=号码&content=内容
参数名 | 参数字段 | 参数说明 |
---|---|---|
ac | 接口功能 | 接口功能,传入值请填写 send |
uid | 用户账号 | 登录名 |
pwd | 用户密码 | 32位MD5加密md5(密码+uid) 如登录密码是:123123 ,uid是:test; pwd=md5(123123test) pwd=b9887c5ebb23ebb294acab183ecf0769 |
mobile | 接收号码 | 短信接口同时发送给多个号码时,号码之间用英文半角逗号分隔(,);小灵通需加区号 如:13972827282,13072827282 |
content | 短信内容 | 发送内容需要进行URL字符标准化转码。 {URL字符编码说明:返回字符串,此字符串中除了-_.之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)} ASP:server.URLEncode("短信内容") PHP:urlencode("短信内容") JAVA:java.net.URLEncoder.encode("短信内容") |
time | 返回格式 | 可选项,格式:年月日时分,定时时间到分,共12个数字 如定时到2032-10-01 12:01发 time=203210011201 |
format | 返回格式 | 可选项,有三参数值:json,xml,txt 默认json格式 |
mobileids | 消息编号 | 可选项 该参数用于发送短信收取状态报告用,格式为消息编号+逗号;与接收号码一一对应,可以重复出现多次。 消息编号:全部由数字组成接收状态报告的时候用到,该消息编号的格式可就为目标号码+当前时间戳整数,精确到毫秒,确保唯一性。供收取状态报告用 如: 1590049111112869461937; |
encode | 字符编码 | 可选项,默认接收数据是UTF-8编码,如提交的是GBK编码字符,需要添加参数 encode=gbk |
例:
你在平台添加了全文变量模板内容如下:
你好!{**},您的验证码:{**}。如非本人操作,可不用理会!【公司签名】
接 收 号:13900008888
短信接口发送内容:
你好!testuser,您的验证码:234346。如非本人操作,可不用理会!【公司签名】
http://api.sms.cn/sms/?ac=send&uid=test&pwd=b9887c5ebb23ebb294acab183ecf0769&mobile=13900008888&content=你好!testuser,您的验证码:234346。如非本人操作,可不用理会!【公司签名】
注:发送内容content需要进行URL字符标准化转码。
响应结果值:
json格式
{"stat":"100","message":"发送成功"}
xml格式
<result><stat>100</stat><message>发送成功</message></result>
txt 文本字符格
sms&stat=100&message=发送成功
stat 状态码
message 状态说明
返回发送的状态码
状态码 说明
100 发送成功
101 验证失败
102 短信不足
103 操作失败
104 非法字符
105 内容过多
106 号码过多
107 频率过快
108 号码内容空
109 账号冻结
112 号码错误
113 定时出错
116 禁止接口发送
117 绑定IP不正确
161 未添加短信模板
162 模板格式不正确
163 模板ID不正确
164 全文模板不匹配
GET/POST操作格式:http://api.sms.cn/sms/?ac=status&uid=用户账号&pwd=MD532位密码
参数名 | 参数字段 | 参数说明 |
---|---|---|
ac | 接口功能 | 接口功能,传入值请填写 status |
uid | 用户账号 | |
pwd | 用户密码 | 32位MD5加密 md5(登录密码+用户账号) |
例:http://api.sms.cn/sms/?ac=status&uid=test&pwd=b9887c5ebb23ebb294acab183ecf0769
响应结果值说明:
参数 | 说明 |
---|---|
stat | 接口状态 100 成功 |
total | 当前总记录数量 |
retime | 状态返回时间 |
mobile | 手机号 |
mobileids | 发送唯一编号 |
resultcode | 状态码: 100 //成功 130 //失败 131 //空号 132 //停机 133 //关机 134 //无状态 |
status | 运营网关状态 |
发送状态报告请求消息
使用说明:
由服务器平台发送状态报告到您的接口程序上,使用Http协议GET和POST方式发送,您需要提交一个http接口地址来接收如下格式参数值
操作的格式:
http://您服务器接口地址?cmd=stat&uid=用户账号&mobileids=消息编号&mobile=接收号码&status=消息状态
参数名 | 参数字段名 | 说明 |
---|---|---|
cmd | 操作命令 | 返回值:stat |
uid | 用户账号 | 返回值:发送短信用户名 |
mobileids | 消息编号 | 返回值:消息编号 |
mobile | 接收号码 | 返回值:接收的号码 |
resultcode | 状态码 | 100 //成功 130 //失败 131 //空号 132 //停机 133 //关机 134 //无状态 |
例:http://您服务器接口地址?cmd=stat&uid=test&mobileids=1590049111112869461937&mobile=15900491111&status=100
操作的格式:http://api.sms.cn/sms/?ac=reply&uid=用户账号&pwd=MD532位密码。注:提取的回复短信不能在重复提取
参数名 | 参数字段名 | 说明 |
---|---|---|
ac | 接口功能 | 传入值请填写 status |
format | 返回格式 | 有三参数值:json,xml 默认json格式 |
uid | 返回格式 | 有三参数值:json,xml 默认json格式 |
pwd | 用户密码 | 小写32位MD5加密 |
encode | 字符编码 | 可选项,默认接收数据是GBK编码,如提交的是UTF-8编码字符,需要添加参数 encode=utf8 |
例:http://api.sms.cn/sms/?ac=reply&uid=test&pwd=b9887c5ebb23ebb294acab183ecf0769
响应结果为JSON和XML
JSON
{"stat":"100","total":"100","values":[ {"retime":"2012-04-13 10:00:23","mobile":"15900001111","content":"谢谢你!"},{"retime":"2012-04-13 09:59:50","mobile":"15900001111","content":"收到"} ]}
XML
<result>
<stat>100</stat>
<total>100</total>
<values>
<value0><retime>2012-04-13 10:00:23</retime><mobile>15900001111</mobile><content>谢谢你!</content></value0>
<value1><retime>2012-04-13 09:59:50</retime><mobile>15900001111</mobile><content>收到</content></value1>
</values>
</result>
使用说明:由服务器平台发送上行回复短信到您的接口程序上,使用Http协议GET和POST方式发送,您需要提交一个http接口地址来接收如下格式参数值
操作的格式:http://您服务器接口地址?cmd=res&uid=用户账号&mobileids=消息编号&mobile=接收号码&status=消息状态
参数名 | 参数字段名 | 说明 |
---|---|---|
cmd | 操作命令 | 返回值:res |
uid | 用户账号 | 返回值:发送短信用户名 |
time | 回复时间 | 返回值:YYYY-MM-DD HH:II:SS |
mobile | 接收号码 | 返回值:接收的号码 |
content | 消息内容 | 返回值:UTF-8字符串 |
操作的格式:http://api.sms.cn/sms/?ac=number&uid=用户账号&pwd=MD5位32密码。
参数名 | 参数字段名 | 说明 |
---|---|---|
ac | 接口功能 | 传入值请填写 number |
format | 返回格式 | 有三参数值:json,xml 默认json格式 |
uid | 用户账号 | |
pwd | 用户密码 | 32位MD5加密 |
例:http://api.sms.cn/sms/?ac=reply&uid=test&pwd=b9887c5ebb23ebb294acab183ecf0769
响应结果为JSON和XML
JSON
{"stat":"100","total":"100","values":[ {"retime":"2012-04-13 10:00:23","mobile":"15900001111","content":"谢谢你!"},{"retime":"2012-04-13 09:59:50","mobile":"15900001111","content":"收到"} ]}
XML
<result>
<stat>100</stat>
<total>100</total>
<values>
<value0><retime>2012-04-13 10:00:23</retime><mobile>15900001111</mobile><content>谢谢你!</content></value0>
<value1><retime>2012-04-13 09:59:50</retime><mobile>15900001111</mobile><content>收到</content></value1>
</values>
</result>
操作的格式:http://api.sms.cn/sms/?ac=number&uid=用户账号&pwd=MD5位32密码&cmd=send
参数名 | 参数字段名 | 说明 |
---|---|---|
ac | 接口功能 | 传入值请填写 number |
uid | 用户账号 | |
pwd | 用户密码 | 32位MD5加密 |
cmd | send | 取已发送条数 |
响应结果为JSON和XML
JSON
{"stat":"100","number":"2123432"}
XML
<result>
<stat>100</stat>
<number>2123432</number>
</result>
操作的格式:http://api.sms.cn/sms/?ac=query&uid=用户账号&pwd=MD532位密码
短信接口参数说明:每次最多取50条记录,记录只能取一次,取过的记录不能在取
参数名 | 参数字段名 | 说明 |
---|---|---|
ac | 接口功能 | 传入值请填写 nquery |
uid | 用户账号 | |
pwd | 用户密码 | 小写32位MD5加密 |
date | 日期 | 可选项,取指定日期记录(2011-12-12) |
key | 查询号码 | 可选项,取指定手机号记录 |
encode | 字符编码 | 可选项,默认接收数据是GBK编码,如提交的是UTF-8编码字符,需要添加参数 encode=utf8 |
例:http://api.sms.cn/sms/?ac=query&uid=test&pwd=b9887c5ebb23ebb294acab183ecf0769
响应结果为JSON和XML
JSON
{"stat":100,"total":"1896397","page_size":"50","total_page":"37928",
"values":[
{"sendtime":"2013-11-14
18:04:19","mobile":"13900008888","content":"我的发送记录1【云信】","status":"1"},
{"sendtime":"2013-11-14
18:04:19","mobile":"13900008888","content":"我的发送记录2【云信】","status":"1"}
]}
无回复内容时返回空
{"total":"0","page_size":"0","total_page":"0"}
XML
<result>
<stat>100</stat>
<total>1896347</total>
<page_size>50</page_size>
<total_page>37928</total_page>
<values>
<value0>
<sendtime>2013-11-14 18:04:19</sendtime>
<mobile>13900008888</mobile>
<content>发送的内容1</content>
<status>1</status>
</value0>
<value1>
<sendtime>2013-11-14 18:04:19</sendtime>
<mobile>13900008888</mobile>
<content>发送的内容2</content>
<status>1</status>
</value1>
</values>
</result>
无回复内容时返回空
<result>
<total>0</total><page_size>0</page_size><total_page>0</total_page>
</result>
GET/POST操作格式:http://api.sms.cn/sms/?ac=template&uid=用户名&pwd=32位MD5加密&title=短信模板标题&content=要添加的模板内容
参数名 | 参数字段 | 参数说明 |
---|---|---|
ac | 接口功能 | 接口功能,传入值请填写 template |
uid | 用户账号 | 登录名 |
pwd | 用户密码 | 32位MD5加密md5(密码+uid) 如登录密码是:123123 ,uid是:test; pwd=md5(123123test) pwd=b9887c5ebb23ebb294acab183ecf0769 |
title | 模板标题 | 模板标题名称用于备注查询[选填] |
content | 模板内容 | 模板内容包含短信内容和签名。全文变量模板的变量用{**}代替,JSON变量模板的变量用源码中相应的变量参数代替。 |
type | 模板类型 | 1.验证码 2.通知 3.推广 |
dataformat | 模板格式 | 1.全文变量模板 2.JSON变量模(不填写默认为全文变量模板)[选填] |
templateid | 模板ID | 修改JSON变量模板时,需添加相应的模板ID,根据模板ID来修改已申请过的模板内容,空就是添加,填写对应模板ID就是修改。[选填] |
delete | 删除模板 | delete=1 删除指定模板ID模板 [选填] |
例如1:添加全文模板内容:您好,您的验证码是:{**}【公司签名】
格式:
http://api.sms.cn/sms/?ac=template&uid=test&pwd=b9887c5ebb23ebb294acab183ecf0769&&content=您好,您的验证码是:{**}【公司签名】
注:发送内容content需要进行URL字符标准化转码。
例如2: 添加JSON模板内容: 您好,您的验证码是:{$code}【公司签名】
格式:
http://api.sms.cn/sms/?ac=template&uid=test&pwd=b9887c5ebb23ebb294acab183ecf0769&dataformat=2&content=您好,您的验证码是:{$code}【公司签名】
注:发送内容content需要进行URL字符标准化转码。
响应结果为JSON和XML
JSON
{"stat":"100","templateid":"383533","message":"添加成功"}
XML
<result><stat>100</stat><templateid>383533</templateid><message>添加成功</message></result>
TXT
sms&stat=100&templateid=383533&message=添加成功
stat 状态码
message 状态说明
返回发送的状态码
状态码 说明
100 发送成功
118 无法添加没有签名
161 模板ID不存在
166 模板内容重复
操作格式:http://api.sms.cn/sms/?ac=templatestatus&uid=用户账号&pwd=MD5位32密码&templateid=模板ID
参数名 | 参数字段名 | 说明 |
---|---|---|
ac | 接口功能 | 接口功能,传入值请填写 templatestatus |
format | 返回格式 | 可选项,参数值:json,xml 默认json格式 |
uid | 用户账号 | |
pwd | 用户密码 | 32位MD5加密 |
templateid | 模板ID | 请填写要查询的模板ID |
例:http://api.sms.cn/sms/?ac=templatestatus&uid=test&pwd=5f6a3e3ace0262caabc42a9618a78c68&templateid=232311
响应结果:
JSON
{"stat":"100","templateid":"383533","message":"添加成功"}
{"stat":"168","message":"模板不通过","question":"模板里没有添加签名如:【公司名称】签名建议为用户真实应用名/网站名/公司名。"}
XML
<result>
<stat>100</stat>
<message>模板成功通过</message>
</result>
操作格式:http://api.sms.cn/sms/?ac=templatequery&uid=用户账号&pwd=MD532位密码
参数名 | 参数字段名 | 说明 |
---|---|---|
ac | 接口功能 | 接口功能,传入值请填写 templatequery |
format | 返回格式 | 可选项,参数值:json,xml 默认json格式 |
uid | 用户账号 | |
pwd | 用户密码 | 32位MD5加密 |
page | 取第几页 | 可选项,默认1(第一页) |
encode | 字符编码 | 可选项,默认接收数据是GBK编码,如提交的是UTF-8编码字符,需要添加参数 encode=utf8 |
例:http://api.sms.cn/sms/?ac=templatequery&uid=test&pwd=b9887c5ebb23ebb294acab183ecf0769&page=1
响应结果:
JSON
{"stat":100,"total":"1000","page_size":"100","total_page":"10","page":"1",
"values":[
{"type":"1","dataformat":"2","addtime":"2013-11-14
18:04:19","templateid":"13900008888","content":"验证码:{$code},请及时完成验证。【公司签名】","question":"","status":"1"},
{"type":"1","dataformat":"1","addtime":"2013-11-14
18:04:19","templateid":"13900008888","content":"您的登录验证码:{**},请及时完成验证。【公司签名】","question":"模板里没有添加签名","status":"2"}
]}
无模板时返回
{"total":"0","page_size":"0","total_page":"0"}
XML
<result>
<stat>100</stat>
<total>1000</total>
<page_size>100</page_size>
<total_page>10</total_page>
<page>1</page>
<values>
<value0>
<type>1</type>
<dataformat>2</dataformat>
<addtime>2013-11-14 18:04:19</addtime>
<templateid>322542</templateid>
<content>验证码:{$code},请及时完成验证。【公司签名】</content>
<question></question>
<status>0</status>
</value0>
<value1>
<type>1</type>
<dataformat>1</dataformat>
<addtime>2013-11-14 18:04:19</addtime>
<templateid>322545</templateid>
操作格式:http://api.sms.cn/sms/?ac=pass&uid=用户账号&pwd=MD5位32密码&newpass=新密码
参数名 | 参数字段 | 参数说明 |
---|---|---|
ac | 接口功能 | 接口功能,传入值请填写 pass |
format | 返回格式 | 可选项,参数值:json,xml 默认json格式 |
uid | 用户账号 | |
pwd | 用户密码 | 32位MD5加密 |
newpass | 新密码 | 新密码 |
例:http://api.sms.cn/sms/?ac=pass&uid=test&pwd=b9887c5ebb23ebb294acab183ecf0769&newpwd=123123
响应结果为JSON和XML
JSON
{"stat":"100","message":"修改成功"}
XML
<result>
<stat>100</stat>
<message>修改成功</message>
</result>
为了接口更加的安全,请登录WEB云平台在“短信设置”中绑定你服务器的IP地址,可绑定100个固定IP,绑定IP后只有通过你的服务器来发送短信,防止他人使用