接口概述

A1接口采用HTTP协议,发送响应的数据格式采用JSON格式。

1. 通信模型

1.1 业务消息交互

业务消息交互流程图

根据业务消息的不同,AC作为服务器端,提供不同的业务地址和端口。

业务类型 端口地址
互联网BSS业务(acbss) 具体待定
互联网SA业务(acsa) 具体待定

2. 消息格式

2.1 消息组成

消息由消息头和消息体组成,以JSON格式,包含在HTTP载荷中。

消息组成图
  • 对于消息头的字段,响应方返回的字段与请求方的字段应该保持一致
  • Json对象的名称,一律以小写表示
  • Json对象的取值为数字的,一律以字符串表示。
  • 消息都是以GBK编码

消息头包括如下字段:

消息结构 内容 Json对象名称 说明 举例
消息头 版本号 ver 消息请求方设定的接口协议的版本。消息响应方原值返回。 “ver”: “1.0”
消息ID msgid 消息请求发送方设定的唯一消息标识。具体由发送方设定。重发的消息id必须保持不变。消息响应方原值返回。 “msgid”: “4736219853”
时间戳 ts 以YYYYMMDDhhmmssNNN的十进制格式表示,由消息请求发送方在发送消息时设定。其中,NNN表示3位毫秒数。消息响应方原值返回。 “ts”: “20140402101356320”
业务类型 service 对于AC系统的业务类型定义如下:
业务类型 说明
acbss ACBSS业务
acsa ACSA业务
消息响应方原值返回。
“service”: “acbss”
消息类型 msgtype 消息类型与业务类型相关。见“消息类型与业务类型”。消息响应方返回对应请求的消息响应类型。 “msgtype”: “subreq”
签名 sid 对消息头和消息体的数字签名。参考后面算法 “sid”:“0”
保留字段 rsvd 扩展保留字段。消息响应方原值返回。 “rsvd”: “0”
应用标识 appkey 可选。第三方应用的AppKey。AXB业务时必须设置。 “appkey”:“kuaidadi”
消息体 业务消息内容 内容与业务消息类型相关。见后续业务交互中的消息定义。 采用扁平结构方式,取消嵌套结构。

消息类型

序号 消息类型 消息说明 产品类别 交互实体
1 Subreq 订购请求 AX BSS
2 Subrsp 订购响应 AX
3 Unsubreq 退订请求 AX
4 Unsubrsp 退订响应 AX
5 Subqryreq 订购查询 AX
6 Subqryrsp 订购响应 AX
7 Chgprtmsreq 真实号码换号请求 AX
8 Chgprtmsrsp 真实号码换号响应 AX
9 Axbsubreq 订购请求 AXB
10 Axbsubrsp 订购响应 AXB
11 Axbunsubreq 退订请求 AXB
12 Axbunsubrsp 退订响应 AXB
13 axbsubqryreq 订购查询 AXB
14 axbsubqryrsp 订购响应 AXB
15 axbsubupdreq AXB订购更新请求 AXB
16 axbsubupdrsp AXB订购更新请求 AXB
17 vcallreq 在线语音主叫请求 AX SA
18 vcallrsp 在线语音主叫响应 AX
19 smsreq 在线短信主叫请求 AX
20 smsrsp 在线短信主叫响应 AX
21 switchtimereq 用户定时开关机设置请求 AX
22 switchtimersp 用户定时开关机设置响应 AX
23 switchqryreq 用户开关机查询请求 AX
24 switchqryrsp 用户开关机查询响应 AX

3 业务交互阶段

3.1 业务交互(ACBSS接口)

互联网BSS主要处理的互联网业务请求和响应类型如下:

  • 订购
  • 退订
  • 订购关系查询
  • 真实号码换号

IP发送业务消息到AC A1接口。 AC BSS进行内部处理,将结果反馈给IP系统。

消息交互如下:

消息交互传输图

对于一个唯一的订购关系,AC平台采用如下字段来标识:

  • 订购关系标识 AC系统需要确保“订购关系标识”是唯一的。建议可以考虑使用互联网产品订单编号等。
  • 隐私号码为了保持隐私号码的唯一分配关系。AC系统需要尽量保证隐私号码只属于一个“订购关系”。

3.1.1 订购请求和响应

订购请求

消息头 内容 JSON对象名称 说明 举例
版本号 Ver
消息ID Msgid
时间戳 Ts
业务类型 service Acbss
消息类型 msgtype subreq
签名 Sid
应用标识 appkey 第三方应用的AppKey
保留字段 Rsvd
消息体 被保护的真实号码 Prtms
隐私号码 acms AC动态分配或者指定
订购时间 Subts 格式为YYYYMMDDhhmmss。时间采用北京时间,24小时制。 “subts”:“20140728145921”
订购类型 producttype 现阶段支持的类型:
  1. 包年
  2. 包季
  3. 包月
  4. 按次
  5. 体验
“producttype”:“0”
姓名 name 必选 “name”:“张三”
证件类型 cardtype 必选 “cardtype”:“”
身份证号码 cardno 必选 “cardno”:“”

订购响应

消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid    
时间戳 ts    
业务类型 service acbss  
消息类型 msgtype subrsp  
签名 sid  
应用标识 appkey 第三方应用的AppKey。
保留字段 rsvd    
消息体 返回码 result 采用类似http的状态码风格。
  • 成功返回码:
  • 200:成功
  • 其他:

  • 客户端(IP系统)错误:
  • 400:请求报文语法错误
  • 401:认证未通过
  • 403:订购关系不存在
  • 404:绑定数据不一致
  • 其他:

  • 服务端(AC)错误:
  • 501:业务处理超时
  • 502:服务暂时不可用
订购关系标识 subid
隐私号码 acms

3.1.2 退订请求和响应

消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid  
时间戳 ts  
业务类型 service acbss
消息类型 msgtype unsubreq
签名 sid
应用标识 appkey 第三方应用的AppKey。
保留字段 rsvd
消息体 被保护的真实号码 prtms
隐私号码 acms
退订时间 unsubts 格式为YYYYMMDDhhmmss。时间采用北京时间,24小时制。

退订响应

消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid
时间戳 ts
业务类型 service acbss
消息类型 msgtype unsubrsp
签名 sid
应用标识 appkey 第三方应用的AppKey。
保留字段 rsvd
消息体 返回码 result 参见“返回码定义”
订购关系标识 subid

3.1.3 订购查询请求和响应

订购查询请求

消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid
时间戳 ts
业务类型 service acbss
消息类型 msgtype subqryreq
签名 sid
保留字段 rsvd
消息体 订购关系标识 subid 方式一
被保护的真实号码 prtms 方式二
隐私号码 acms

订购查询响应

消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid
时间戳 ts
业务类型 service acbss 
消息类型 msgtype subqryrsp 
签名 sid
保留字段 rsvd
消息体 返回码 result 参见“返回码定义”
订购关系标识 subid
被保护的真实号码 prtms
隐私号码 acms
订购时间 subts
订购产品类型 producttype
姓名 name
证件类型 cardtype
身份证号码 cardno “cardno”:“”

3.1.4 真实号码换号请求和响应

真实号码换号请求

     
消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid
时间戳 ts
业务类型 service acbss
消息类型 msgtype chgprtmsreq
签名 sid  
保留字段 rsvd
消息体 订购关系标识 subid 与订购请求的subid一致,AC返回的sub_id
隐私号码 acms
当前真实号码 oldprtms
新的真实号码 newprtms
换号时间 chgts 格式为YYYYMMDDhhmmss。时间采用北京时间,24小时制。

