API调用详解

::: hljs-center # API调用详解 ::: ##### 说明 ​ 开放平台的API是基于HTTP协议来调用的,开发者可直接进行HTTP请求调用,以下为使用HTTP进行API调用进行说明。 ##### 调用流程 根据RTOP的协议:填充参数 > 拼装HTTP请求 > 发起HTTP请求> 得到HTTP响应 > 解释json结果 ##### 调用入口 | 调用环境 |服务地址 |是否开放 | | --------- | -------- |-----------| | 测试环境| http://localhost:10001/test/api | 开放| | 正式环境| http://localhost:10001/product/api | 暂未开放| <font color="red">注意,只能使用POST请求进行API调用。</font> ##### **公共参数** ​ 调用任何一个API都必须传入的参数,目前支持的公共参数有: | 参数名 | 参数类型 | 描述 | 必传 | | --------- | -------- | --------------------------------------------- | ---- | | app_key | String | 分配给用户的app_key。 | 是 | | sign | String | API输入参数签名结果,签名算法参照下面的介绍。 | 是 | ##### **业务参数** ​ API调用除了必须包含公共参数外,如果API本身有业务级的参数也必须传入,每个API的业务级参数请参考API文档说明。 ##### **签名算法** ​ 为了防止API调用过程中被黑客恶意篡改,调用任何一个API都需要携带签名,资源服务端会根据请求参数,对签名进行验证,签名不合法的请求将会被拒绝。 ​ 服务目前支持的签名算法为:MD5(sign_method=md5),签名过程如下: 1. sign由所有请求参数和app_secret组成(不包含sign参数本身)。 2. 所有参数进行按照首字母先后排序。 3. 将排序后的参数按照参数名=参数值的方式拼接。 4. 连接字符串,并在首尾加上app_secret。 5. 将拼接好的参数进行MD5运算(32位),再将运算后得到的字符串所有字符转换为大写,得到sign 值。 ##### **sign生成示例** 测试 app_key: app_key 测试 app_secret: app_secret 1. API接口需要请求参数如下 | 参数名称 | 参数类型 | 参数值 | 是否参与sign生成 | | --------------- | -------- | ------------------------------------ | --------------- | | session_key | String | 7889cf19-9623-4e6d-a0eb-57a5093119d9 | 是 | | app_key | String | app_key | 是 | | sale_order_code | String | RG20171030104 | 是 | | sign | String | CBDF18FD664A303186054EFA96B642FB | 否 | 2. 按照首字母先后排顺序如下 | 参数名称 | 参数类型 | 参数值 |是否参与sign生成| | --------------- | -------- | ------------------------------------ |---------------| | app_key | String | app_key | 是 | | sale_order_code | String | RG20171030104 | 是 | | session_key | String | 7889cf19-9623-4e6d-a0eb-57a5093119d9 | 是 | | sign | String | CBDF18FD664A303186054EFA96B642FB | 否 | 3. 拼接后的字符串如下 app_key=app_key&sale_order_code=RG20171030104&session_key=7889cf19-9623-4e6d-a0eb-57a5093119d9 4. 首尾加上app_secret后字符串如下。 <font color="red">app_secret</font>app_key=app_key&sale_order_code=RG20171030104&session_key=7889cf19-9623-4e6d-a0eb-57a5093119d9<font color="red">app_secret</font> 5. 最终生成的sign值如下。 B7FF97E7A1FC5D5C4CE35C15F9CF46F8 ##### 注意事项: 1. 所有的请求和响应数据编码皆为utf-8格式。如果请求的Content-Type是 application/x-www-form-urlencoded,所有参数值也做urlencode编码;如果是multipart/form-data格式,每个表单字段的参数值无需编码,但每个表单字段的charset部分需要指定为utf-8。