中文短信网短信平台接口Http2.0
中文短信网自身的短信平台在原有接口的基础上修改推出了2.0版本,主要是针对签名部分的修改,增加签名,是为了短信接口的安全性,目前大部分的短信接口都没有签名,有很大的安全隐患。原先的短信接口参考:https://www.zhsms.com/interface/10.html
第一章 ESM平台介绍
1.1. 简介
ESM平台是中文短信网自主研发的系统,用于实现终端客户短信/彩信发送的管理平台,本文档为第三方平台使用API接口,与本ESM平台进行对接而完成。本接口采用传统http方式提供,出于数据安全性和数据容量的考虑,建议采用http中的POST方法连接Api地址进行数据传输。
1.2. 缩略语清单
客户端:本文中特指短信平台企业终端客户端。
服务端:本文中特指短信平台企业网关服务端。
1.3. 修订时间
2011-01-03 完成基本内容。
第二章 API接口说明
2.1. 发送短信接口
提交地址:http://IP:9000/sendMSms.do
接口提交方式:GET/POST URL超长时请使用POST
功能:发送短信
输入参数 | 描述 |
username | 用户名,由平台提供(必填) |
timestamp | 时间戳(必填),系统当前时间字符串,与标准时间误差不能超过30分钟,年月日时分秒,例如:20120701231212 |
password | 使用密码生成的MD5串(必填),使用用户名+密码+时间戳生成MD5字符串,MD5生成32位,且需要小写。例如: 账号是test 密码是mima 时间戳是20120701231212 就需要用testmima20120701231212 来生成MD5的签名,生成的签名为5cc68982f55ac74348e3d819f868fbe1 |
mobile | 手机号,多个手机号用半角,分开,如13899999999,13688888888(最多2000个,必填) |
content | 发送内容,采用utf-8 urlencode处理(必填) |
dstime | 定时时间,采用utf-8 urlencode处理,时间格式如:2014-12-30 17:48:21,为空时表示立即发送,必须大于系统当前时间(选填) |
productid | 产品id, 由平台提供(必填) |
xh | 扩展的小号(选填) |
样例:
http://IP:9000/sendMSms.do?username=test×tamp=20120701231212&password=5cc68982f55ac74348e3d819f868fbe1&mobile=13911000000&content=中国&dstime=&productid=61341&xh=
其中:
dstime参数(如果需要该参数),采用下列方式处理:
dstime = URLEncoder.encode("2015-01-01 14:41:00", "utf-8")
content参数,采用下列方式处理:
String content = "发送内容";
content = URLEncoder.encode(content, "utf-8");
返回码 | 描述 |
-1 | 用户名或者密码不正确 |
1,xxxxxxxx | 1代表发送短信成功,xxxxxxxx代表消息编号 |
2 | 余额不够 |
6 | 有效号码为空 |
7 | 短信内容为空 |
8,xxxxxx | 一级黑词,逗号后面为具体黑词内容 |
9 | 未开通接口提交权限或用户已被禁用 |
10 | 发送号码过多 |
11 | 产品ID异常 |
12 | 参数异常 |
2.2. 余额接口
提交地址:http://IP:9000/balancem.do
接口提交方式:GET/POST
功能:查询短信剩余数量
输入参数 | 描述 |
username | 用户名(必填) |
timestamp | 时间戳(必填),系统当前时间字符串,与标准时间误差不能超过30分钟,年月日时分秒,例如:20120701231212 |
password | 使用密码生成的MD5串(必填),使用用户名+密码+时间戳生成MD5字符串,MD5生成32位,且需要小写。例如: 账号是test 密码是mima 时间戳是20120701231212 就需要用testmima20120701231212 来生成MD5的签名,生成的签名为5cc68982f55ac74348e3d819f868fbe1 |
productid | 产品ID(必填) |
样例:
http://IP:9000/balancem.do?username=test& timestamp=20120701231212&password=5cc68982f55ac74348e3d819f868fbe1&productid=677678
返回码 | 描述 |
XXXXX | XXXXX代表该产品的剩余条数 |
-2 | 产品ID异常 |
-5 | 提交频率过快(需间隔一秒以上) |
-1 | 用户名或者密码不正确 |
-9 | 未开通接口提交权限或用户已被禁用 |
2.3. 状态报告接口
注意:以下两种方式客户只能选择其中一种
方式一:推送方式(get)(适合客户有固定的IP地址)
此方式需要用户在我方平台填写下行地址
例如:http://www.yourdomain.com:9010/index.aspx
我平台采用get的方式提交到客户填写的地址,每次最多返回1组内容,客户被动接收状态报告并解析之
推送URL格式:msgid=xxxxx&mobile=xxxxxx&status=xxxxxxx
推送URL格式说明:一次推送一个号码,status为0代表发送成功,非0代表发送失败;msgid为发送短信时平台返回的消息编号;mobile为手机号码。
方式二:主动获取方式(适合客户没有固定的IP地址)
提交地址:http://IP:9000/reportm.do
状态报告接口提交方式:GET/POST
功能:获取状态报告
输入参数 | 描述 |
username | 用户名(必填) |
timestamp | 时间戳(必填),系统当前时间字符串,与标准时间误差不能超过30分钟,年月日时分秒,例如:20120701231212 |
password | 使用密码生成的MD5串(必填),使用用户名+密码+时间戳生成MD5字符串,MD5生成32位,且需要小写。例如: 账号是test 密码是mima 时间戳是20120701231212 就需要用testmima20120701231212 来生成MD5的签名,生成的签名为5cc68982f55ac74348e3d819f868fbe1 |
我平台每次最多返回50组内容。其中status为0代表发送成功,非0代表发送失败;msgid为发送短信时返回的消息编号;mobile为手机号码;当没有状态报告可获取时返回为空串。
返回内容格式:
msgid=xxxxx&mobile=xxxxxx&status=xxxxxxx|||msgid=xxxxx&mobile=xxxxxx&status=xxxxxxx|||msgid=xxxxx&mobile=xxxxxx&status=xxxxxxx
错误返回值:
返回码 | 描述 |
-1 | 用户名或者密码不正确 |
9 | 未开通接口提交权限或用户已被禁用 |
12 | 参数异常 |
2.4. 上行接口
注意:以下两种方式客户只能选择其中一种
方式一:推送方式(get)(适合客户有固定的IP地址)
此方式需要用户在我方平台中填写上行地址
例如:http://www.yourdomain.com:9010/index.aspx
我平台采用get的方式提交到客户填写的地址,每次最多返回1组内容,客户被动接收状态报告并解析之
推送URL格式:msgid=xxxxx&mobile=xxxx&content=xxxxx&xh=xxxx
推送URL格式说明:一次推送一个号码,msgid为消息编号(对应发送短信给用户时平台返回的消息编号,可能为空);mobile指上行号码;content指上行内容;xh代表扩展号码。
注:上行内容是经过URLEncoder.encode(content,"UTF-8")编码过的内容,接受时请使用URLDecoder.decode(content,"utf-8")来进行解码。
方式二:主动获取方式(适合客户没有固定的IP地址)
提交地址:http://IP:9000/repliesm.do
上行接口提交方式:GET/POST
功能:获取上行短信
输入参数 | 描述 |
username | 用户名(必填) |
timestamp | 时间戳(必填),系统当前时间字符串,与标准时间误差不能超过30分钟,年月日时分秒,例如:20120701231212 |
password | 使用密码生成的MD5串(必填),使用用户名+密码+时间戳生成MD5字符串,MD5生成32位,且需要小写。例如: 账号是test 密码是mima 时间戳是20120701231212 就需要用testmima20120701231212 来生成MD5的签名,生成的签名为5cc68982f55ac74348e3d819f868fbe1 |
我平台每次最多返回50组内容,msgid为消息编号(对应发送短信给用户时平台返回的消息编号,可能为空);mobile指上行号码;content指上行内容; xh代表扩展号码。当没有上行可获取时返回为空串。
返回内容格式:
msgid=xxxx&mobile=xxxx&content=xxxxx&xh=xxxxx|||msgid=xxxx&mobile=xxxx&content=xxxxx&xh=xxxxx|||msgid=xxxx&mobile=xxxx&content=xxxxx&xh=xxxxx
注:上行内容是经过URLEncoder.encode(content,"UTF-8")编码过的内容,接受时请使用URLDecoder.decode(content,"utf-8")来进行解码。
错误返回值:
返回码 | 描述 |
-1 | 用户名或者密码不正确 |
9 | 未开通接口提交权限或用户已被禁用 |
12 | 参数异常 |
附录
短信发送DEMO(JAVA版)
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import org.apache.commons.codec.digest.DigestUtils; public class sendmsg { public static void main(String[] args) throws IOException { String content = "发送内容"; StringBuffer sb = new StringBuffer( "http://IP:9000/sendMSms.do?"); sb.append("username=username"); sb.append("timestamp=20190316154320"); sb.append("&password= "+DigestUtils.md5Hex("testmima20190316154320")); sb.append("&productid=productid"); sb.append("&mobile=13900000000"); //sb.append("&dstime="+URLEncoder.encode("2015-01-01 14:41:00", "utf-8")); sb.append("&content=" + URLEncoder.encode(content, "utf-8")); URL url = new URL(sb.toString()); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET");//or set POST BufferedReader in = new BufferedReader(new InputStreamReader(url .openStream())); String inputline = in.readLine(); System.out.println(inputline); } }
附中文短信网短信平台接口Http2.0下载:
留言评论
暂无留言