真实号码换号响应:

             
消息头 内容 JSON对象名称 说明 举例
版本号 ver  
消息ID msgid  
时间戳 ts  
业务类型 service acbss
消息类型 msgtype chgprtmsrsp
签名 sid  
保留字段 rsvd  
消息体 返回码 result 参见“返回码定义”
订购关系标识 subid

3.2业务交互(ACSA接口)

互联网SA主要处理的互联网业务请求和响应类型如下:

    在线语音主叫

IP业务系统发起请求,AC接收后,进行内部处理,响应处理结果,后续启动业务流程。

ACSA业务交互图

3.2.1 在线语音主叫请求和响应

在线语音主叫请求

           
消息头 内容 JSON对象名称 说明 举例
版本号 ver  
消息ID msgid  
时间戳 ts  
业务类型 service acsa
消息类型 msgtype vcallreq
签名 sid  
保留字段 rsvd  
消息体 隐私号码 acms
被叫号码 calledms 被叫号码

在线语音主叫响应

       
消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid
时间戳 ts
业务类型 service acsa
消息类型 msgtype vcallrsp
签名 sid
保留字段 rsvd
消息体 返回码 result 参见“返回码定义”

3.2.2 用户定时开关机设置请求和响应

用户定时开关机设置请求

                 
消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid
时间戳 ts
业务类型 service acsa
消息类型 msgtype switchtimerreq
签名 sid
保留字段 rsvd
消息体 隐私号码 acms
定时关机时间点 closetime 可选。24小时格式表示hhmm如果closetime出现,但是值为空,则表示取消相应设置。即“closetime”:“”表示取消设置。 “closetime”:“14:30”
定时开机时间点 opentime 可选。24小时格式表示hhmm如果opentime出现,但是值为空,则表示取消相应设置。即“opentime”:“”表示取消设置。 “opentime”:“17:30”

用户定时开关机设置响应:

                     
消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid
时间戳 ts
业务类型 service acsa
消息类型 msgtype switchtimerrsp
签名 sid
保留字段 rsvd
消息体 返回码 result 参见“返回码定义”

3.2.3 用户开关机查询请求和响应

用户开关机查询请求:

           
消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid  
时间戳 ts
业务类型 service acsa
消息类型 msgtype switchqryreq
签名 sid
保留字段 rsvd  
消息体 隐私号码 acms

用户开关机查询响应

             
消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid  
时间戳 ts
业务类型 service acsa
消息类型 msgtype switchqryreq
签名 sid
保留字段 rsvd  
消息体 返回码 result 参见“返回码定义”
当前开关机状态 switch 0:开机 1:关机 “switch”: “1”
定时关机时间点 closetime 24小时格式表示hhmm如果closetime出现,但是值为空,则表示无相应设置。即“closetime”:“”表示无定时关机设置。 “closetime”:“14:30”
定时开机时间点 opentime 24小时格式表示hhmm如果opentime出现,但是值为空,则表示无相应设置。即“opentime”:“”表示无定时开机设置。 “opentime”:“17:30”

3.2.4 系统呼叫结束推送(准实时)

推送机制

采用json over http协议

协议:

#协议参数 参数 注释
'v': '1.0', #版本号
'method' : 'add_call_release', #方法
'app_key': 'ac', #调用方appkey
'sign': '0BE1A00DD73A0A3D6037657B7C3C9DF3', #签名
'timestamp': '2016-06-22 14:03:21', #时间戳
#业务参数
'phone_no': '13333300000', #手机号码
'secret_no': '8618788006777', #隐私号码
'call_type':'0', #呼叫类型
'peer_no': '13344400000', #对端号码
'call_id': '0d01000000080000000000000000', #通话唯一标识
'call_time' : '2016-06-22 14:03:20', #通话开始时间
'release_time' : '2016-06-22 14:03:20', #通话结束时间
'release_dir' : '1', #释放方向
'release_cause' : '16', #释放原因
'ringing_time' : '2016-06-22 14:03:20', #振铃开始时间

推送请求:

API名称 method = add_call_release
接入方标识 app_key 标识接入方
呼叫类型 call_type AC业务: 0:DTMF方式通话主叫 1:通话被叫 2:短信发送 3:短信接收 128:PS方式通话主叫
真实号码 phone_no 真实号码为A
隐私号码 secret_no 隐私号码为X
对端号码 peer_no 对端号码为B或者其它填充0
振铃开始时间 ringing_time 格式: yyyy-MM-dd HH:mm:ss
通话开始时间 call_time 格式: yyyy-MM-dd HH:mm:ss
通话结束时间 release_time 格式: yyyy-MM-dd HH:mm:ss
通话标识 call_id 业务参考号
释放方向 release_dir 1表示主叫, 2表示被叫, 0表示平台释放
释放原因 release_cause
000 0001(1) 未分配的号码
000 0010(2) 无路由到指定的转接网
000 0011(3) 无路由到目的地
000 0100(4) 发送专用信息音
001 0000(16) 正常的呼叫拆线
001 0001(17) 用户忙
001 0010(18) 用户未响应
001 0011(19) 用户未应答
001 0100(20) 用户缺席
001 0101(21) 呼叫拒收
001 0110(22) 号码改变
001 1011(27) 目的地不可达
001 1100(28) 无效的号码格式(地址不全)
001 1101(29) 性能拒绝
001 1111(31) 正常—未指定 类别
010,资源不可用类:
010 0010(34) 无电路/通路可用
010 1010(42) 交换设备拥塞 类别
011,业务或任选不可用类:
011 0010(50) 所请求的性能未预定
011 0101(53) CUG中限制去呼叫
011 0111(55) CUG中限制来呼叫
011 1001(57) 承载能力无权
011 1010(58) 承载能力目前不可用
类别100,业务或任选未实现类:
100 0001(65) 承载能力未实现
100 0101(69) 所请求的性能未实现
类别101,无效的消息(例如参数超出范围)类:
101 0111(87) 被叫用户不是CUG的成员
101 1000(88) 不兼容的目的地
101 1010(90) 不存在的CUG
101 1011(91) 无效的转接网选择
101 1111(95) 无效的消息,未指定 类别
110,协议错误(例如未知的消息)类:
110 0001(97) 消息类型不存在或未实现
110 0011(99) 参数不存在或未实现
110 0110(102)定时器终了时恢复
110 0101(103)参数不存在或未实现—传递
110 1110(110)消息带有未被识别的参数 —舍弃
110 1111(111)协议错误,未指定
类别111,互通类:
111 1111(127)互通,未指定类别
1100、1101,平台拒绝类:
1100 1010(202)用户忙,MSRN获取失败,平台挂机
1100 1011(203)用户去活,平台挂机
1100 1100(204)用户在平台侧关机,平台挂机
1100 1101(205)用户未开户,平台挂机
1100 1110(206)小号不允许呼叫,平台挂机
1100 1111(207)主号拨打小号,平台挂机
1101 0001(209)主叫打小号带原始被叫,平台挂机

推送响应:

接收状态 is_success ture:成功, false:失败

错误码:

错误码 错误信息 建议
400 UnSupport Method: method参数有误
403 Erro AppKey appkey错误
403 Error Sign 签名错误
202 具体的Exception 请求接收,处理错误

请求示例:

http://172.27.111.69/msg?v=1.0&method=add_call_release×tamp=2014-08-18 %2016:59:11&app_key=abc&sign=BA9854BED1A2986B061E2713F403C752&phone_no=1860 0000000&secret_no=17000000000&call_type=1&peer_no=13900000000&call_id=1919& ringing_time=2014-08-18%2016:59:10&call_time=2014-08-18%2016:59:11&release_ time=2014-08-18%2016:59:21&release_dir=1&release_cause=17

需要说明一下,接口调用中的appkey和secret都由服务端来分配。

