# 短信平台接口规范

> 2021-04-08

目录

1. 前言
2. 短信接口定义
3. 发送短信
4. 回执接口（json格式）
5. 回复接口（json格式）
6. 剩余短信条数查询
7. 主动推送回执接口（json格式）
8. 主动推送回复接口（json格式）
9. 发送国际短信
10. 国际短信回执接口（json格式）

---

#### 1. 前言

> 本规范主要讲了第三方应用系统接入短信平台的协议要求，协议指令的格式和响应信息。

#### 2. 短信接口定义

> 接口地址和端口号：${url}  代替下面的ip:port，通过接口提交参数时, 参数内容必须为utf-8 编码。

#### 3. 发送短信

> 功能描述: 短信发送,建议采用post方式

> 调用格式：POST http://ip:port/sms/Api/ReturnJson/Send.do

> 返回格式: {"result":"0","description":"发送成功","taskid":"190319105738200000"}

POST参数说明：

| 参数名称       | 类型   | 是否必填 | 说明                                                                   |
| -------------- | ------ | -------- | ---------------------------------------------------------------------- |
| SpCode         | string | 是       | 企业编号                                                               |
| LoginName      | string | 是       | 用户名称                                                               |
| Password       | string | 是       | 用户密码                                                               |
| MessageContent | string | 是       | 短信内容, 最大700个字符                                                |
| UserNumber     | string | 是       | 手机号码(多个号码用”,”分隔)，最多1000个号码                          |
| SerialNumber   | string | 否       | 流水号，支持50位(数字和字母)，唯一                                     |
| ScheduleTime   | string | 否       | 预约发送时间，格式:yyyyMMddhhmmss,如‘20090901010101’，立即发送请填空 |
| subPort        | string | 否       | 可选，扩展号                                                           |
|                |        |          |                                                                        |

接口返回值：

| 返回值 | 错误描述                                                             |
| ------ | -------------------------------------------------------------------- |
| 0      | 发送短信成功                                                         |
| 1      | 提交参数不能为空                                                     |
| 2      | 账号无效或未开户                                                     |
| 3      | 账号密码错误                                                         |
| 4      | 预约发送时间无效                                                     |
| 5      | IP不合法                                                             |
| 6      | 号码中含有无效号码或不在规定的号段                                   |
| 7      | 内容中含有非法关键字                                                 |
| 8      | 内容长度超过上限，最大4000                                           |
| 9      | 接受号码过多，最大5000                                               |
| 10     | 黑名单用户                                                           |
| 11     | 提交速度太快                                                         |
| 12     | 您尚未订购[普通短信业务]，暂不能发送该类信息                         |
| 13     | 您的[普通短信业务]剩余数量发送不足，暂不能发送该类信息               |
| 14     | 流水号格式不正确                                                     |
| 15     | 流水号重复                                                           |
| 16     | 超出发送上限（操作员帐户当日发送上限）                               |
| 17     | 余额不足                                                             |
| 18     | 扣费不成功                                                           |
| 20     | 系统错误                                                             |
| 21     | 您只能发送联通的手机号码，本次发送的手机号码中包含了非联通的手机号码 |
| 22     | 您只能发送移动的手机号码，本次发送的手机号码中包含了非移动的手机号码 |
| 23     | 您只能发送电信的手机号码，本次发送的手机号码中包含了非电信的手机号码 |
| 24     | 账户状态不正常                                                       |
| 25     | 账户权限不足                                                         |
| 26     | 需要人工审核                                                         |
| 28     | 发送内容与模板不符                                                   |

#### 4. 回执接口（json格式）

> 功能描述：短信回执查询

> 调用格式：POST http://ip:port/sms/Api/ReturnJson/report.do

> 请按form表单格式发起请求，http头为: application/x-www-form-urlencoded

> 返回格式:  {"result":"0","out":[{"stat":"DELIVRD","code":"0","mobile":"18212345678","sn":"","time":"20210607155205","tid":"210607155204100104"}]}

POST参数说明：

| 类别 | 参数名称  | 类型   | 说明     |
| ---- | --------- | ------ | -------- |
| 输入 | SpCode    | string | 企业编号 |
| 输入 | LoginName | string | 用户名称 |
| 输入 | Password  | string | 用户密码 |

返回值：

| 返回值 | 错误描述         |
| ------ | ---------------- |
| 0      | 成功             |
| 1      | 提交参数不能为空 |
| 2      | 账号无效         |
| 3      | 账号密码错误     |
| 20     | 系统错误         |

返回结果对象说明:

