移动接口文档--10690
HTTP接口调用说明(支持POST和GET)
HTTP网关地址:
UTF8编码网关
http://api.zosms.com:6000/utf8/web_api/SendSMS_V2.aspx
GBK 编码网关
http://api.zosms.com:6000/gbk/web_api/SendSMS_V2.aspx
提示:HTTP调用URL接口时, 参数值必须URL编码后再调用
1.参数说明
序号 |
参数名 |
描述 |
1 |
X_sid |
会员编号 |
2 |
X_eid |
企业编号 |
3 |
X_uid |
会员帐号 |
4 |
X_pwd_md5 |
sha1(sha1(密码)+本机外网ip)英文字母全是小写 |
5 |
X_ac |
操作指令 |
6 |
X_gate_id |
300固定不能修改 |
7 |
X_target_no |
接口短信手机号,多个号码用逗号分开,最多支持300条每次 |
8 |
X_memo |
短信发送内容,最多450字符,必须url编码 |
9 |
X_sub_id |
扩展码,区别上行用户 |
1.2发送短信
1.2.1发送普通短信(70字)
请求参数
X_ac=10&x_eid=企业代码&x_uid=会员帐号&x_pwd_md5=访问密码&x_gate_id=300&x_target_no=接收手机号&x_memo=发送短信内容
1.2.1发送长短信(450字)
请求参数
X_ac=12&x_eid=企业代码&x_uid=会员帐号&x_pwd_md5=访问密码&x_gate_id=300&x_target_no=接收手机号&x_memo=发送短信内容
返回值描述
类型 |
值 |
int |
>0(大于0) 成功计费条数 |
<=0 (小于等于0) 失败 |
2.接收回复短信(分主动和被动两种接收)
2.1主动接收回复短信(最小调用间隔30秒一次)
请求参数
X_ac=20&x_eid=企业代码&x_uid=会员帐号&x_pwd_md5=访问密码&x_gate_id=300
返回XML格式(返回2条用户回复的短信)
<ReadSMS>
<Item>
<Id>1</Id>(序列号可以忽略)
<SId>1001</SId>(会员编号,如果有多个帐号情况下)
<SenderNo>13020930000</SenderNo>(回复手机号)
<MsgContent>能收到我回复的测试短信么?</MsgContent>(回复内容)
<SendTime>2009-11-21 16:54:14</SendTime>(回复时间)
<SP_PID>10655059052084</SP_PID>(回复到网关的号码)
<subNo >1200 <subNo /> (用户扩展码)
</Item>
<Item>
<Id>2</Id>
<SId>1002</SId>
<SenderNo>13020930000</SenderNo>
<MsgContent>这是第二条测试短信!</MsgContent>
<SendTime>2009-11-21 16:13:37</SendTime>
<SP_PID>10655059052084</SP_PID>
<subNo>101 <subNo /> <!--客户扩展子号码-->
</Item>
</ReadSMS>
2.2被动接收回复短信(如果有新回复短信,我们会主动以PUSH方式发送给用户指定的页面)
此方式采用http+xml+post技术,需要用户提供一个接收短信页面地址
以下是post+xml时的样本:
<ReadSMS> <!--收到短信开始-->
<Item> <!--如果有多条循环此节-->
<id>1</id><!-可忽略-->
<SId>1001</SId> <!-- 会员编号,企业子帐号区分不同会员上行 -->
<SenderNo>13405886058</SenderNo> <!--回复者号码-->
<MsgContent>这个是被动回复过来的,能收到么?</MsgContent> <!--回复短信内容-->
<SendTime>2008-03-14 23:07:39</SendTime> <!--回复时间-->
<SP_PID>1065810889988</SP_PID> <!-回复到SP号的号码-->
<subNo>101</subNo> <!--客户扩展子号码-->
</Item>
</ReadSMS>
被动返回值
如果成功接收请返回1,否则系统重新发送3次后,终止发送。
3.查询短信余额
请求参数
X_ac=30&x_eid=企业代码&x_uid=会员帐号&x_pwd_md5=访问密码&x_gate_id=300
返回值
Sms:10000,mms:5000
描述
Sms:指短信剩余条数,mms:指彩信剩余条数
4.修改接口密码
请求参数
X_ac=50&x_eid=企业代码&x_uid=会员帐号&x_pwd_md5=访问密码&x_new_pwd=接口新密码sha1&x_gate_id=300
返回值
1 修改新密码成功,否则失败。
5.打包提交不同内容短信(最多支持300个包),必须使用POST方式
请求参数(只接受POST方式)
X_ac=13&x_eid=企业代码&x_uid=会员帐号&x_pwd_md5=访问密码&x_gate_id=300&x_memo=xml格式
x_memo格式如下
<SendSMS>
<Item><!—此节可以循环,最大100-->
<ID>编号</ID> (如果失败,会输出这个编号,保证此包里不要重复)
<CardNo>用户手机号码</CardNo>
<Msg>
<![CDATA[短信内容]]>
</Msg>
<IsLongSMS>1长短信,0普通短信,(超过70字自动设置1)</IsLongSMS>
<SubId>扩展码</SubId>
</Item>
</SendSMS>
返回值(Int数字类型)
大于0成功,否则失败
6.获取公网ip用于验证访问密码,x_pwd_md5需要用到这个值
请求参数
X_ac=100
返回值
120.2.2.100
返回值参对表
HTTP返回值参对表 |
||||
编号 |
值 |
说明 |
||
1 |
大于0 |
发送成功,此次发送成功条数 |
||
2 |
-1 |
参数无效 |
||
3 |
-2 |
通道不存在或者当前业务不支持此通道 |
||
4 |
-3 |
定时格式错误 |
||
5 |
-4 |
接收号码无效 |
||
6 |
-5 |
提交号码个数超过上限,每个通道都有批量提交的上限.详细值请参考通道说明 |
||
7 |
-6 |
发送短信内容长度不符合要求,参考通道要求长度 |
||
8 |
-7 |
当前账户余额不足 |
||
9 |
-8 |
网关发送短信时出现异常 |
||
10 |
-9 |
用户或者密码没输入 |
||
11 |
-10 |
企业ID或者会员账号不存在 |
||
12 |
-11 |
密码错误 |
||
13 |
-12 |
账户锁定 |
||
14 |
-13 |
网关状态关闭 |
||
15 |
-14 |
验证用户时执行异常 |
||
16 |
-15 |
网关初始化失败 |
||
17 |
-16 |
当前IP已被系统屏蔽,可能是与您设置的接入IP不同或者是失败次数太多 |
||
18 |
-17 |
发送异常 |
||
19 |
-18 |
账号未审核 |
||
20 |
-19 |
当前时间不允许此通道工作,主要对群发通道限制 |
||
21 |
-20 |
传输密钥未设置,请登陆平台设置 |
||
22 |
-21 |
提取密钥异常 |
||
23 |
-22 |
签名验证失败 |
||
24 |
-23 |
发现屏蔽关键字 |
||
25 |
-100到-199 |
运营商返回失败代码 |
各语言短信接口的例子
--查询余额
http://api.zosms.com:6000/gbk/web_api/?x_sid=会员编号&x_eid=企业ID&x_uid=账号&x_pwd_md5=登陆密码MD5值&x_ac=30&x_gate_id=300
1. --ASP 调用例子-------------------------------------------------------------------------------------------
<%
'常用函数
'输入url目标网页地址,返回值getHTTPPage是目标网页的html代码
function getHTTPPage(url)
dim Http
set Http=server.createobject("MSXML2.XMLHTTP")
Http.open "GET",url,false
Http.send()
if Http.readystate<>4 then
exit function
end if
getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")
set http=nothing
if err.number<>0 then err.Clear
end function
Function BytesToBstr(body,Cset)
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
'自已组合一下提交的URL加入自己的账号和密码MD5
sms_url="http://api.zosms.com:6000/gbk/web_api/?x_sid=&x_eid=&x_uid=&x_pwd_md5=&x_ac=10&x_gate_id=101&x_target_no=&x_memo="
response.write getHTTPPage(sms_url)
%>
2.--C# 调用---------------------------------------------------------------------------------------------
//需要用到的命名空间
using System.Net;
using System.IO;
using System.Text;
//调用时只需要把拼成的URL传给该函数即可。判断返回值即可
public string GetHtmlFromUrl(string url)
{
string strRet = null;
if(url==null || url.Trim().ToString()=="")
{
return strRet;
}
string targeturl = url.Trim().ToString();
try
{
HttpWebRequest hr = (HttpWebRequest)WebRequest.Create(targeturl);
hr.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
hr.Method = "GET";
hr.Timeout = 30 * 60 * 1000;
WebResponse hs = hr.GetResponse();
Stream sr = hs.GetResponseStream();
StreamReader ser = new StreamReader(sr, Encoding.Default);
strRet = ser.ReadToEnd();
}
catch (Exception ex)
{
strRet = null;
}
return strRet;
}
3.---JAVA调用----------------------------------------------------------------------------------------------
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
/**
* 发送短信基础类
* @author administration
*
*/
public class SmsBase {
private Integer x_eid=0;
private String x_uid="username";
private String x_pwd_md5="md5pass";
private Integer x_gate_id=300;
public String SendSms(String mobile,String content) throws UnsupportedEncodingException{
Integer x_ac=12;//发送信息
HttpURLConnection httpconn = null;
String result="-20";
String memo = content.trim();
StringBuilder sb = new StringBuilder();
sb.append("http://api.zosms.com:6000/utf8/web_api/?x_eid=");
sb.append(x_eid);
sb.append("&x_uid=").append(x_uid);
sb.append("&x_pwd_md5=").append(x_pwd_md5);
sb.append("&x_ac=").append(x_ac);
sb.append("&x_gate_id=").append(x_gate_id);
sb.append("&x_target_no=").append(mobile);
sb.append("&x_memo=").append(URLEncoder.encode(memo, "utf-8"));
try {
URL url = new URL(sb.toString());
httpconn = (HttpURLConnection) url.openConnection();
BufferedReader rd = new BufferedReader(new InputStreamReader(httpconn.getInputStream()));
result = rd.readLine();
rd.close();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if(httpconn!=null){
httpconn.disconnect();
httpconn=null;
}
}
return result;
}
}
------4 PHP----------------------------------------------------------------------------------
$url='http://api.zosms.com:6000/gbk/web_api/?x_eid=&x_uid=&x_pwd_md5=&x_ac=10&x_target_no=&x_memo=test&x_gate_id=300';
echo Get($url);
function Get($url)
{
if(function_exists('file_get_contents'))
{
$file_contents = file_get_contents($url);
}
else
{
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
}
return $file_contents;
}
5.VB.NET-------------------------------------------------------------------------------------
'调用发送短信,NoList接收号码.多个之间用,分开,Memo内容70字
Public Function SendSMS(ByVal NoList As String, ByVal Memo As String) As String
Dim Url As String = "http://api.zosms.com:6000/gbk/web_api/?x_sid=会员编号&x_eid=企业ID&x_uid=会员帐号&x_pwd_md5=MD5登录密码&x_ac=10&x_gate_id=300&x_memo=" & Memo & "&x_target_no=" & NoList
Dim webClient As New Net.WebClient()
Try
'Dim responseData As Byte() =
Dim srcString As String = webClient.DownloadString(Url)
Return srcString
Catch
Return "-444"
End Try
End Function
WebService接口文档
WebService接入方式简单快捷,只需要在系统添加引用该WS地址即可实现调用,投入精力少
WebService调用方式
WS网关地址:
Utf8网关
http://api.zosms.com:6000/utf8/ws_api/WebSMS_V2.asmx
GBK网关
http://api.zosms.com:6000/gbk/ws_api/WebSMS_V2.asmx
WebService服务函数目录
1.EditPWD
修改接口密码,平台登录密码不受影响
2.FastSend
快速发送短信,直接提交到运营商,本站不存储任何数据.返回值:SendResult 自定义类
3.FastSendLongSMS
发送长短信,最多支持450字.按64字计费,本站不存储任何数据.返回值:SendResult 自定义类
4.GetBalance
查询账户剩余短信/彩信条数,返回值:sms:100,mms:100 当前余额,否则返回失败代码
5.GetUpSMS
客户主动读取上行短信,最小间隔>30秒,返回多个Woxp_UpSMS上行类。每条上行信息生成一个类,没有上行就返回NULL
6.SendXMLPack
打包发送短信,适合不同内容批量提交,以xml格式打包,上限300条.返回值:SendResult
公共参数调用描述
eid_pwd_gateId ,该参数是字符串类型,由多个值拼成
所有函数都必须依赖这个参数来提供服务
参数格式
( 会员编号-企业代码-会员帐号-sha1(sha1(接口密码)+登录IP)-通道号)各个参数用‘-’分开
参数例如
(1)会员编号:15
(2)企业代码:10001
(3)会员帐号:smsone
(4)登录sha1: e10adc3949ba59abbe56e057f20f883e, sha1(sha1(接口密码)+登录IP)
登录IP可以由http://api.zosms.com:6000/utf8/web_api/SendSMS_V2.aspx?x_ac=100获取
(5)通道号:300(这个是固定值)
eid_pwd_gateId =15-10001-smsone-e10adc3949ba59abbe56e057f20f883e-300
(注意分隔符’-’半角下输入)
1.修改接口密码
public int EditPWD(string eid_pwd_md5, string newPwd_md5)
参数描述
newPwd_md5,新接口密码sha1值(32 位)
返回值
1成功,否则失败.
2.发送普通短信70字
public SendResult FastSend(string eid_pwd_gateId, string TargetNo, string MsgContent, string SendTime, string strSubId)
参数描述
- TargetNo 发送手机号码,多个号码用逗号分开。最多支持300个号码
- MsgContent 发送短信内容,最多70个字符
- SendTime 定时发送时间,暂时为null,预留参数
- strSubId 扩展码,确认不同用户回复
返回值: SendResult自定义类
<SendResult>
<StatusReportId>string</StatusReportId>
<RetCode>int</RetCode>(是否成功由这个值确定,大于0成功其它值失败)
<GateWayRetutrn>string</GateWayRetutrn>
<GateWayId>int</GateWayId>
<GateWayRetutrn_Cn>string</GateWayRetutrn_Cn>
<BlackWords>string</BlackWords>
<ErrorDesc>string</ErrorDesc>
</SendResult>
成功标识 RetCode值大于0代表发送成功,返回计费条数,否则就返回失败代码
3.发送长短信450字
public SendResult FastSendLongSMS(string eid_pwd_gateId, string TargetNo, string MsgContent, string SendTime, string strSubId)
解释同【发送普通短信70字】一样,请参考FastSend上面说明.
4.查询账户余额
public string GetBalance(string eid_pwd_md5)
调用成功后返回值
Sms:1000,mms:1000
该帐号剩余短信1000条,彩信1000条
5.获取用户回复的短信
public Woxp_UpSMS[] GetUpSMS(string eid_pwd_gateId)
返回值,
如果有回复短信返回Woxp_UpSMS数组集合.每个数组存储回复详细信息。否则为NULL
Woxp_UpSMS 自定义类型
<Woxp_UpSMS>
<Id>int</Id> (上行编号,可以忽略)
<Sid>int</Sid> (会员编号区分企业下面多个帐号)
<strMobile>string</strMobile> (回复者的手机号)
<Msg>string</Msg> (回复内容)
<RepTime>string</RepTime> (回复时间)
<SubNo>string</SubNo> (用户扩展码,区分哪个用户回复)
<SP_ID>string</SP_ID> (回复网关号码)
</Woxp_UpSMS>
6.打包提交不同内容短信,最大支持300个包
public SendResult SendXMLPack(string eid_pwd_gateId, string xml)
本函数适合不同内容短信批量提交,返回值请参考FastSend函数返回值.
调用参数 xml格式
<SendSMS>
<Item><!—此节可以循环,最大300-->
<ID>编号</ID> (如果失败,会输出这个编号,保证此包里不要重复)
<CardNo>用户手机号码</CardNo>
<Msg>
<![CDATA[短信内容]]>
</Msg>
<IsLongSMS>1长短信,0普通短信,(超过70字自动设置1)</IsLongSMS>
<SubId>扩展码</SubId>
</Item>
</SendSMS>