公益云推送服务API接口

目录

  • 1.单发请求接口
  • 1.1 发送请求
  • 1.1.1 参数定义
  • 1.1.2 请求示例
  • 1.2 返回结果
  • 1.2.1 参数定义
  • 1.2.2 返回示例
  • 2.状态报告通知
  • 2.1 发送请求
  • 2.1.1 参数定义
  • 2.1.2 请求示例
  • 2.2 返回结果
  • 3.上行短信通知
  • 3.1 发送请求
  • 3.1.1 参数定义
  • 3.1.2 请求示例
  • 3.2 返回结果
  • 4.批量发送接口
  • 4.1 发送请求
  • 4.1.1 参数定义
  • 4.1.2 请求示例
  • 4.2 返回结果
  • 4.2.1 参数定义
  • 4.2.2 返回示例
  • 5.查询余额接口
  • 5.1 请求字段解释
  • 5.2 下发字段解释

1.单发请求接口

1.1 发送请求

方式:http post

数据格式:支持键值对、json、xml

PS:建议使用json格式

1.1.1 参数定义

系统级输入参数

名称 类型 必需 描述
posttype String 选填 数据请求类型:str(键值对)、json和xml 默认:str
restype String 选填 数据输出类型:str(键值对)、json和xml 默认:str
v Int 必填 接口版本号,这里填写:2

应用级输入参数

名称 类型 必需 描述
acc String 必填 客户账号
mb String 必填 手机号,手机号不带86,只支持一个号码
sms String 必填 短信内容
time String 必填 访问时间戳
sign String 必填 签名
extend String 选填 透传参数

签名生成规则:

MD5(time+signKey)输出32位小写字母,其中signKey平台提供

1.1.2 请求示例

1.1.2.1 键值对格式

http://xxx/SMS/SendSMS.ashx?posttype=str&restype=str&v=2

 acc=acc&mb=12345678901&sms=sms&time=1236547803&sign=sign&extend=

代码段:

string acc = "test";
string signKey = "2d9b741148b8444a900c50ab786b23qw";
string mb = "12345678901";
string content = "测试模板内容";
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
string time = Convert.ToInt64(ts.TotalSeconds).ToString();//时间戳
string sign = MD5UTF8Str(time + signKey);
string extend = "";
string urlParam = "acc={0}&mb={1}&sms={2}&sign={3}&time={4}&extend={5}";
string data = string.Format(urlParam, acc, mb, content, sign, time, extend);//拼接要post的参数
string postType="str", string resType="str";
string sendUrl=" http://xxx/SMS/SendSMS.ashx";
string url = string.Format(sendUrl + "?postType={0}&resType={1}&v=2", postType, resType);//拼接url
byte[] bs = System.Text.Encoding.UTF8.GetBytes(data);
Post(bs, url);//发送post请求
private string MD5UTF8Str(string str)
{
  MD5 md5 = new MD5CryptoServiceProvider();
  byte[] _byte = Encoding.UTF8.GetBytes(str);
  byte[] _byteRst = md5.ComputeHash(_byte);
  StringBuilder SBuilder = new StringBuilder();
  for (int i = 0; i < _byteRst.Length; i++)
   {
      SBuilder.Append(_byteRst[i].ToString("x2"));
   }
   return SBuilder.ToString();
}

1.1.2.2 json格式

http://xxx/SMS/SendSMS.ashx?posttype=json&restype=json&v=2

{
"acc": "acc",
"mb": "12345678901",
"sms": "sms",
"time": "1236547803",
"sign": "sign",
"extend": ""
}

代码段:

string acc = "test";
string signKey = "2d9b741148b8444a900c50ab786b23qw";
string mb = "12345678901";
string content = "测试模板内容";
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
string time = Convert.ToInt64(ts.TotalSeconds).ToString();//时间戳
string sign = MD5UTF8Str(time + signKey);
string extend = "";
string json = "{{ \"acc\":\"{0}\", \"mb\":\"{1}\",\"sms\":\"{2}\", \"sign\":\"{3}\" , \"time\":\"{4}\", \"extend\":\"{5}\"}}";
string data = string.Format(json, acc, mb, content, sign, time, extend);//拼接要post的参数
string postType="json", string resType="json";
string sendUrl=" http://xxx/SMS/SendSMS.ashx";
string url = string.Format(sendUrl + "?postType={0}&resType={1}&v=2", postType, resType);//拼接url
byte[] bs = System.Text.Encoding.UTF8.GetBytes(data);
Post(bs, url);//发送post请求
static string MD5UTF8Str(string str)
{
  MD5 md5 = new MD5CryptoServiceProvider();
  byte[] _byte = Encoding.UTF8.GetBytes(str);
  byte[] _byteRst = md5.ComputeHash(_byte);
  StringBuilder SBuilder = new StringBuilder();
  for (int i = 0; i < _byteRst.Length; i++)
   {
      SBuilder.Append(_byteRst[i].ToString("x2"));
   }
   return SBuilder.ToString();
}