| 返回结果字段 | 描述                            |
| ------------ | ------------------------------- |
| tid          | 任务编号                        |
| mobile       | 手机号码                        |
| code         | 回执数值，0为成功，其他为失败   |
| stat         | 回执码，DELIVRD成功，其他为失败 |
| sn           | 流水号                          |
| time         | 回执时间 yyyyMMddHHmmss         |

#### 5. 回复接口（json格式）

> 功能描述：短信上行回复查询

> 调用格式：POST http:// ip:port/sms/Api/ReturnJson/reply.do

> 返回格式：{"result":"0","replys":[{"mdn":"18271234567","reply_time":"2021-06-18 11:07:40","callmdn":"106917731445","id":"2908978","subport":"123","content":"收到"},{"mdn":"18271234568","reply_time":"2021-06-18 11:07:40","callmdn":"106917731445","id":"2908979","subport":"1231","content":"收到1"}]}

POST参数说明：

| 类别 | 参数名称  | 类型   | 说明     |
| ---- | --------- | ------ | -------- |
| 输入 | SpCode    | string | 企业编号 |
| 输入 | LoginName | string | 用户名称 |
| 输入 | Password  | string | 用户密码 |

JSON格式的属性值:

| 类别 | 参数名称   | 类型   | 说明                               |
| ---- | ---------- | ------ | ---------------------------------- |
| 输出 | mdn        | string | 手机号码                           |
| 输出 | callmdn    | string | 下发接入号                         |
| 输出 | content    | string | 回复内容                           |
| 输出 | reply_time | string | 回复时间，格式 yyyy-MM-dd HH:mm:ss |
| 输出 | id         | string | 回复 id 编号                       |
| 输出 | subport    | string | 扩展号                             |

http://ip:port/sms/Api/ReturnJson/reply.do?SpCode=200097&LoginName=admin&Password=admin

#### 6. 剩余短信条数查询

> 功能描述：剩余短信条数查询接口

> 调用格式： POST http://ip:port/sms/Api/searchNumber.do

> 返回格式: result=0&leftover=条数

post参数说明：

| 类别 | 参数名称  | 类型   | 说明     |
| ---- | --------- | ------ | -------- |
| 输入 | SpCode    | string | 企业编号 |
| 输入 | LoginName | string | 用户名称 |
| 输入 | Password  | string | 用户密码 |

返回值:

| 返回值 | 错误描述         |
| ------ | ---------------- |
| 0      | 查询剩余条数成功 |
| 1      | 提交参数不能为空 |
| 2      | 账号无效         |
| 3      | 账号密码错误     |
| 5      | IP不合法         |
| 20     | 系统错误         |

#### 7. 主动推送回执接口（json格式）

> 功能描述：短信回执推送

> 调用格式：由客户方提供推送地址

> 提交格式: {"reports":[{"mobile":"13812345678","result":"0","taskid":"211119121329715277","stat":"DELIVRD","num":"0","report_time":"2014-01-01 16:37:31","sn":""},{"mobile":"13912345678","result":"1","taskid":"211119121329715277","stat":"DB:0006","num":"0","report_time":"2014-01-01 10:15:26","sn":""}]}

POST参数说明：

| 类别 | 参数名称 | 类型      | 说明     |
| ---- | -------- | --------- | -------- |
| 输入 | reports  | JSONArray | Json数组 |

返回值：

| 返回值序号  | 描述                                       |
| ----------- | ------------------------------------------ |
| taskid      | 任务编号                                   |
| mobile      | 手机号码                                   |
| result      | 回执结果                                   |
| stat        | 回执码                                     |
| sn          | 流水号，客户发送时填写的，发送没填写则为空 |
| report_time | 回执时间 yyyy-MM-dd HH:mm:ss               |
| num         | 长短信序号，从 0 开始                      |

对接方需响应：0或者succ

#### 8. 主动推送回复接口（json格式）

功能描述：主动推送短信上行回复

> 调用格式：客户提供调用地址

> 请求格式：{"replys":[{"callmdn":"000777139","mobile":"13812345678","content":"收到","reply_time":"2014-01-01 16:37:31"},{"callmdn":"000777139","mobile":"13912345678","content":"回了","reply_time":"2014-01-01 10:15:26"}]}

POST参数说明：

| 类别 | 参数名称 | 类型      | 说明     |
| ---- | -------- | --------- | -------- |
| 输入 | replys   | JSONArray | Json数组 |

请求JSON格式的属性值:

| 类别 | 参数名称   | 类型   | 说明                               |
| ---- | ---------- | ------ | ---------------------------------- |
| 输出 | mobile     | string | 手机号码                           |
| 输出 | callmdn    | string | 子扩展号                           |
| 输出 | content    | string | 回复内容                           |
| 输出 | reply_time | string | 回复时间，格式 yyyy-MM-dd HH:mm:ss |

