[TOC]
# 接口規范
## 接口地址及示例
1. 接口地址一般形式如下:
GET
> http://host.domain/path/method?timestamp=1468997543&signature=2d82262741090a52af52782e35c3e75646b46c4a¶meter1=value1&.......
POST
> URL: http://host.domain/path/method
> JSON: {
"userid":"ae48",
"passwordenc":"bXV5dXRv",
"ip":"1.1.1.1",
"timestamp":"1468997543,
"signature":"2d82262741090a52af52782e35c3e75646b46c4a"
}
2. 開發測試環境主機域名為:
> http://opensdk.ilifeceo.cn/hotel/
* * * * *
## 接口公共參數
>1. timestamp, 整數,為調用接口時的系統時間戳,要求調用接口的客戶端設備時鐘與接口服務器的時鐘一致,誤差不超過2秒。建議使用時鐘同步機制,具體設置方法請自行百度;
>2. signature, 字符串,具體生成方法參看下文[接口安全機制]
* * * * *
## 接口安全機制
>1. 接口要求支持HTTP BasicAuthorization(基本認證),即所有接口請求必須設置相關的Header。Header內容與格式如下:key=Authorization, value=Basic base64(username:password)。[Basic與base64加密串中間有空格]
>2. 部分接口由于數據的安全性要求,啟用簽名機制。簽名規則及步驟如下:
參與簽名的字段包括公共字段timestamp, 對所有待簽名參數按照字段名的ASCII 碼從小到大排序(字典序)后,使用URL鍵值對的格式拼接成字符串string1。[這里需要注意的是所有參數名與參數值均需轉化為小寫字符。字段名和字段值根據"RFC 3986"編碼,空格會被百分號編碼(%20)]然后對string1附加密鑰作sha1加密,即signature=sha1(string1+'&key='+{authkey})。
>3. 示例:
參數Json如:
{
"userid":"ae48",
"passwordenc":"bXV5dXRv",
"ip":"1.1.1.1",
}
>步驟一:對所有待簽名參數按照字段名的ASCII 碼從小到大排序(字典序)后,使用URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串string1。結果如下:
ip=1.1.1.1&passwordenc=bxv5dxrv×tamp=1468997543&userid=ae48
>步驟二:對string1進行sha1簽名(示例附加密鑰&key=n6pvxqesvqh8nagidcbjj-fpgl30qywi),得到signature:
45a018de86606737c23a4b913852287e5acb3870
>步驟三:最后提交的實際參數如:
* GET
> http://host.domain/path/method?userid=ae48&passwordenc=bxv5dxrv&ip=1.1.1.1×tamp=1468997543&signature=45a018de86606737c23a4b913852287e5acb3870
* POST
>{
"userid":"ae48",
"passwordenc":"bXV5dXRv",
"ip":"1.1.1.1",
"timestamp":1468997543,
"signature":"45a018de86606737c23a4b913852287e5acb3870"
}