1.1.2.3 xml格式

http://xxx/SMS/SendSMS.ashx?posttype=xml&restype=xml&v=2

<?xml version="1.0"?>
<r>
    <acc>acc</acc>
    <mb>12345678901</mb>
    <sms>sms</sms>
    <time>1236547803</time>
    <sign>sign</sign>
    <extend></extend>
</r>

代码段:

string acc = "test";
string signKey = "2d9b741148b8444a900c50ab786b23qw";
string mb = "12345678901";
string content = "测试模板内容";
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
string time = Convert.ToInt64(ts.TotalSeconds).ToString();//时间戳
string sign = MD5UTF8Str(time + signKey);
string extend = "";
string xmlParam = @"<r>
                            <acc>{0}</acc>
                            <mb>{1}</mb>
                            <sms>{2}</sms>
                            <sign>{3}</sign>
                            <time>{4}</time>
                            <extend>{5}</extend>
                        </r>";
string data = string.Format(xmlParam, acc, mb, content, sign, time, extend);//拼接要post的参数
string postType="xml", string resType="xml";
string sendUrl=" http://xxx/SMS/SendSMS.ashx";
string url = string.Format(sendUrl + "?postType={0}&resType={1}&v=2", postType, resType);//拼接url
byte[] bs = System.Text.Encoding.UTF8.GetBytes(data);
Post(bs, url);//发送post请求
static string MD5UTF8Str(string str)
{
  MD5 md5 = new MD5CryptoServiceProvider();
  byte[] _byte = Encoding.UTF8.GetBytes(str);
  byte[] _byteRst = md5.ComputeHash(_byte);
  StringBuilder SBuilder = new StringBuilder();
  for (int i = 0; i < _byteRst.Length; i++)
   {
      SBuilder.Append(_byteRst[i].ToString("x2"));
   }
   return SBuilder.ToString();
}

1.2 返回结果

数据格式:支持txt、json、xml

1.2.1 参数定义

名称 类型 描述
code Int 状态码 参见状态码定义
msg String 状态消息
count Int 短信计费条数
mb String 手机号
sid String 短信唯一的ID
extend String 透传参数

状态码定义

状态码 描述
0 验证成功
10 参数错误
11 IP黑名单
12 验签失败
13 黑名单
14 账号异常
15 模板为空
16 模板不配
17 模板禁发
18 违禁词
19 重号
20 号码错误
21 禁发时间
22 流程异常
23 未知异常
24 网关错误
25 地区屏蔽
26 余额不足
27 运营商屏蔽
50 其他

1.2.2 返回示例

1.2.2.1 txt格式

用英文分号隔开

code;msg;count;mb;sid;extend

1.2.2.2 json格式

{
"code": 0,
"msg": "成功",
"count": 1,
"mb": "12345678901",
"sid": "sid",
"extend": ""
}

1.2.2.3 xml格式

<?xml version="1.0"?>
<r>
    <code>0</code>
    <msg>成功</msg>
    <count>1</count>
    <mb>12345678901</mb>
    <sid>1236547803</sid>
    <extend></extend>
</r>

2.状态报告通知

合作方需按此开发,并提供接口地址给我方,将通过该接口同步短信状态数据。

2.1发送请求

提交方式:http post

提交格式:json

2.1.1 参数定义:

字段 类型 说明
sid Long 短信唯一的ID
msg String 短信下发状态描述
status Int 短信下发状态码
mb Long 手机号(不带86)
time Date 状态报告返回时间
extend String 透传参数

短信下发状态码定义

状态码 描述
1 成功
2 失败
3 UNDELIV

2.1.2 请求示例:

[{
		"sid": "18664273817325568",
		"status": 1,
		"msg": "DELIVRD",
		"mb": 15110794337,
		"time": "2019-01-10 13:30:25",
		"extend": ""
	},
	{
		"sid": "18664273817325568",
		"status": 1,
		"msg": "DELIVRD",
		"mb": 15110794337,
		"time": "2019-01-10 13:30:25",
		"extend": ""
	}
]

