短信网关数据接口通讯协议(V0.1) 文件状态: [ ] 草稿 [ ] 正式发布 [√ ]正在修改 文件标识: 当前版本: Version 0.1 作者: 彭凡 联系方式 完成日期:
1 定义 1.1 协议 短信客户端与服务器端通过接口方式传输数据,传输协议为TCP短连接,每次由客户端发起请求,服务器端接收完请求并处理后,返回响应数据,并主动关闭socket连接。 服务器端接口程序采用java开发,客户端由客户自行选择熟悉的方式。
1.2 大小写说明
如无特殊说明,则表示是大小写敏感的。A和a代表不同的含义。 1.3 编码
编码统一采用UTF-8。 2 数据类型 2.1 基本数据类型 Integer 整数,占4个字节 String 字符串,当未注明位数时,表示是可变长度;在明确注明长度并位数不足的情况下,应左补齐。 比如:String(6)表示占6个字节的字符串,当数据为1234时,应进行左补齐,补齐结果为:001234 Json JSON结构体,例如 { name: ”zs” , password:”123” }
2.2 消息结构
2.2.1 请求消息结构(MessageRequest): 字段 字节数 数据类型 说明 Total_length 4 Unsigned Integer 紧跟随的request_body的长度。request_body是json格式。长度不足6为左补零。假设request_body长度为1234,则左补零为001234。服务器端读取到001234后,首先会去掉00,得到1234,然后再从socket中读取1234个字节,并转成字符串。该字符串是个json格式。
Command_Id 4 String 每个接口唯一标识,例如:A001表示登录接口。详见每个接口
appid 15 String appsecret 15 String
request_body Json 具体的请求参数,为json格式。该json的字节为data_length。每个接口的request_body都不一样。具体参数会在每个接口中详述。 2.2.2 响应消息结构(MessageResponse): 字段 字节数 数据类型 说明 Total_length 4 Unsigned Integer 紧跟随的request_body的长度。request_body是json格式。长度不足6为左补零。假设request_body长度为1234,则左补零为001234。服务器端读取到001234后,首先会去掉00,得到1234,然后再从socket中读取1234个字节,并转成字符串。该字符串是个json格式。
Command_Id 4 String(4) 每个接口唯一标识,例如:A001表示登录接口。详见每个接口
response_body Json 具体的响应消息参数,为json格式。详见下表。
3 业务接口
3.1 短信发送接口 3.1.1 接口说明 网关平台此时作为socket server。 商户系统向SP请求发送短信。用户可以一次发送多条数据。 Msgtype的类型区别: 1、 通知短信。网关发送失败后,通知短信会重新尝试发送。发送失败次数超过3次后,停止发送操作。 2、 验证码短信。网关发送失败后,不会重新进行发送。
3.1.2 request_body(command_id:A001) { [ phone message sendtime msgid msgtype ] }
字段 数据类型 说明 phone String
message String 短信内容
sendtime String 发送时间。时间的毫秒数:1399176571278;
msgid String 商户系统可以唯一短信的字段
msgtype String 类型。1、通知短信;2、验证码短信。
3.1.3 response_body(command_id:B001) { status }
字段 数据类型 说明 status String
3.2 短信回执推送接口 3.2.1 接口说明 网关平台发送短信成功后,获取运营返回的回执信息,主动将回执信息推送到商户系统。网关平台此时作为socketserver。
超过60秒后,server没有收到response_body,系统将会重新发送回执信息。发送三次后,系统认为信息发送完成,不在进行发送。
3.2.2 request_body(command_id:A002) { [ msgid phone status sendtime stat ] }
字段 数据类型 说明 msgid String
phone String
status String 是否成功。1、成功;2、失败
sendtime Long
stat String 运营商返回的描述信息
3.2.3 response_body(command_id:B002): 3.3 短信状态报告推送接口 3.3.1 接口说明 网关平台发送短信成功后,获取运营返回的短信状态报告信息,主动将信状态报告信息推送到商户系统。网关平台此时作为socketserver。
超过60秒后,server没有收到response_body,系统将会重新发送回执信息。发送三次后,系统认为信息发送完成,不在进行发送。
3.3.2 request_body(command_id:A003) { [ msgid phone status stat receivetime submittime donetime ] }
字段 数据类型 说明 msgid String
phone String
status String 状态报告状态;1、成功;2、失败
stat String
receivetime Long
运营商接受到短信时间
submittime String
网关提交时间 yyMMddHHmmss
donetime String
运营商处理完成时间 yyMMddHHmmss
3.3.3 response_body(command_id:B003): 3.4 短信回执接口 3.4.1 接口说明 商户系统主动请求SP系统接口,获取Sp在发送短信成功后,网关的回执信息。网关平台此时作为socket client。
3.4.2 request_body(command_id:A004) { msgid: }
字段 数据类型 说明 msgid String 多个逗号隔开 3.4.3 response_body(command_id:B004): { status: data:{ [ msgid phone status sendtime stat ]} }
字段 数据类型 说明 msgid String
phone String
status String 是否成功。1、成功;2、失败
sendtime Long
stat String 运营商返回的描述信息
3.5 状态报告回执接口 3.5.1 接口说明 商户系统主动请求sp系统接口,获取网关返回的状态报告。网关平台此时作为socket client。
3.5.2 request_body(command_id:A005) { msgid: }
字段 数据类型 说明 msgid String 3.5.3 response_body(command_id:B005) {status: data: { [ msgid phone status stat receivetime submittime donetime ] } }
字段 数据类型 说明 msgid String
phone String
status String 状态报告状态;1、成功;2、失败
stat String
receivetime String
运营商接受到短信时间
submittime String
网关提交时间
donetime String
运营商处理完成时间
3.6 上行短信接口 3.6.1 接口说明: 网关平台此时作为socket client,将系统接收到的上行短信定时发送给商户系统,功商户系统处理业务
3.6.2 request_body(command_id:A006)