响应示例:

成功:{"response":{"is_success":true}} 失败:{"response":{"is_success":false,"err_code":"400","err_msg":"呼叫类型不 能为空!"}}

3.3业务交互(AXB业务BSS接口)

ACBSS主要处理的AXB业务请求和响应类型如下:

  • 订购
  • 退订
  • 订购关系查询
  • 更新

对于一个唯一的订购关系,AXB业务场景下BSS采用如下字段来标识:

  • 订购关系标识
  • AC系统需要确保“订购关系标识”是唯一的。

  • AXB三元组
  • AXB中的A,X,B形成唯一三元组。

3.3.1 订购请求和响应

订购请求:

                
消息头 内容 JSON对象名称 说明 举例
版本号 Ver
消息ID Msgid
时间戳 Ts
业务类型 service acbss
消息类型 msgtype axbsubreq
签名 Sid
保留字段 Rsvd
应用标识 appkey 第三方应用的AppKey。 AXB业务时必须设置,不能为空。 “appkey”:“GZAXB”
消息体 真实号码 prtms 对应“产品类别”定义的AXB业务(简称AXB业务,以下同)中的号码A 注:以真实号码为主叫,AXB业务中的 A为主叫,X为隐私号码,B为对端号码。以下同。
隐私号码 acms 对应AXB业务中的号码X,动态分配
其他号码 otherms AXB业务时可设置。对应AXB业务中的号码B。AC小号场景不支持设置。 “otherms”:“8613005711234”
订购时间 subts 格式为YYYYMMDDhhmmss。时间采用北京时间,24小时制。 “subts” :“20140728145921”
退订时间 unsubts 格式为YYYYMMDDhhmmss。时间采用北京时间,24小时制 .这个时间大于订购时间,如果时间到达则执行退订。可选 “unsubts” :“20140728145921”
自动退订方式 unsubmethod 可选 0:振铃退订 1:挂机退订 如果退订时间不为空,则根据退订时间退订的优先级最高。 “unsubmethod”:“1”
订购类型 producttype 现阶段支持的类型: 0:包年 1:包季 2:包月 3:按次 4:体验 “producttype”:“0”
产品类别 productcat 本字段在AXB业务中必须设置。 0: 保留。实际分配给AX(AC小号) 11:AXB 12: 语音验证业务 13:AXYB业务的XYB “productcat”:“11”
录音控制 callrecording 可选。是否开通录音功能。在本字段不出现的情况下,默认0(不开通录音功能)。 0:不开通录音功能 1:开通录音功能 “callrecording”:“0”
姓名 Name 必选 “name”:“张三”
证件类型 cardtype 必选 “cardtype”:“”
身份证号码 cardno 必选 “cardno”:“”

订购响应:

                     
消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid
时间戳 ts
业务类型 service acbss
消息类型 msgtype axbsubrsp
签名 sid
保留字段 rsvd
应用标识 appkey 第三方应用的AppKey。可以为空,或者不出现。
消息体 返回码 result 采用类似http的状态码风格。 参考3.2  
订购关系标识 subid
隐私号码 acms

3.3.2 退订请求和响应

退订请求

                          
消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid
时间戳 ts
业务类型 service Acbss
消息类型 msgtype Axbunsubreq
签名 sid
保留字段 rsvd
应用标识 appkey 第三方应用的AppKey。可以为空,或者不出现。
消息体 订购关系标识 subid
真实号码 prtms 对应AXB业务中的号码A
隐私号码 acms 对应AXB业务中的号码X
其他号码 otherms AXB业务时必须设置。对应AXB业务中的号码B
产品类别 productcat AXB业务时必须设置。11:AXB12: 语音验证业务13:AXYB业务的XYB
退订时间 unsubts 格式为YYYYMMDDhhmmss。时间采用北京时间,24小时制。

退订响应:

                        
消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid
时间戳 ts
业务类型 service acbss
消息类型 msgtype axbunsubrsp
签名 sid
保留字段 rsvd
应用标识 appkey 第三方应用的appKey。可以为空,或者不出现。
消息体 返回码 result 参见3.2“返回码定义”
订购关系标识 subid

3.3.3 订购查询请求和响应

订购查询请求

                       
消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid
时间戳 ts
业务类型 service acbss
消息类型 msgtype axbsubqryreq
签名 sid
保留字段 rsvd
应用标识 appkey 第三方应用的AppKey。可以为空,或者不出现。
消息体 订购关系标识 subid 方式一
被保护的真实号码 prtms 方式二 注:otherms在AXB业务时可设置。对应AXB业务中的号码B。
隐私号码 acms
其他号码 otherms

订购查询响应

                             
消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid
时间戳 ts
业务类型 service acbss
消息类型 msgtype axbsubqryrsp
签名 sid
保留字段 rsvd
应用标识 appkey 第三方应用的AppKey。可以为空,或者不出现。
消息体 返回码 result 参见.3.2“返回码定义”
订购关系标识 subid
被保护的真实号码 prtms
隐私号码 acms
其他号码 otherms
订购时间 subts
订购产品类型 producttype
产品类别 productcat
录音控制 callrecording 可选。是否开通录音功能。在本字段不出现的情况下,

默认0(不开通录音功能)。

0:不开通录音功能

1:开通录音功能

“callrecording”:“0”
姓名 name
证件类型 cardtype
身份证号码 cardno “cardno”:“”

3.3.4 订购更新请求和响应

订购更新请求

                   
消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid
时间戳 ts
业务类型 service Acbss
消息类型 msgtype Axbsubupdreq
签名 sid
保留字段 rsvd
应用标识 appkey 第三方应用的AppKey。AXB业务时必须设置,不能为空。 “appkey”:“kuaidadi”
消息体 订购关系标识 subid 订购更新针对的现有订购关系的标识。必须与现有订购关系的内容一致。
真实号码 prtms 订购更新针对的现有订购关系的A号码。必须与现有订购关系的内容一致。
隐私号码 acms 订购更新针对的现有订购关系的X号码。必须与现有订购关系的内容一致。
其他号码 otherms 变更后的新号码B。 “otherms”:“8613005711234”
更新时间 subts 格式为YYYYMMDDhhmmss。时间采用北京时间,24小时制。 “subts”:“20140728145921”
产品类别 productcat 本字段在AXB业务中必须设置为11。AX业务不支持。0:保留。实际分配给AX(AC小号)11:AXB “productcat” :“11”

订购更新响应

                   
消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid
时间戳 ts
业务类型 service Acbss
消息类型 msgtype Axbsubupdreq
签名 sid
保留字段 rsvd
应用标识 appkey 第三方应用的AppKey。可以为空,或者不出现。
消息体 返回码 result 采用类似http的状态码风格。参考返回码定义。
订购关系标识 subid

3.3.5 外呼AXB转接配置设置请求和响应

外呼AXB转接配置设置请求

               
消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid
时间戳 ts
业务类型 service Acbss
消息类型 msgtype Axbsubupdreq
签名 sid
保留字段 rsvd
应用标识 appkey 第三方应用的AppKey。可以为空,或者不出现。
消息体 隐私号码 acms X号码
转接号码 transferms 转接号码
转接号码设置放音编码 transfervoicecode 设置转接号码的放音编码

外呼AXB转接配置设置响应

 
消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid
时间戳 ts
业务类型 service Acbss
消息类型 msgtype outaxbtransfersetrsp
签名 sid
保留字段 rsvd
应用标识 appkey 第三方应用的AppKey。可以为空,或者不出现。
消息体 返回码 result 参见3.2“返回码定义”

3.3.6 外呼AXB转接配置删除请求和响应

外呼AXB转接配置删除请求