2.2返回结果

成功:success 失败:fail

3.上行短信通知

合作方需按此开发,并提供接口地址给我方,将通过该接口同步短信上行数据。

3.1发送请求

提交方式:http post

提交格式:json

3.1.1 参数定义:

字段 类型 说明
sid String 短信唯一的ID
num String 端口号
mb String 手机号
content String 上行内容
time Date 上行时间

3.1.2 请求示例:

[{
          "sid": "",
          "num": "106581399930",
          "mb": "15032456871",
          "content": "content",
          "time": "2019-01-10 13:30:25"
},{
          "sid": "",
          "num": "106581399930",
          "mb": "15032456871",
          "content": "content",
          "time": "2019-01-10 13:30:25"
}]

3.2返回结果

成功:success 失败:fail

4.批量发送接口

4.1 发送请求

方式:http post

数据格式:支持键值对、json、xml

PS:建议使用json格式

4.1.1 参数定义

系统级输入参数

名称 类型 必需 描述
posttype String 选填 数据请求类型:str(键值对)、json和xml 默认:str
restype String 选填 数据输出类型:str(键值对)、json和xml 默认:str
v Int 必填 接口版本号,这里填写:2

应用级输入参数

名称 类型 必需 描述
acc String 必填 客户账号
mb String 必填 手机号,手机号不带86,多个号码用英文逗号隔开
sms String 必填 短信内容
time String 必填 访问时间戳
sign String 必填 签名
extend String 选填 透传参数

签名生成规则:

MD5(time+signKey)输出32位小写字母,其中signKey平台提供

4.1.2 请求示例

4.1.2.1 键值对格式

http://xxx/SMS/BatchSms.ashx?posttype=str&restype=str&v=2

acc=acc&mb=12345678901,12345671236&sms=sms&time=1236547803&sign=sign&extend=

代码段:

string acc = "test";
string signKey = "2d9b741148b8444a900c50ab786b23qw";
string mb = "12345678901,12345671236";
string content = "测试模板内容";
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
string time = Convert.ToInt64(ts.TotalSeconds).ToString();//时间戳
string sign = MD5UTF8Str(time + signKey);
string extend = "";
string urlParam = "acc={0}&mb={1}&sms={2}&sign={3}&time={4}&extend={5}";
string data = string.Format(urlParam, acc, mb, content, sign, time, extend);//拼接要post的参数
string postType="str", string resType="str";
string sendUrl=" http://xxx/SMS/BatchSms.ashx";
string url = string.Format(sendUrl + "?postType={0}&resType={1}&v=2", postType, resType);//拼接url
byte[] bs = System.Text.Encoding.UTF8.GetBytes(data);
Post(bs, url);//发送post请求
private string MD5UTF8Str(string str)
{
  MD5 md5 = new MD5CryptoServiceProvider();
  byte[] _byte = Encoding.UTF8.GetBytes(str);
  byte[] _byteRst = md5.ComputeHash(_byte);
  StringBuilder SBuilder = new StringBuilder();
  for (int i = 0; i < _byteRst.Length; i++)
   {
      SBuilder.Append(_byteRst[i].ToString("x2"));
   }
   return SBuilder.ToString();
}

4.1.2.2 json格式

http://xxx/SMS/BatchSms.ashx?posttype=json&restype=json&v=2

{
"acc": "acc",
"mb": "12345678901,12345671236",
"sms": "sms",
"time": "1236547803",
"sign": "sign",
"extend": ""
}

代码段:

string acc = "test";
string signKey = "2d9b741148b8444a900c50ab786b23qw";
string mb = "12345678901,12345671236";
string content = "测试模板内容";
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
string time = Convert.ToInt64(ts.TotalSeconds).ToString();//时间戳
string sign = MD5UTF8Str(time + signKey);
string extend = "";
string json = "{{ \"acc\":\"{0}\", \"mb\":\"{1}\",\"sms\":\"{2}\", \"sign\":\"{3}\" , \"time\":\"{4}\", \"extend\":\"{5}\"}}";
string data = string.Format(json, acc, mb, content, sign, time, extend);//拼接要post的参数
string postType="json", string resType="json";
string sendUrl=" http://xxx/SMS/BatchSms.ashx";
string url = string.Format(sendUrl + "?postType={0}&resType={1}&v=2", postType, resType);//拼接url
byte[] bs = System.Text.Encoding.UTF8.GetBytes(data);
Post(bs, url);//发送post请求
static string MD5UTF8Str(string str)
{
  MD5 md5 = new MD5CryptoServiceProvider();
  byte[] _byte = Encoding.UTF8.GetBytes(str);
  byte[] _byteRst = md5.ComputeHash(_byte);
  StringBuilder SBuilder = new StringBuilder();
  for (int i = 0; i < _byteRst.Length; i++)
   {
      SBuilder.Append(_byteRst[i].ToString("x2"));
   }
   return SBuilder.ToString();
}