对接方需响应：0或者succ

#### 9. 发送国际短信

> 功能描述：国际短信发送

> 调用格式：对http://ip:port/sms/Api/IntSend.do进行post

> 返回格式: result=&description=错误描述&faillist=失败号码列表

> 注: 国际短信发送号码必须以’00’开头

POST参数说明：

| 类别 | 参数名称       | 类型   | 说明                                                                    |
| ---- | -------------- | ------ | ----------------------------------------------------------------------- |
| 输入 | SpCode         | string | 企业编号                                                                |
| 输入 | LoginName      | string | 用户名称                                                                |
| 输入 | Password       | string | 用户密码                                                                |
| 输入 | MessageContent | string | 短信内容, 最大700个字符                                                 |
| 输入 | UserNumber     | string | 手机号码(多个号码用”,”分隔)，最多1000个号码                           |
| 输入 | SerialNumber   | string | 流水号，20位数字，唯一                                                  |
| 输入 | ScheduleTime   | string | 预约发送时间，格式:yyyyMMddhhmmss，如‘20090901010101’，立即发送请填空 |
| 输入 | subPort        | string | 可选，扩展号                                                            |

> 请求示例：建议采用post方式
>
> http://ip:port/sms/Api/IntSend.do?SpCode=200097&LoginName=admin&Password=admin&MessageContent=短信内容&UserNumber=0033000000000&SerialNumber=&ScheduleTime=&subPort=

返回值：

| 返回值 | 错误描述                                                             |
| ------ | -------------------------------------------------------------------- |
| 0      | 发送短信成功                                                         |
| 1      | 提交参数不能为空                                                     |
| 2      | 账号无效或未开户                                                     |
| 3      | 账号密码错误                                                         |
| 4      | 预约发送时间无效                                                     |
| 5      | IP不合法                                                             |
| 6      | 号码中含有无效号码或不在规定的号段                                   |
| 7      | 内容中含有非法关键字                                                 |
| 8      | 内容长度超过上限，最大4000                                           |
| 9      | 接受号码过多，最大5000                                               |
| 10     | 黑名单用户                                                           |
| 11     | 提交速度太快                                                         |
| 12     | 您尚未订购[普通短信业务]，暂不能发送该类信息                         |
| 13     | 您的[普通短信业务]剩余数量发送不足，暂不能发送该类信息               |
| 14     | 流水号格式不正确                                                     |
| 15     | 流水号重复                                                           |
| 16     | 超出发送上限（操作员帐户当日发送上限）                               |
| 17     | 余额不足                                                             |
| 18     | 扣费不成功                                                           |
| 20     | 系统错误                                                             |
| 21     | 您只能发送联通的手机号码，本次发送的手机号码中包含了非联通的手机号码 |
| 22     | 您只能发送移动的手机号码，本次发送的手机号码中包含了非移动的手机号码 |
| 23     | 您只能发送电信的手机号码，本次发送的手机号码中包含了非电信的手机号码 |
| 24     | 账户状态不正常                                                       |
| 25     | 账户权限不足                                                         |
| 26     | 需要人工审核                                                         |
| 28     | 发送内容与模板不符                                                   |

实际返回内容为

{

"result": "0",

"description": "发送成功",

"taskid": "210719112624100147"

}

#### 10. 国际短信回执接口（json格式）

> 功能描述：短信回执查询

> 调用格式：对http://ip:port/sms/Api/ReturnJson/report.do进行post

> 返回格式: {"result":"0","out":[{"stat":"NOROUTE","code":"1","mobile":"0033667322212","sn":"","time":"20210719115602","tid":"210719115602100153"}]}

POST参数说明：

| 类别 | 参数名称  | 类型   | 说明     |
| ---- | --------- | ------ | -------- |
| 输入 | SpCode    | string | 企业编号 |
| 输入 | LoginName | string | 用户名称 |
| 输入 | Password  | string | 用户密码 |

返回值：

| 返回值 | 错误描述         |
| ------ | ---------------- |
| 0      | 成功             |
| 1      | 提交参数不能为空 |
| 2      | 账号无效         |
| 3      | 账号密码错误     |
| 20     | 系统错误         |

返回对象描述

| 返回值字段 | 描述                            |
| ---------- | ------------------------------- |
| tid        | 任务编号                        |
| mobile     | 手机号码                        |
| code       | 回执数值，0为成功，其他为失败   |
| stat       | 回执码，DELIVRD成功，其他为失败 |
| sn         | 流水号                          |
| time       | 回执时间 yyyyMMddHHmmss         |