消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid
时间戳 ts
业务类型 service Acbss
消息类型 msgtype outaxbtransfersetrsp
签名 sid
保留字段 rsvd
应用标识 appkey 第三方应用的AppKey。可以为空,或者不出现。
消息体 隐私号码 acms X号码

外呼AXB转接配置删除响应

消息头 内容 JSON对象名称 说明 举例
版本号 ver
消息ID msgid
时间戳 ts
业务类型 service Acbss
消息类型 msgtype outaxbtransfersetrsp
签名 sid
保留字段 rsvd
应用标识 appkey 第三方应用的AppKey。可以为空,或者不出现。
消息体 返回码 result 参见3.2“返回码定义”

4. 返回码定义

IP系统应该检查响应消息中的“返回码”。如果结果不是成功,则IP系统需要针对不同返回码进行处理。

2XX 成功类返回码

返回码 描述 定义
200 成功 请求报文成功被处理
其他 待定义

4XX 客户端错误类返回码

返回码 描述 定义
400 请求报文语法错误 请求报文所携带的字段,不符合接口定义。比如producttype的值不在定义范围内。AC系统需要检查字段的有效取值。
401 认证未通过 请求的来源或者请求的签名未通过校验。
402 隐私号码已经使用 请求中要求绑定的隐私号码已经被分配给其他用户。
403 订购关系不存在 系统提交的请求中提供的“订购关系标识”,在互联网系统中不存在。
404 绑定数据不一致 请求中提供的“订购关系标识”在AC系统中查询获得的“真实号码”和“隐私号码”绑定关系,与请求中提供的“真实号码”与“隐私号码”不一致。
429 请求过多 AC系统在一定时间内提交了过多的请求。AC系统在访问某些特定服务接口时,可能会出现该错误。
其他 待定义

5XX 服务端错误类返回码

返回码 描述 定义
501 业务处理超时 互联网系统内部处理引起的超时。AC系统可以尝试重新提交请求。
502 服务暂时不可用 互联网系统当前不可用,可能是因为系统负载过重,或者暂时停机。
503 服务接口被禁止 互联网系统已经关闭相关服务。后续对于该服务的请求是被禁止的。
其他 待定义

5. 附:签名算法

5.1 JAVA

java代码示例图

5.2 PHP

                           public static function sign($params)
                                    {
                                        unset($params['sid']);
                                        unset($params['sign']);
                                        //按照key进行排序
                                        ksort($params);

                                        $signParams = [];
                                        foreach ($params as $key => $val) {
                                            $signParams[] = $key . $val;
                                        }
                                        $signParams = self::APP_SECRET . implode('', $signParams);
                                        $sign = strtoupper(md5($signParams));
                                        return $sign;
                                    } 
                       

使用说明

本文档提供了USSD(彩印)平台业务相关的API,提供接口的相关说明,以指导相关人员进行业务接入。

号外号USSD平台我们简称HUP(Haowaihao USSD Platform)平台,前端客户我们简称CP(Customer Platform)

1.接口简介

1.1.协议说明

接口采用HTTP协议,发送响应的数据格式采用JSON格式。

1.2.USSD通信模型

USSD通信模型图

1.3.安全认证

采用数字签名模式进行报文传输

生成数字签名算法如下:

  1. Ts参数使用utc标准时间, ISO8601格式.
  2. 请求报文各字段以参数名首字母为序(a-z)排列,参数名参数值以等号=连接,不同参数以逗号,连接。
  3. 使用分配的appsecret追加到上面字段的尾部
  4. sign参数本身不参与签名
  5. sign参数本身不参与签名
  6. 使用base64算法转换签名

说明:

  1. 全部使用utf8编码解码
  2. Nonce为随机字符串,长度无限制

    实例:

                            msg = 
                                { 'appkey': 'appkey',
                                'ts': '1471857427',
                                'ms': '13810326774', 
                                'tid': '1',
                                'nonce': '?c3^4#5UT~s_HQ>eCzpU',
                                'sign':'',
                                'argv': ['号外号','中秋节']
                                }
                        

参与数字签名的字符串为,(appkey=appkey, appsecret=appid):data:appkey=appkey,argv=['号外号','中秋节'],ms=13810326774,nonce=C>}I#_^TraMabWX%_8Nt,tid=1,ts=1471857427appid

生成包含签名的最终报文如下:

                            {'nonce': 'C>}I#_^TraMabWX%_8Nt', 
                                'ts': 1471857427, 
                                'ms': '13810326774', 
                                'appkey': 'appkey', 
                                'argv': ['号外号', '中秋节'], 
                                'tid': '1', 
                                'sign': 'ZMd3hXIG+DBV0siBqHE9VGDyShyGFeyY6bWCVlmCbbg='
                                }
                        

注:appkey 和appsecret 是由号外号USSD平台统一分配的。

1.4.HTTP请求方式

post方式

1.5.HTTP头

                            Accept :application/json;charset=UTF-8
                            Content-Type:application/json;charset=UTF-8
                        

1.6.状态码

响应码 描述 说明
00000000 Success 成功
10000001 System Error 系统错误
20000001 URI is Unknown URI错误
20000002 There is no appkey 无APPKEY
20000003 APP not allow to use this api APP无权调用此API
20000004 API resource not enough API资源不足
20000005 apiname is nil APINAME为空
30001001 Argument Error: invalid src src参数不合法
30001002 Argument Error: invalid dst dst参数不合法
30001003 Argument Error: invalid template template参数不合法
30001004 Argument Error: invalid argv argv参数不合法
30001005 Argument Error: include sensitiveword 存在敏感词
30001006 Argument Error: invalid batchmsg batchmsg参数不合法
30001007 Argument Error: batchmsg exceed the limit batchmsg消息个数超过限制
30002001 Server Error: cy server timeout 彩印服务器响应超时
30002002 Server Error: cy server return err 彩印服务器返回错误
30002003 Server Error: cy server response body is nil 彩印服务器响应体为空
30002004 Server Error: cy server response body is not json 彩印服务器响应体不合法
30002005 Server Error: cy server response status error 彩印服务器响应体状态错误

2.单条USSD投递

2.1 URL

https://host:port/ussd/single

host和port由HUP平台提供

2.2 请求参数

字段值 字段类型 说明
appkey string 第三方应用ID
ts string 时间戳(从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数,精确到秒,与标准时间偏差5分钟之内)
sign string 服务器签名(详见安全认证)
ms string 手机号码,目前支持中国移动和中国联通的手机号码
tid string 模板编号,用户在服务端设置的模板,需要审核通过以后才能使用
argv array [string] 模板中需要填充的参数

举例:

                            msg = 
                                { 'appkey': 'appkey',
                                'ts': '1471857427',
                                'ms': '13810326774', 
                                'tid': '1',
                                'nonce': '?c3^4#5UT~s_HQ>eCzpU',
                                'sign':'',
                                'argv': ['号外号','中秋节']
                                }
                        

2.3.响应参数

字段值 字段类型 说明
code string 返回码(详见响应码)
ds string 描述信息(详见响应码)
msgid string 为消息生成的唯一ID
ms string 目标号码,与请求中的ms一致

举例:

                            {
                            "code": "00000000",
                            "ds": "Success",
                            "msgid": "1458540307123456",
                            "ms": "13810326774"
                            }
                        

2.4.注意事项

模板:

模板中必须携带公司名称,其在模板中的位置不限。

