# 开发必读
- 开发文档说明
- 对接流程
- 接口调用流程
- 基本调试方法
- 调用频率限制
# 开发文档说明
服务端API开放了丰富的能力接口,开发者可以借助接口能力,实现企业服务及企业微信的集成。支持的能力,通过目录导航可以快速预览, 目录树按功能块聚合归类,如通讯录管理、消息推送等。
文档的阅读次序,建议先阅读一遍开发指南,以及接口 access_token 获取。然后就可以独立查看各个功能块文档说明。
所有的接口需使用 HTTPS 协议、JSON 数据格式、UTF8 编码。接口说明格式如下:
请求方式:POST(HTTPS)
接口说明:
...
请求地址:
...
请求包体:
...
参数说明:
...
权限说明:
...
返回结果:
...
参数说明:
...
- 请求方式,标明接口调用的 HTTP 方法,区分 GET/POST 请求。所有的请求都为 https 协议。
- 请求地址,注意大小写。
- 请求包体/参数说明,标明请求参数示例及说明,参数说明包括字段含义、取值范围,开发者在设计数据结构时,应参考该定义范围。
- 权限说明,标明接口的使用范围,默认只能看当前账户下的数据,暂时没有开发者特别留意调用场景。
- 返回结果/参数说明,标明返回参数示例及说明。特别留意,所有接口在调用失败时返回包里都有 code、message(部分接口在调用 成功时没有返回 code 和 message)。 开发者需根据 code 存在且既不为 200 也不为 0 判断为失败,否则为成功(部分接口成功时 code 为 0)(code意义请见全局错误码)。 而 message 仅作参考,后续可能会有变动,因此不可作为是否调用成功的判据。
# 对接流程
接入 CJ API 按下面 6 步进行,点击图中的步骤可跳转到对应文档。灰色虚线框为可选步骤。
flowchart LR
S1["① 获取 API Key"] --> S2["② 获取 Access Token"] --> S3["③ 沙盒测试"] --> S4["④ 同步商品"] --> S5["⑤ 下单与支付<br/>(按场景选)"] --> S6["⑥ 物流与售后"]
classDef optional fill:#f5f5f5,stroke:#999,stroke-dasharray:4 3,color:#666
class S3 optional
click S1 "/zh/api/start/apikey.html"
click S2 "/zh/api/start/token.html"
click S3 "/zh/api/start/sandbox.html"
click S4 "/zh/api/start/Products-Synchronization-Processing.html"
click S5 "/zh/api/start/Orders-Synchronization-Processing.html"
click S6 "/zh/api/api2/api/logistic.html"
| 步骤 | 要做什么 | 关键接口 / 文档 |
|---|---|---|
| ① 获取 API Key | 安装 API 应用,在 API 页面创建 API Key | 如何获取API Key |
| ② 获取 Access Token | 用 API Key 换取 Token,在服务端缓存,快过期时刷新 | getAccessToken / refreshAccessToken,流程见下方「接口调用流程」,接口见鉴权接口 |
| ③ 沙盒测试(可选) | 创建订单时传 isSandbox=1,不真实扣款、不真实履约 | 沙盒机制 |
| ④ 同步商品 | 获取商品列表、详情与变体,查询实时库存;可订阅商品 / 库存 Webhook | 商品同步流程、Webhook 机制 |
| ⑤ 下单与支付 | 运费试算、创建订单、余额支付或在 MyCJ 网站支付;按业务选择对应的下单场景 | 订单同步流程、订单接口 |
| ⑥ 物流与售后 | 查询物流轨迹或接收订单 / 物流 Webhook;有问题时发起纠纷 | 物流接口、纠纷接口 |
整个流程中的所有调用都受调用频率与点数规则约束,见接口调用限制与点数资源规则。
# 接口调用流程
flowchart TD
A([开始]) --> B{"服务端缓存中有有效的 Access Token?"}
B -- 否 --> C["用 API Key 获取 Access Token<br/>POST /authentication/getAccessToken"]
C --> D["在服务端缓存 accessToken / refreshToken / 过期时间"]
D --> E
B -- 是 --> E["调用业务接口<br/>请求头 CJ-Access-Token: accessToken"]
E --> F{"HTTP 200 且 code 为 200 或 0?"}
F -- 是 --> G([处理返回数据])
F -- "否,code = 1600001<br/>(token 无效或过期)" --> H["刷新 Access Token<br/>POST /authentication/refreshAccessToken"]
H --> I{"刷新成功?"}
I -- 是 --> D
I -- "否,code = 1600003<br/>(refresh token 无效)" --> C
F -- "否,其他 code" --> J(["按错误码处理<br/>见全局错误码"])
获取 access_token,参考说明:文档说明
- 缓存和刷新 access_token。
- 开发者需要缓存 access_token,用于后续接口的调用。当 access_token 失效或过期时,需要重新获取。
- 调用具体的业务接口
Access Token 与 Refresh Token 的有效期均为 180 天。错误码说明见全局错误码。
# 基本调试方法
可以借助工具排查问题原因。参考说明:文档说明
# 调用频率限制
出于系统保护的考虑,我们对接口的调用做了频率限制。参考说明:主动调用频率限制
← 简介 如何获取API Key →