長(zhǎng)沙專業(yè)網(wǎng)站制作設(shè)計(jì)網(wǎng)絡(luò)推廣和網(wǎng)站推廣
通信方式
?????? 采用http1.1通信方式,數(shù)據(jù)以post方式提交
?????? http 頭設(shè)置:application/json
簽名
?????? 采用MD5加密方式, 源字符串采用字段拼接方式
?????? 簽名中appSecret是平臺(tái)分配密碼
?????? 簽名方法:
?????? 如:String sign=md5(param1param2param3…paramN)
發(fā)送接口
地址: http://ip:port/api/sms/air/send
描述:?? 客戶平臺(tái)==>大業(yè)務(wù)平臺(tái)
1. 請(qǐng)求方式post; http頭設(shè)置application/json; 字符集UTF-8
?????? 2. http響應(yīng)數(shù)據(jù)為json格式
請(qǐng)求參數(shù):
字段 | 名稱 | 類型 | 說明 |
appKey | 賬戶名 | String(32) | 統(tǒng)一分配 |
timestamp | 時(shí)間戳 | long | 毫秒值 自UTC時(shí)間1970-1-1起的毫秒值 |
mobile | 用戶號(hào)碼 | String(11,11999) | 多個(gè)提交逗號(hào)分隔; 一次最多1000個(gè)號(hào)碼 |
content | 內(nèi)容長(zhǎng)度 | String(402) | 短消息內(nèi)容長(zhǎng)度,67*6條 |
spNumber | 擴(kuò)展號(hào)碼 | String(10) | 擴(kuò)展長(zhǎng)號(hào)碼 |
sendTime | 定時(shí)時(shí)間 | String(0,14) | yyyyMMddHHmmss 定時(shí)發(fā)送時(shí)間, 默認(rèn)為空值 |
reportUrl | 報(bào)告回調(diào)地址 | String(100) | 狀態(tài)報(bào)告回調(diào)的URL地址 默認(rèn)為空 若使用查詢接口(接口6)方式,為空值 |
moUrl | 上行地址 | String(100) | 用戶上行URL地址 默認(rèn)空 |
attach | 附加值字段 | String(100) | 附加數(shù)據(jù), 客戶根據(jù)自身業(yè)務(wù)邏輯添加 默認(rèn)為空值 |
sign | 數(shù)字簽名 | String(32) | sign=MD5(appKey+timestamp+mobile+content+spNumber+sendTime+appSecret) 順序以此為準(zhǔn) 其中appSecret為平臺(tái)分配賬戶時(shí)提供 |
響應(yīng)參數(shù):
字段 | 名稱 | 類型 | 說明 |
status | 狀態(tài)碼 | int(4) | ?見附表
其他失敗 |
message | 消息描述 | String(32) | |
taskId | 任務(wù)ID | long(8) |
數(shù)據(jù)樣例:
請(qǐng)求json:
{ ??? "appKey": "10001", ??? "timestamp": "1546589422955", ??? "mobile": "13800138001", ??? "content": "【簽名測(cè)試】這是一條測(cè)試短信", ??? "spNumber": "234", ??? "sendTime": "", "reportUrl": "", “moUrl”:””, ?? ?"attach": "", ??? "sign": "4b38b34fb70fcc4c49e180fbd5a9854b" } |
響應(yīng)Json:
{ ??? "message": "提交成功", ??? "taskId": 6468846578735812608, ??? "status": 1 } 或失敗 { ??? "message": "提交數(shù)據(jù)錯(cuò)誤", ??? "status": 2 } |
/*** 發(fā)送短信** @param smsModule 模塊名稱* @param phone 手機(jī)號(hào)* @param receiveName 接收人姓名* @param message 發(fā)送內(nèi)容* @return*/public ActionResult sendSms(String smsModule, String phone, String receiveName, String message) {Request request = null;ActionResult actionResult = ActionResult.fail("發(fā)送短信失敗");LogSmsMessageVo logSmsMessageVo = new LogSmsMessageVo();String status = "1";try {//平臺(tái)提供的appKey appKey = x.getDictValue();//平臺(tái)提供的appSecret appSecret = x.getDictValue();//平臺(tái)提供的發(fā)送短信urlsendUrl = x.getDictValue();} catch (Exception e) {log.error("查詢發(fā)送短信參數(shù)異常,異常信息" + e);}Response resp = null;String taskId = "";String sendStat = "";try {request = Request.newHttpRequestBuilder().uri(sendUrl).timeout(5000).charset("utf-8").method(Request.POST).contentType(Request.ContentType.JSON).build();//1. 構(gòu)建數(shù)據(jù)包對(duì)象SendSmsEntity sendEntity = this.buildSendEntity(phone, message);//2. 轉(zhuǎn)化對(duì)象為json字符串?dāng)?shù)據(jù)String data = JSONObject.toJSONString(sendEntity);//3. 字符串url編碼,防止特殊字符被客戶端強(qiáng)行改變,譬如+會(huì)被瀏覽器或者其他客戶端變更為空格String encodeData = URLEncoder.encode(data, "UTF-8");//4. 發(fā)送resp = request.send(sendUrl, encodeData);log.info("發(fā)送短信,手機(jī)號(hào):" + phone + ",發(fā)送內(nèi)容:" + message + ",返回結(jié)果:" + resp.content());JSONObject jsonObject = JSONObject.parseObject(resp.content());if (ObjectUtils.isNotEmpty(jsonObject)) {actionResult.setMsg(jsonObject.get("message") + "");actionResult.setData(jsonObject.get("message") + "");}//解析發(fā)送結(jié)果if (200 == resp.status()) {if ("1".equals(jsonObject.get("status") + "")) {log.info("發(fā)送短信成功");status = "0";sendStat = "2";taskId = jsonObject.get("taskId") + "";actionResult.setCode(200);} else {//數(shù)據(jù)提交失敗,發(fā)送必然失敗sendStat = "0";log.info("發(fā)送短信失敗,失敗原因" + jsonObject.get("message"));}} else {if (resp.content() != null) {taskId = jsonObject.get("taskId") + "";log.info("發(fā)送短信返回失敗,返回內(nèi)容" + resp.content());} else {log.info("發(fā)送短信失敗,返回響應(yīng)內(nèi)容為空");}sendStat = "0";}} catch (Exception e) {log.error("發(fā)送短信異常,異常信息" + e.getMessage());} finally {request.release();}return actionResult;}
查詢報(bào)告接口
地址: http://ip:port/api/sms/air/report
描述:客戶平臺(tái) ==> 大業(yè)務(wù)平臺(tái)
- 查詢當(dāng)前賬戶套餐余量
- 客戶通過接口調(diào)用主動(dòng)查詢方式,獲取數(shù)據(jù),
- 如實(shí)現(xiàn)【回調(diào)報(bào)告接口2】可不實(shí)現(xiàn)該接口。
- 請(qǐng)求數(shù)據(jù) JSONObject
- 響應(yīng)數(shù)據(jù) JSONObject
- 每次接口調(diào)用都是獲得最新的數(shù)據(jù),舊數(shù)據(jù)不再緩存。
-
請(qǐng)求:
字段
名稱
類型
說明
appKey
接入賬戶
String(32)
平臺(tái)分配
sign
簽名
String(32)
md5(appKey+ appSecret)
appSecret為平臺(tái)分配接入賬戶的密鑰
數(shù)據(jù)響應(yīng):
字段
名稱
類型
說明
status
狀態(tài)碼
int(4)
?1 – 提交成功;其他-失敗
message
錯(cuò)誤描述
String(32)
?錯(cuò)誤描述
data
數(shù)據(jù)字段
JSONArray
?報(bào)告數(shù)據(jù)放入此字段中
data內(nèi)容描述:
字段
名稱
類型
說明
id
數(shù)據(jù)包標(biāo)識(shí)
String(20)
固定值:report
taskId
任務(wù)ID
long(8)
任務(wù)ID+用戶號(hào)碼=唯一性
batchNo
批次序號(hào)
int
默認(rèn)1,
當(dāng)提交的為長(zhǎng)短信時(shí),該字段匹配內(nèi)容序號(hào);如一條短信分隔為3條,該字段范圍1,2,3
mobile
用戶號(hào)碼
String(20)
?用戶號(hào)碼
stat
狀態(tài)碼
int(4)
?1 – 成功;其他-失敗
statMsg
狀態(tài)描述
String(32)
?狀態(tài)描述
attach
附加值字段
數(shù)據(jù)樣例:
請(qǐng)求:
{
??? "appKey": "90001",
??? "sign": "2cff25eaa14b0f5c54a4f56e26e7c517"
}
響應(yīng):
{
??? "data": [
??? {
??????? "batchNo": 1,
??????? "stat": 1,
??????? "statMsg": "成功",
??????? "mobile": "13800138000",
??????? "id": "report",
??????? "attach": "",
??????? "taskId": 6479258452121862144
??? },
??? {
??????? "batchNo": 1,
??????? "stat": 1,
?? ?????"statMsg": "成功",
??????? "mobile": "13800138000",
??????? "id": "report",
??????? "attach": "",
??????? "taskId": 6479266612358397952
??? }],
??? "message": "提交成功",
??? "status": 1
}
回調(diào)報(bào)告接口
描述:大業(yè)務(wù)平臺(tái) ==> 客戶平臺(tái)
- 平臺(tái)根據(jù)send接口reportUrl字段設(shè)定的URL地址,提交報(bào)告數(shù)據(jù)給客戶
- 請(qǐng)求數(shù)據(jù)JSONArray
- 響應(yīng)數(shù)據(jù) JSONObject
請(qǐng)求接口:
字段 | 名稱 | 類型 | 說明 |
id | 數(shù)據(jù)包標(biāo)識(shí) | String(20) | 固定值:report |
taskId | 任務(wù)ID | long(8) | 任務(wù)ID+用戶號(hào)碼=唯一性 |
batchNo | 批次序號(hào) | int | 默認(rèn)1, 當(dāng)提交的為長(zhǎng)短信時(shí),該字段匹配內(nèi)容序號(hào);如一條短信分隔為3條,該字段范圍1,2,3 |
mobile | 用戶號(hào)碼 | String(20) | ?用戶號(hào)碼 |
stat | 狀態(tài)碼 | int(4) | ?1 – 成功;其他-失敗 |
statMsg | 狀態(tài)描述 | String(32) | ?狀態(tài)描述 |
attach | 附加值字段 | String(100) | ?請(qǐng)求時(shí)攜帶客戶數(shù)據(jù)字段 |
響應(yīng):
字段 | 名稱 | 類型 | 說明 |
status | 狀態(tài)碼 | int(4) | ?1 – 成功接收;其他-失敗 失敗嘗試3次發(fā)送,超過3次放棄 |
數(shù)據(jù)樣例:
請(qǐng)求:
[ ??? { ??????? "batchNo": 1, ??????? "stat": 1, ??????? "statMsg": "成功", ??????? "mobile": "13800138000", ??????? "id": "report", ??????? "attach": "", ??????? "taskId": 6479258452121862144 ??? }, ??? { ??????? "batchNo": 1, ??????? "stat": 1, ??????? "statMsg": "成功", ??????? "mobile": "13800138000", ??????? "id": "report", ??????? "attach": "", ???? ???"taskId": 6479266612358397952 ??? }] |
響應(yīng):
{ ?????? "status": 1, //狀態(tài)成功 } |