编号 内容(#*#部分为参数替换处) 可变参数个数
1 【支付宝】你的支付宝发生#*#元的交易,校验码:#*#打死都不能告诉别人哦!唯一热线95188 2

3.USSD投递状态通知

3.1.URL

https://userhost:userport/ussd/status

注:userhost和userport由客户提供,如果未提供,不触发本过程

3.2.推送参数

字段值 字段类型 说明
appkey string 第三方应用ID
ts string 时间戳(2.2)
sign string 服务器签名(安全认证)
msgid string 为消息生成的唯一任务ID
code string 投递状态码(详见1.6)
ds string 描述信息(详见1.6)
                            {
                            "appkey": "appkey",
                            "ts": "1408103878424" , 
                            "sign":"7eba379599053ee5" ,
                            "msgid": "1458540307123456",
                            "code": "00000000",
                            "ds: "Success"
                            }
                        

3.3.响应参数

字段值 字段类型 说明
code string 返回码(详见响应码),总返回码
ds string 描述信息(详见响应码)

举例

                            {
                            "code": "00000000",
                            "ds": "Success"
                            }
                        

使用说明

本文档提供了USSD平台群发业务相关的API,提供接口的相关说明,以指导相关人员进行业务接入。

号外号USSD平台我们简称HUP(Haowaihao USSD Platform)平台,前端客户我们简称CP(Customer Platform)

1.接口简介

1.1.协议说明

接口采用HTTP协议,发送响应的数据格式采用JSON格式。

1.2.USSD通信模型

USSD通信模型图

说明:

  • 正常情况下,子批次完成后会通过“子批次投递结果通知”告知管理平台。
  • 在异常情况下,“子批次投递结果通知”未能送达管理平台,需先通过“查询已完成子批次”接口,确认已完成的批次,再通过“查询子批次投递结果”(只提供已完成子批次查询)接口获取详细信息下载地址。
  • 在异常情况下,“投递结束通知”未能送达管理平台,可通过“查询批量群发任务”接口确认任务完成情况。
  • “查询已完成子批次”、“查询批量群发任务”、“查询子批次投递结果”查询接口在任务开始至任务完成后一定期限内有效。

2. 创建批量群发任务

2.1.URL

https://host:port/ussd/batch_task

host和port由HUP平台提供

2.2.HTTP请求方式

POST

2.3.HTTP头

Accept :application/json;charset=UTF-8 Content-Type:application/json;charset=UTF-8 Authorization: USSDAUTH appkey="350000100020003", timestamp="1408103878424", signature="7eba379599053ee5"appkey第三方应用ID(批量请求消息发起方);timestamp时间戳(详见请求签名);signature服务器签名(详见授权说明)

2.4.请求参数

字段值 字段类型 必选 说明
appkey string M 第三方应用ID
cid string M 回填企业开户分配的企业标识
cappkey string M 回填企业开户分配的appkey
tid string M 模板编号,模板必须为群发专用模板,审核通过之后,才能使用
argv array [string] M 模板中需要填充的参数,参数内容为UTF-8编码
tn string M 投递号码总数

举例:

                            {
                                "appkey": "350000100020003",
                                "cid": "2222ca5f003645a4af9517fd098b23191",
                                "tid": "1",
                                "argv": [
                                                "号外号",
                                                "中秋节"
                                        ]
                                "tn":"2000000"
                            }
                        

2.5.响应参数

字段值 字段类型 必选 说明
code string M 返回码(详见响应码),
ds string M 描述信息(详见响应码)
taskid string M 服务端为此次任务生成的唯一任务ID

举例:

                            {
                            "code": "00000000",
                            "ds": "Success",
                            "taskid": "1458540307123456"
                            }
                        

3.上传群发号码

3.1.URL

https://host:port/ussd/batch_number?taskid=XXX

host和port由HUP平台提供

3.2.HTTP请求方式

POST

3.3. HTTP Headers

Accept :application/json;charset=UTF-8
                            Content-Type:application/json;charset=UTF-8
                            Content-Encoding:gzip
                            Authorization: USSDAUTH appkey="350000100020003", 
                            timestamp="1408103878424", signature="7eba379599053ee5"
                        

appkey第三方应用ID(批量请求消息发起方);timestamp时间戳(详见请求签名);signature服务器签名(详见授权说明)

3.4.推送参数

字段值 字段类型 说明
appkey string 第三方应用ID
ts string 时间戳(2.2)
sign string 服务器签名(安全认证)
msgid string 为消息生成的唯一任务ID
code string 投递状态码(详见1.6)
ds string 描述信息(详见1.6)
                            {
                                "appkey": "appkey",
                                "ts": "1408103878424" , 
                                "sign":"7eba379599053ee5" ,
                                "msgid": "1458540307123456",
                                "code": "00000000",
                                "ds: "Success"
                            }
                        

3.5.响应参数

字段值 字段类型 说明
code string 返回码(详见响应码),总返回码
ds string 描述信息(详见响应码)

举例:

                        {
                        "code": "00000000",
                        "ds": "Success"
                        }

使用说明

本文档提供了短信平台业务相关的API,提供接口的相关说明,以指导相关人员进行业务接入。

号外号短信平台我们简称SMP(Short Message Platform)平台,前端客户我们简称CP(Customer Platform)。

1.接口简介

1.1.协议说明

接口采用HTTP协议,发送响应的数据格式采用JSON格式。

1.2.通信模型

通信模型图

1.3.安全认证

采用数字签名模式进行报文传输

生成数字签名算法如下:

  1. Ts参数使用utc标准时间, ISO8601格式.
  2. 请求报文各字段以参数名首字母为序(a-z)排列,参数名参数值以等号=连接,不同参数以逗号,连接。
  3. 使用分配的appsecret追加到上面字段的尾部
  4. sign参数本身不参与签名
  5. 使用SHA256算法生成签名
  6. 使用base64算法转换签名

说明:

  1. 全部使用utf8编码解码
  2. Nonce为随机字符串,长度无限制

实例:

                            msg = { 
                                    'ms': '8613000110022', 
                                    'appkey': 'appkey', 
                                    'nonce': '?c3^4#5UT~s_HQ>eCzpU',
                                    'vp': '900',
                                    'ts': '2016-07-15T02:09:00.164515+00:00'
                                  }
                        

参与数字签名的字符串为, (appkey=appkey,appsecret=appid):appkey=appkey,ms=8613000110022,nonce=?c3^4#5UT~s_HQeCzpU, ts=2016-07-15T02:09:00.164515+00:00,vp=900appid

生成包含签名的最终报文如下:

                            {
                                'sign': 'XFVI/aLjuWrFNxEENdPdoFeWipwgFBnz7TAu29yNEsA=',
                                'ms': '8613000110022', 
                                'appkey': 'appkey', 
                                'nonce': '?c3^4#5UT~s_HQ>eCzpU',
                                'vp': '900', 
                                'ts': '2016-07-15T02:09:00.164515+00:00'
                            }
                        

注:appkey 和appsecret 是由号外号短信平台统一分配的。

1.4.HTTP 状态码

POST 方法

  • 200 OK:成功。
  • 通用状态码:
  • 500 SERVER ERROR:服务器内部错误。
  • 471: 无此appkey
  • 472: 缺少必要的键(字段)
  • 473: 数字签名校验失败
  • 474: 短信剩余条数不足
  • 475: 校验码超出有效期
  • 476: 校验码错误
  • 477: 消息格式错误
  • 478: 短信发送失败
  • 479: 推送信息失败

2.获取短信验证码接口

2.1.接口功能

当CP平台用户发送验证请求时,SMSP后台会向CP平台请求指定的手机号发送一个短信验证码,同时返回给CP平台一个短信验证码的id。

2.2.请求方法

请设置成”POST”

2.3.Url

http://{serverroot}/gsms

2.4.请求消息

请求消息体中的参数(约定全部为小写字母)说明如下表所示。

表1-1请求消息体参数说明

json键名 内容 最大长度 可选 说明
appkey 应用标识 8 必须 应用商户的接入”appkey”:”jsyh”
tid 模板id 16 必须 模板id ”tid”:”1073001”
ms 手机号 15 必须 接收用户号码,号码格式遵循国际电信联盟定义的E.164 标准。即含国家码的手机号,例如:”ms”:”8613000110022”
ts 发送消息的时间戳 32 短信验证码发送事件发生的时间戳,“ts”:“ 20160713114223039684”
vp 短信验证码有效周期 32 验证码有效期,在有效期内验证码有效,否则无效,用户重新发送请求验证码,单位秒。”vp”:”900”,默认60
sign 签名 64 必须 参考1.3

注意:ms手机号目前只支持86中国手机号码

请求消息示例如下:

                            {
                                "appkey":"jsyh",
                                "tid":"1073001", 
                                "ms":"8613000110022",
                                "ts":"20160713101356320",
                                "vp":"900",
                                "sign":"1D731A07A180EC56C66451706FBE4AFF"
                            }
                        

2.4.1.响应消息

表1-2响应消息参数说明

json键名 内容 最大长度 说明
vid 验证码ID,可选 16 短信验证码id,用于校验
msg String 128 返回结果的详细描述信息
msgid string 26 消息id

响应消息示例:

                            {
                                "vid": "1", 
                                "msg": "success",
                                "msgid":"16080512365800001521667374"
                            }
                        

3. 校验短信验证码接口

3.1.功能

当CP平台用户发送验证请求时,SMSP后台会向CP平台请求指定的手机号发送一个短信验证码,同时返回给CP平台一个短信验证码的id。CP平台使用此id校验CP平台用户的校验码是否正确。

3.2. 请求方法

请设置成“POST”。

3.3. Url

http://{serverroot}/vsms

3.4. 请求消息

请求消息体中的参数(约定全部为小写字母)说明如下表所示。

json键名 内容 最大长度 可选 说明
appkey 应用标识 8 必须 应用商户的接入”appkey”:”jsyh”
ms 手机号 15 必须 接收用户号码,号码格式遵循国际电信联盟定义的E.164标准。即含国家码的手机号,例如:”ms”:”8613000110022”
ts 发送消息的时间戳 20 短信验证码发送事件发生的时间戳,“ts”:“ 20160713114223039684”
vid smsp平台生成的短信验证码id 16 必须 和2.3.2中的保持一致
vcode 短信校验码 6 必须 用户输入的短信校验码
sign 签名 32 必须 参考1.3
nonce 随机字符串 64

例子:

                            {
                                "appkey": "jsyh",
                                "vid": "91", 
                                "vcode": "123456", 
                                "ms": "8613000110022", 
                                "sign": "C614B63D1B85FBC7C2A235183FD1D4C0", 
                                "ts": "20160713101356320"
                            }
                        

3.4.1.响应消息

json键名 内容 最大长度 说明
msg String 128 返回结果的详细描述信息

例子:

                            {
                            "msg": "success"
                            }
                        

4.普通短信

4.1.功能

CP平台通过SMSP平台给用户发送短信。

4.2.请求方法

请设置成“POST”。

4.3.Url

http://{serverroot}/csms

4.4.请求消息

请求消息体中的参数(约定全部为小写字母)说明如下表所示

4.5.请求消息

json键名 内容 最大长度 可选 说明
appkey 应用标识 8 必须 应用商户的接入”appkey”:”jsyh”
tid 模板id 16 必须 模板id ”tid”:”1073001”
ms 手机号 15 必须 接收用户号码,号码格式遵循国际电信联盟定义的E.164标准。即含国家码的手机号,例如:”ms”:”8613000110022”
ts 发送消息的时间戳 20 短信验证码发送事件发生的时间戳,“ts”:“ 20160713114223039684”
ct 短信内容 1024 必须 用户短信内容
sign 签名 32 必须 参考1.3

例子:

                            {
                                "appkey": "jsyh", 
                                ”tid”:”1073001”,
                                "ct": "91", 
                                "ms": "8613000110022", 
                                "sign": "7F33603C22C6DE56BF671C925918DCE8",
                                "ts": "20160713101356320"
                            }
                        

4.6.响应消息

json键名 内容 最大长度 说明
msg String 128 返回结果的详细描述信息
msgid string 26 消息id

例子:

                            {
                            "msg": "success", 
                            "msgid": "16080512365800001521667374"
                            }
                        

5.查询余额接口

5.1.接口功能

CP平台用户查询余额,返回给CP平台一个剩余可用的短信条数。

5.2.请求方法

请设置成”GET”

5.3.Url

http://{serverroot}/qsms

5.4.请求消息

请求消息体中的参数(约定全部为小写字母)说明如下表所示。

json键名 内容 最大长度 可选 说明
appkey 应用标识 8 必须 应用商户的接入”appkey”:”jsyh”
nonce 随机字符串 无限制 可选
ts 发送消息的时间戳 32 短信验证码发送事件发生的时间戳,“ts”:“ 20160713114223039684”
sign 签名 64 必须 参考1.3

注意:ms手机号目前只支持86中国手机号码

请求消息示例如下:

                            {
                                "appkey":"jsyh",
                                "ts":"20160713101356320",
                                "nonce":"900",
                                "sign":"1D731A07A180EC56C66451706FBE4AFF"
                            }
                        

5.5.响应消息

json键名 内容 最大长度 说明
balance int 剩余可用的短信条数
msg String 128 返回结果的详细描述信息

响应消息示例:

                            {
                            "balance": 198989, 
                            "msg": "success"
                            }
                        

6. 短信状态report

6.1.接口功能

状态报告推送需要第三方客户提供一个HTTP的接收地址,短信平台为发送方,客户为接收方。

6.2.请求方法

请设置成”POST”

6.3.Url

第三方url:http://ip:port/接口名

6.4.推送消息

推送消息体中的参数(约定全部为小写字母)说明如下表所示。

json键名 内容 最大长度 可选 说明
msgid 消息id 26 必须
ms 接收短信的手机号码 13 必须 加86
status 短消息的执行状态 1 必须 字符串 0:发送成功 1:等待发送 2:发送失败

6.5.推送响应

推送响应参数(约定全部为小写字母)说明如下表所示。

json键名 内容 最大长度 可选 说明
msgid 消息id 26 必须
status 短消息的执行状态 1 必须 字符串 0:接收成功 1:接收失败

7.短信状态查询

7.1.接口功能

通过手机号码(ms)和消息ID(msgid),可以查询短信的发送结果(status).

7.2. 请求方法

请设置成”get”.

7.3.Url

http ://{serverroot}/qsms

7.4.请求消息

请求消息体中的参数(约定全部为小写字母)说明如下表所示。

json键名 内容 最大长度 可选 说明
appkey 应用标识 8 必须 应用商户的接入”appkey”:”jsyh”
nonce 随机字符串 无限制 可选
msgid 消息id 26 必须
ms 接收短信的手机号码 13 必须 加86
ts 发送消息的时间戳 32 短信验证码发送事件发生的时间戳,“ts”:“ 20160713114223039684”
sign 签名 64 必须 参考1.3

请求消息示例:

                            {
                                'ms': '13810326774', 
                                'appkey': 'hwh', 
                                'nonce': 'Ck?VPQUA6S2OK*1B<>@(', 
                                'ts': '2016-08-09T07:14:16.325566+00:00', 
                                'msgid': '16080914251200001557305643', 
                                'sign': 'gxpbsBh0SoYIn/8ju9lm+3srO13iBg7Sodg6bg0/CbU='
                            }
                        

7.5.响应消息

json键名 内容 最大长度 说明 status 短信发送状态 1 "1":成功 "2":失败 "3":无效请求

响应消息示例:

                            {
                                "status":"1" 
                            }
                        

8.短信Deliver推送

8.1.接口功能

此接口用于向代理商通道号发送一条用户的上行请求。

8.2.请求方法

请设置成“post”

8.3.Url

http ://ip:port/deliver 需要代理商提供

8.4.推送deliver短信消息

请求消息体中的参数(约定全部为小写字母)说明如下表所示。

json键名 内容 最大长度 可选 说明
ms 发送短消息的手机号 15 必须 接收用户号码,号码格式遵循国际电信联盟定义的E.164标准。即含国家码的手机号,例如:”ms”:”8613000110022”
spnum sp接入号 20 “Spnum”:”10690001073”
ct 短信内容 6 必须 用户短信内容

注意:ms手机号目前只支持86中国手机号码

推送息示例如下:

                            {
                                "ms":"8613194072190",
                                "spnum":"10073",
                                "ct":"测试测试"
                            }
                        

8.5.推送deliver响应

推送响应参数(约定全部为小写字母)说明如下表所示。

json键名 内容 最大长度 可选 说明
msgid 消息id 26 必须 代理商自己生成
status 短消息的执行状态 1 必须 字符串0:接收成功 1:接收失败

响应消息实例如下:

                            {
                            "msgid":"10006112161802260016888276",
                            "status":"0"
                            }
                        

9.附录

9.1.发送短信java示例

                        private String getPostData(String mobile, String content, String tid) {
                            StringBuffer sb = new StringBuffer();
                            sb.append("appkey").append("=").append(appkey).append(",");
                            sb.append("ct").append("=").append(content).append(",");// 短信内容
                            sb.append("ms").append("=").append(mobile).append(",");// 手机号,含国家码
                            sb.append("tid").append("=").append(tid);
                    //      sb.append("ts").append("=").append(System.currentTimeMillis()).append(",");
                            sb.append(appsecret);
                            byte[] byteArray = Base64.encodeBase64(DigestUtils.sha256(sb.toString()));
                            String sign = new String(byteArray, Charsets.UTF_8);
                            JSONObject jo = new JSONObject();
                            jo.put("appkey", appkey);
                            jo.put("ct", content);
                            jo.put("tid", tid);
                            jo.put("ms", mobile);
                            jo.put("sign", sign);
                            return jo.toJSONString();
                        }
                        

使用说明

本文档提供了短信平台业务相关的API,提供接口的相关说明,以指导相关人员进行业务接入。

号外号短信平台我们简称SMP(Short Message Platform)平台,前端客户我们简称CP(Customer Platform)。

1.接口简介

1.1.协议说明

接口采用HTTP协议,发送响应的数据格式采用JSON格式。

1.2.通信模型

短信接口说明-通信模型图

1.3 安全认证

采用数字签名模式进行报文传输

生成数字签名算法如下:

  1. Ts参数使用utc标准时间, ISO8601格式.
  2. 请求报文各字段以参数名首字母为序(a-z)排列,参数名参数值以等号=连接,不同参数以逗号,连接。
  3. 使用分配的appsecret追加到上面字段的尾部
  4. sign参数本身不参与签名
  5. 使用SHA256算法生成签名
  6. 使用base64算法转换签名

说明:

  1. 全部使用utf8编码解码
  2. Nonce为随机字符串,长度无限制

实例:

                            msg = { 
                                    'ms': '8613000110022', 
                                    'appkey': 'appkey', 
                                    'nonce': '?c3^4#5UT~s_HQ>eCzpU',
                                    'vp': '900',
                                    'ts': '2016-07-15T02:09:00.164515+00:00'
                                 }
                        

参与数字签名的字符串为, (appkey=appkey, appsecret=appid):appkey=appkey,ms=8613000110022, nonce=?c3^4#5UT~s_HQeCzpU,ts=2016-07-15T02:09:00.164515+00:00,vp=900appid

生成包含签名的最终报文如下:

                            {
                                'sign': 'XFVI/aLjuWrFNxEENdPdoFeWipwgFBnz7TAu29yNEsA=',
                                'ms': '8613000110022', 
                                'appkey': 'appkey', 
                                'nonce': '?c3^4#5UT~s_HQ>eCzpU',
                                'vp': '900', 
                                'ts': '2016-07-15T02:09:00.164515+00:00'
                            }
                        

注:appkey 和appsecret 是由号外号短信平台统一分配的。

1.4. HTTP 状态码

POST 方法

  1. 200 OK:成功。
  2. 通用状态码
  3. 500 SERVER ERROR:服务器内部错误。
  4. 471: 无此appkey
  5. 472: 缺少必要的键(字段)
  6. 473: 数字签名校验失败
  7. 474: 短信剩余条数不足
  8. 475: 校验码超出有效期
  9. 476: 校验码错误
  10. 477: 消息格式错误
  11. 478: 短信发送失败
  12. 479: 推送信息失败

2.获取短信验证码接口

2.1.接口功能

当CP平台用户发送验证请求时,SMSP后台会向CP平台请求指定的手机号发送一个短信验证码,同时返回给CP平台一个短信验证码的id。

2.2.请求方法

请设置成”POST”

2.3.Url

http://{serverroot}/gsms

2.4.请求消息

请求消息体中的参数(约定全部为小写字母)说明如下表所示。

表1-1请求消息体参数说明

json键名 内容 最大长度 可选 说明
appkey 应用标识 8 必须 应用商户的接入”appkey”:”jsyh”
tid 模板id 16 必须 模板id ”tid”:”1073001”
ms 手机号 15 必须 接收用户号码,号码格式遵循国际电信联盟定义的E.164标准。即含国家码的手机号,例如:”ms”:”8613000110022”
ts 发送消息的时间戳 32 短信验证码发送事件发生的时间戳,“ts”:“ 20160713114223039684”
vp 短信验证码有效周期 32 验证码有效期,在有效期内验证码有效,否则无效,用户重新发送请求验证码,单位秒。”vp”:”900”,默认60
sign 签名 64 必须 参考1.3

注意:ms手机号目前只支持86中国手机号码

请求消息示例如下:

                            {
                                "appkey":"jsyh",
                                "tid": "1073001", 
                                "ms":"8613000110022",
                                "ts":"20160713101356320",
                                "vp":"900",
                                "sign":"1D731A07A180EC56C66451706FBE4AFF"
                            }
                        

2.4.1.响应消息

表1-2响应消息参数说明

json键名 内容 最大长度 说明
vid 验证码ID,可选 16 短信验证码id,用于校验
msg String 128 返回结果的详细描述信息
msgid string 26 消息id

响应消息示例:

                            {
                            "vid": "1", 
                            "msg": "success",
                            "msgid":"16080512365800001521667374"
                            }
                        

3.校验短信验证码接口

3.1.功能

当CP平台用户发送验证请求时,SMSP后台会向CP平台请求指定的手机号发送一个短信验证码,同时返回给CP平台一个短信验证码的id。CP平台使用此id校验CP平台用户的校验码是否正确。

3.2.请求方法

请设置成“POST”。

3.3.Url

http://{serverroot}/vsms

3.4.请求消息

请求消息体中的参数(约定全部为小写字母)说明如下表所示。

json键名 内容 最大长度 可选 说明
appkey 应用标识 8 必须 应用商户的接入”appkey”:”jsyh”
ms 手机号 15 必须 接收用户号码,号码格式遵循国际电信联盟定义的E.164 标准。即含国家码的手机号,例如:”ms”:”8613000110022”
ts 发送消息的时间戳 20 短信验证码发送事件发生的时间戳,“ts”:“ 20160713114223039684”
vid smsp平台生成的短信验证码id 16 必须 和2.3.2中的保持一致
vcode 短信校验码 6 必须 用户输入的短信校验码
sign 签名 32 必须 参考1.3
nonce 随机字符串 64

例子:

                            {
                                "appkey": "jsyh",
                                "vid": "91", 
                                "vcode": "123456", 
                                "ms": "8613000110022", 
                                "sign": "C614B63D1B85FBC7C2A235183FD1D4C0", 
                                "ts": "20160713101356320"
                            }
                        

3.4.1.响应消息

json键名 内容 最大长度 说明
msg String 128 返回结果的详细描述信息

例子:

                            {
                            "msg": "success"
                            }
                        

4.普通短信

4.1.功能

CP平台通过SMSP平台给用户发送短信。

4.2.请求方法

请设置成“POST”。

4.3.Url

http: //{serverroot}/csms

4.4.请求消息

请求消息体中的参数(约定全部为小写字母)说明如下表所示

4.5.请求消息

必须
json键名 内容 最大长度 可选 说明
appkey 应用标识 8 必须 应用商户的接入”appkey” :”jsyh”
tid 模板id 16 必须 模板id ”tid”:”1073001”
ms 手机号 15 必须 接收用户号码,号码格式遵循国际电信联盟定义的E.164标准。即含国家码的手机号,例如:”ms”:”8613000110022”
ts 发送消息的时间戳 20 短信验证码发送事件发生的时间戳,“ts”:“ 20160713114223039684”
ct 短信内容 1024 必须 用户短信内容
sign 签名 32参考1.3

例子:

                            {
                                "appkey": "jsyh", 
                                ”tid”:”1073001”,
                                "ct": "91", 
                                "ms": "8613000110022", 
                                "sign": "7F33603C22C6DE56BF671C925918DCE8",
                                "ts": "20160713101356320"
                            }
                        

4.6.响应消息

json键名 内容 最大长度 说明
msg String 128 返回结果的详细描述信息
msgid string 26 消息id

例子:

                            {
                            "msg": "success", 
                            "msgid": "16080512365800001521667374"
                            }
                        

5. 查询余额接口

5.1.接口功能

CP平台用户查询余额,返回给CP平台一个剩余可用的短信条数。

5.2.请求方法

请设置成”GET”

5.3.Url

http://{serverroot}/qsms

5.4.请求消息

请求消息体中的参数(约定全部为小写字母)说明如下表所示。

json键名 内容 最大长度 可选 说明
appkey 应用标识 8 必须 应用商户的接入”appkey”:”jsyh”
nonce 随机字符串 无限制 可选
ts 发送消息的时间戳 32 短信验证码发送事件发生的时间戳,“ts”:“ 20160713114223039684”
sign 签名 64 必须 参考1.3

注意:ms手机号目前只支持86中国手机号码

请求消息示例如下:

                            {
                                "appkey":"jsyh",
                                "ts":"20160713101356320",
                                "nonce":"900",
                                "sign":"1D731A07A180EC56C66451706FBE4AFF"
                            }
                        

5.5.响应消息

json键名 内容 最大长度 说明
balance int 剩余可用的短信条数
msg String 128 返回结果的详细描述信息

响应消息示例:

                            {
                            "balance": 198989, 
                            "msg": "success"
                            }
                        

6. 短信状态report

6.1.接口功能

状态报告推送需要第三方客户提供一个HTTP的接收地址,短信平台为发送方,客户为接收方。

6.2.请求方法

请设置成”POST”

6.3.Url

第三方url:http://ip:port/接口名

6.4.推送消息

推送消息体中的参数(约定全部为小写字母)说明如下表所示。

json键名 内容 最大长度 可选 说明
msgid 消息id 26 必须
ms 接收短信的手机号码 13 必须 加86
status 短消息的执行状态 1 必须 字符串0:发送成功 1:等待发送 2:发送失败

6.5. 推送响应

推送响应参数(约定全部为小写字母)说明如下表所示。

json键名 内容 最大长度 可选 说明
msgid 消息id 26 必须
status 短消息的执行状态 1 必须 字符串 0:接收成功 1:接收失败

7. 短信状态查询

7.1. 接口功能

通过手机号码(ms)和消息ID(msgid),可以查询短信的发送结果(status).

7.2. 请求方法

请设置成”get”.

7.3. Url

http://{serverroot}/qsms

7.4. 请求消息

请求消息体中的参数(约定全部为小写字母)说明如下表所示。

json键名 内容 最大长度 可选 说明
appkey 应用标识 8 必须 应用商户的接入”appkey”:”jsyh”
nonce 随机字符串 无限制 可选
msgid 消息id 26 必须
ms 接收短信的手机号码 13 必须 加86
ts 发送消息的时间戳 32 短信验证码发送事件发生的时间戳,“ts”:“ 20160713114223039684”
sign 签名 64 必须 参考1.3

请求消息示例:

                            {
                                'ms': '13810326774', 
                                'appkey': 'hwh', 
                                'nonce': 'Ck?VPQUA6S2OK*1B<>@(', 
                                'ts': '2016-08-09T07:14:16.325566+00:00', 
                                'msgid': '16080914251200001557305643', 
                                'sign': 'gxpbsBh0SoYIn/8ju9lm+3srO13iBg7Sodg6bg0/CbU='
                            }
                        

7.5.响应消息

json键名 内容 最大长度 说明
status 短信发送状态 1 "1": 成功 "2":失败 "3":无效请求

响应消息示例:

                            {
                            "status":"1" 
                            }
                        

8. 短信Deliver推送

8.1.接口功能

此接口用于向代理商通道号发送一条用户的上行请求。

8.2.请求方法

请设置成“post”

8.3.Url

http://ip:port/deliver 需要代理商提供

8.4.推送deliver短信消息

请求消息体中的参数(约定全部为小写字母)说明如下表所示。

json键名 内容 最大长度 可选 说明
ms 发送短消息的手机号 15 必须
spnum sp接入号 20 “Spnum”:”10690001073”
ct 短信内容 6 必须 用户短信内容

注意:ms手机号目前只支持86中国手机号码

推送息示例如下:

                            {
                            "ms":"8613194072190",
                            "spnum":"10073",
                            "ct":"测试测试"
                            }
                        

8.5.推送deliver响应

推送响应参数(约定全部为小写字母)说明如下表所示。

json键名 内容 最大长度 可选 说明
msgid 消息id 26 必须 代理商自己生成
status 短消息的执行状态 1 必须 字符串 0:接收成功 1:接收失败

响应消息实例如下:

                            {
                                "msgid":"10006112161802260016888276",
                                "status":"0"
                            }
                        

9.附录

9.1.发送短信java示例

                            private String getPostData(String mobile, String content, String tid) {
                            StringBuffer sb = new StringBuffer();
                            sb.append("appkey").append("=").append(appkey).append(",");
                            sb.append("ct").append("=").append(content).append(",");// 短信内容
                            sb.append("ms").append("=").append(mobile).append(",");// 手机号,含国家码
                            sb.append("tid").append("=").append(tid);
                    //      sb.append("ts").append("=").append(System.currentTimeMillis()).append(",");
                            sb.append(appsecret);
                            byte[] byteArray = Base64.encodeBase64(DigestUtils.sha256(sb.toString()));
                            String sign = new String(byteArray, Charsets.UTF_8);
                            JSONObject jo = new JSONObject();
                            jo.put("appkey", appkey);
                            jo.put("ct", content);
                            jo.put("tid", tid);
                            jo.put("ms", mobile);
                            jo.put("sign", sign);
                            return jo.toJSONString();
                            }