Skip to content

认证方式

本体系下的所有接口都使用同一套鉴权规则,通过服务端鉴权校验的接口才会被正常地、合法地执行接口文档中描述的业务逻辑。

鉴权参数

商家和酷家乐进行商务合作之后,酷家乐将会分配给商家一组 appkeyappsecret,这两个参数在接口鉴权中起到了最重要的作用。

所有接口的入参,除了各接口文档中所描述的,还必须额外加上以下 URL Query Param:

参数是否必须含义
appkey商家和酷家乐商务合作之后,酷家乐分配给商家的 appkey。这会是一个 10 位长度的字符串。
timestamp格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒(北京时间 1970 年 01 月 01 日 08 时 00 分 00 秒)起至现在的总毫秒数,比如:1485878400000。注意,一些编程语言自带的库获取到的时间戳是精确到秒,这时需要乘以 1000。
appuid第三方用户的 ID。不是所有接口都需要这个参数,具体的接口文档中会在 URL Query Param 注明该接口是否需要这个参数。
sign签名值,根据 appuid 是否存在,有两种不同的计算方式。

签名计算规则

方式一:appuid 不存在

sign = md5(appsecret + appkey + timestamp)

方式二:appuid 存在

sign = md5(appsecret + appkey + appuid + timestamp)

注意

appsecret 我们不可在网络中传播,而只是用于在计算 sign 值的时候使用。appsecret 只应该保存在商家应用的服务端以及酷家乐的服务端,请避免泄露,否则导致安全问题,酷家乐有权封禁商家的接口调用。

请求示例

示例 1:不需要 appuid 的接口

接口文档中描述需要 URL Query Param 为 test_param,那么最后调用的时候应该是类似:

GET https://openapi.kujiale.com/v2/test?appkey=[appKey]&timestamp=[timestamp]&sign=[sign]&test_param=123

其中 sign 的计算方式为:sign = md5(appsecret + appkey + timestamp)

示例 2:需要 appuid 的接口

如果接口文档中 URL Query Param 还注明需要 appuid

GET https://openapi.kujiale.com/v2/test?appkey=[appKey]&timestamp=[timestamp]&appuid=[appuid]&sign=[sign]&test_param=123

其中 sign 的计算方式为:sign = md5(appsecret + appkey + appuid + timestamp)

Python 示例

python
import hashlib
import time
import requests

appkey = "YOUR_APPKEY"
appsecret = "YOUR_APPSECRET"

# 生成时间戳(毫秒)
timestamp = str(int(time.time() * 1000))

# 计算签名(假设不需要 appuid)
sign_str = appsecret + appkey + timestamp
sign = hashlib.md5(sign_str.encode()).hexdigest()

# 构建请求
url = "https://openapi.kujiale.com/v2/test"
params = {
    "appkey": appkey,
    "timestamp": timestamp,
    "sign": sign,
    "test_param": "123"
}

response = requests.get(url, params=params)
print(response.json())

响应格式

所有接口返回统一格式:

json
{
  "c": "0",      // 状态码,"0" 表示成功
  "d": { ... },  // 返回数据
  "m": null,     // 消息
  "f": ""        // 额外信息
}
字段说明
c状态码,"0" 表示成功,其他值表示错误
d返回的业务数据
m错误消息(失败时)
f额外信息

错误处理

c 不为 "0" 时,表示请求失败。常见错误码:

错误码说明
-1通用错误
1配置错误
12Token 异常
13任务不存在或已结束