4.1.2.3 xml格式

http://xxx/SMS/BatchSms.ashx?posttype=xml&restype=xml&v=2

 <?xml version="1.0"?>
 <r>
    <acc>acc</acc>
    <mb>12345678901,12345671236</mb>
    <sms>sms</sms>
    <time>1236547803</time>
    <sign>sign</sign>
    <extend></extend>
 </r>

代码段:

string acc = "test";
string signKey = "2d9b741148b8444a900c50ab786b23qw";
string mb = "12345678901,12345671236";
string content = "测试模板内容";
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
string time = Convert.ToInt64(ts.TotalSeconds).ToString();//时间戳
string sign = MD5UTF8Str(time + signKey);
string extend = "";
string xmlParam = @"<r>
                            <acc>{0}</acc>
                            <mb>{1}</mb>
                            <sms>{2}</sms>
                            <sign>{3}</sign>
                            <time>{4}</time>
                            <extend>{5}</extend>
                        </r>";
string data = string.Format(xmlParam, acc, mb, content, sign, time, extend);//拼接要post的参数
string postType="xml", string resType="xml";
string sendUrl=" http://xxx/SMS/BatchSms.ashx";
string url = string.Format(sendUrl + "?postType={0}&resType={1}&v=2", postType, resType);//拼接url
byte[] bs = System.Text.Encoding.UTF8.GetBytes(data);
Post(bs, url);//发送post请求
static string MD5UTF8Str(string str)
{
  MD5 md5 = new MD5CryptoServiceProvider();
  byte[] _byte = Encoding.UTF8.GetBytes(str);
  byte[] _byteRst = md5.ComputeHash(_byte);
  StringBuilder SBuilder = new StringBuilder();
  for (int i = 0; i < _byteRst.Length; i++)
   {
      SBuilder.Append(_byteRst[i].ToString("x2"));
   }
   return SBuilder.ToString();
}

4.2 返回结果

数据格式:支持txt、json、xml

4.2.1 参数定义

名称 类型 描述
total_mb Int 成功提交号码数量
total_fee Int 短信总数
code Int 状态码 参见状态码定义
msg String 状态消息
count Int 短信计费条数
extend String 透传参数(接收请求中的extend值)
data String[] data集合 参见data对象定义

data对象定义

名称 类型 描述
code Int 状态码 参见状态码定义
msg String 状态消息
mb String 手机号
sid String 短信唯一ID

4.2.2 返回示例

4.2.2.1 txt格式

七行数据,最后一行用@分割

total_mb
total_fee
code
msg
count
extend
code;msg;mb;sid@code;msg;mb;sid

4.2.2.2 json格式

{
	"total_mb": 2,
	"total_fee": 2,
	"code": 0,
	"msg": "成功",
	"count": 1,
	"extend": "",
	"data": [{
			"code": 0,
			"msg": "成功",
			"mb": "12345678923",
			"sid": "1234563"
		},
		{
			"code": 0,
			"msg": "成功",
			"mb": "12345678901",
			"sid": "1234567"
		}
	]
}

4.2.2.3 xml格式

<?xml version="1.0"?>
<r>
    <total_mb>2</total_mb>
    <total_fee>2</total_fee>
    <code>0</code>
    <msg>成功</msg>
    <count>1</count>
    <extend></extend>
    <data>
        <code>0</code>
        <msg>成功</msg>
        <mb>12345678923</mb>
        <sid>1234563</sid>
    </data>
    <data>
        <code>0</code>
        <msg>成功</msg>
        <mb>12345678901</mb>
        <sid>1234567</sid>
    </data>
</r>

5.查询余额接口

请求方式:GET

接口地址:http://xxx/SMS/SmsBalance.ashx

5.1请求字段解释

字段 类型 说明
acc String 客户账号
pwd String 密码

5.2下发字段解释

字段 类型 说明
yzmcount Long 验证码通知短信余额
hycount Long 会员营销短信余额
code Int 返回码(参见状态码定义)