多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 创客贴 API 文档 1.6.1 ## Demo [在线预览](https://www.chuangkit.com/apidemo) ## 示例代码 [点击下载](https://static.chuangkit.com/document/demo/chuangkitApiClientSample.zip) ## 使用 ### 引入 SDK 方式一: 在网页的`<body>`中任意位置写入以下代码: ```html <script>(function(d,s,a){var w=d.createElement(s),s=d.getElementsByTagName(s)[0];w.src=a;s.parentNode.insertBefore(w,s);})(document,'script','https://static.chuangkit.com/api/v4.1.3.js');</script> ``` 方式二: ```sh npm install @chuangkit/chuangkit-design ``` ### 调起 组装调起创客贴 API 所需的参数对象(参数主要来控制创客贴 API 调起后的形态,比如画布尺寸),对象写法如下(对象中支持参数说明见 [附录](#appendix)): ```js var option = { "data-access": "", "data-exp": "", "sign": "", "signType": "" } ``` 调起创客贴 API 之前须进行实例化,如下: 方式一: ```js var cktIframe = new ChuangkitIframe(option) ``` 方式二: ```js import cktDesign from "@chuangkit/chuangkit-design" var design = new cktDesign(option) ``` 实例化后即可在需要时调起创客贴 API: ```js cktIframe.openIframe() // 方式一 design.openIframe() // 方式二 ``` 如需关闭,方法如下: ```js cktIframe.closeIframe() // 方式一 design.closeIframe() // 方式二 ``` ## 数据返回 在页面 js 中定义全局方法 chuangkitComplete 之后可以从调起的创客贴 API 得到数据,如下: ```js window.chuangkitComplete = function(data){ console.log(data); } ``` data 为返回的数据对象,返回值说明如下: |参数名|必有|类型|说明| |:--|:--|:--|:--| |cktMessage|是|boolean|判断是否是创客贴 API 的返回| |kind|是|number|1:保存设计成功;2:生成缩略图成功;-1:错误| |design-id|是|string|本次调起创客贴 API 使用的设计 ID| |thumb-urls|kind 为 2 时必有|array|生成的图片缩略图地址| |source-urls<sup style="color: red;">new</sup>|kind 为 2 且初始化参数 data-definition 为 1 时必有|array|生成的原图地址 |thumb-exp|kind 为 2 时必有|number|thumb-urls 有效时长(秒)| |error|kind 小于 0 必有|string|报错说明| ## 原图换取 > 自 v4.1.1 版本开始,通过增加初始化参数 data-definition: 1 可直接返回原图,无需再使用本功能。 如果返回数据中的图片不能满足使用要求,可调用换取原图接口(仅供后端服务器调用,前端不可用)。 ### 请求URL: - `https://openapi.chuangkit.com/api/getSourceImage.do` ### 请求方式: - POST ### 参数: |参数名|类型|必选|默认值|说明| |:--|:--|:--|:--|:--| |appId|string|是| |创客贴分配的企业 appId| |designId|string|是| |设计 ID| |fileType|int|是||请求的文件类型(0:jpg; 1:png; 2:pdf)| |noticeUrl|string|是| |异步通知地址(创客贴服务器完成图片处理后会向该地址推送信息)| |sign|string|是||参数签名(签名生成方式详见 [附录 参数签名生成方式](#sign))| |signType|string|是||加密算法,目前仅支持 ( MD5 )| ### 接口请求同步返回参数示例 ```json { "code":200 } ``` ### 接口请求同步返回参数说明 |参数名|类型|必有|说明| |:--|:--|:--|:--| |code|int|是|执行结果状态码(10000参数不合法;10001appId参数错误;10002designId参数错误;10005sign参数错误;10007接口调用凭证超时;200操作成功)| ### 异步通知申请结果 #### 异步通知示例 异步通知时,创客贴服务器会以 POST 请求的方式请求 noticeUrl,携带包含参数内容的 JSON 字符串,通知参数示例如下: ```json { "downloadUrl":[ "https://www.chuangkit.com/xxx/xxx" ], "fileType":0, "designId":"xxx-xxx-xxx", "downloadUrlExp":3600, "code":200 } ``` #### 异步通知时携带参数说明 |参数名|类型|必有|说明| |:--|:--|:--|:--| |code|int|是|执行结果状态码| |downloadUrl|array|code=1 必有|文件下载地址| |fileType|int|code=1 必有|生成的文件类型(0:jpg; 1:png; 2:pdf)| |designId|string|code=1 必有|设计 ID| |downloadUrlExp|int|code=1 必有|下载地址有效时长(秒)| <a id="appendix"></a> ## 附录 <a id="init-params"></a> ### 初始化参数说明 > 目前已知 Microsoft Edge 等浏览器渲染个别字符存在问题,导致从本文档复制的参数在后续签名后验证不通过,若排查参数名无误后仍然报错,请更换 PDF 浏览器或手动输入参数名 |参数名|必选|类型|默认值|说明| |:--|:--|:--|:--|:--| |data-access|是|string||企业 appId(创客贴提供)| |data-exp|是|timestamp||参数生效截止时间的毫秒时间戳(自定义,须晚于当前时间,超过该时间后再调起创客贴 jssdk 将无法通过通过权限校验)| |sign|是|string||参数签名(签名生成方式详见 [附录 参数签名生成方式](#sign) )| |signType|是|string||加密算法,目前仅支持(MD5 )| |data-ext-ref-user-flag|是|string||用于**保留用户资产(制作的设计、购买的模板等)**,不传该参数则每次调用均创建临时账户。保证该标识与贵平台的用户一一对应即可,推荐使用贵平台用户的用户 ID| |data-template-id|data-template-id、data-design-id、data-width、data-kind 只能选其一且必选其一|number||使用指定模板创建设计| |data-design-id|data-template-id、data-design-id、data-width、data-kind 只能选其一且必选其一|string||已存在的设计ID(修改设计时使用该参数)| |data-kind|data-template-id、data-design-id、data-width、data-kind 只能选其一且必选其一|number||创建画布所使用的场景(创客贴 kindId 查询见 [附录 场景对应表](#scenelist))| |data-width|data-template-id、data-design-id、data-width、data-kind 只能选其一且必选其一|number||自定义尺寸创建画布时画布的宽度| |data-height|使用 data-width 参数时必选|number||自定义尺寸创建画布时画布的高度| |data-unit|使用 data-width 参数时必选|string||自定义尺寸创建画布时画布的单位,可选值(px 或 mm)| |data-zIndex|否|number|10000|创客贴弹窗的 z-index| |data-imgkind|否|number|1|生成图片的 content-type(1:可下载文件的content-type;2:图片格式对应content-type)| |upload-img|否|string||需要上传到创客贴的图片 URL| |data-upload-img-width|使用 upload-img 时必选|number||上传到创客贴的图⽚放入创客贴画布中时展示的宽度,该值必须大于 0| |data-upload-img-top|否|number||上传到创客贴的图⽚放入创客贴画布中时与创客贴画布顶部的距离,该值必须大于 0| |data-upload-img-left|否|number||上传到创客贴的图⽚放入创客贴画布中时与创客贴画布左侧的距离,该值必须大于 0| |data-finish-btn-name|否|string||自定义创客贴“完成” 按钮显示的内容,该值长度必须为两个字符| |data-charged-template-show|否|number|0|是否显示创客贴付费模板(0:不显示;1:显示)| |data-definition|否|number|0|生成图片清晰度(1:高清;0:普清)| |data-allow-login|否|number|0|是否允许创客贴用户登录(1:允许;0:不允许)| |data-auto-save|否|number|1|是否允许自动保存(1:允许;0:不允许)| **注意:** data-charged-template-show 为 1 时 **必须** 传入 data-ext-ref-user-flag,否则用户清除浏览器缓存后无法再次使用已购买过的模板。 ### 附加参数说明 |参数名|必选|类型|默认值|说明| |:--|:--|:--|:--|:--| |data-extra-add-text-list|否|json||上传到创客贴的文字列表(多个文字字符串的数组转成 json,比如 "['文字一','文字二','文字三']" )| |data-extra-add-img-list|否|json||上传到创客贴的图片列表(多个图片地址的数组转成 json,比如 "['url1','url2','url3']" )| |data-extra-add-svg-frame|否|string||上传到创客贴的吸附框列表(a:圆形;b:正方形;c:长方形,比如想添加一个圆形和一个正方形 'ab')| |data-extra-template-search-keyword|否|string||调起设计页时候默认展示关键词相关模板| **注意:** 附加参数不参与参数签名 <a id="sign"></a> ### 参数签名生成方式 #### 筛选并排序 获取所有请求参数,不包括字节类型参数,如文件、字节流,剔除 sign 字段和 signType 字段,剔除值为空的参数,并按照第一个字符的键值 ASCII 码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值 ASCII 码递增排序,以此类推。 #### 拼接 将排序后的参数与其对应值,组合成“参数=参数值”的格式,并且把这些参数用 & 字符连接起来,然后在字符串末尾拼接上用户私钥(创客贴提供),此时生成的字符串为待签名字符串。 例如下面的请求示例: 假设请求信息如下,用户私钥为 abcdefg ``` REQUEST URL: https://openapi.chuangkit.com/xxx/xxxx REQUEST METHOD: POST CONTENT: a=1 b=20 c=300 ``` 则待签名字符串为: ```js a=1&b=20&c=300abcdefg ``` #### 调用签名函数签名 MD5 方式:使用各自语言对应的 MD5 签名函数对待签名字符串进行签名,生成大写 32 位 MD5 签名结果。 上述示例签名结果即为:03564928A5126990E773BE7BB5714B6A ### 全局状态码含义 |代码值|说明| |:-----|-----| |200|成功| |10001|appId 参数错误| |10002|designId 参数错误| |10003|fileType 参数错误| |10004|noticeUrl 参数错误| |10005|sign 参数错误(若一直报错,请按[初始化参数说明](#init-params)的提示尝试解决)| |10006|欠费| |10007|data-exp 参数错误| |10008|data-kind 参数错误| |10009|data-width 参数错误| |10010|data-height 参数错误| |10011|data-imgkind 参数错误| |10012|data-design-id、data-kind、data-width 参数必选其一| <a id="scenelist"></a> ### 场景对应表 [点击查看](https://www.chuangkit.com/apidemo#scene-list) ## 常见问题 ### Safari 浏览器中调起时只有灰色蒙层 原因:使用 iframe 方式加载第三方网页时,新版 Safari 默认禁止第三方 Cookie,导致创客贴无法正常使用 解决方案:使用 SDK 的 `setCookie` 方法(接受一个必选参数:redirectUrl)。该方法将做如下操作: 1. 重定向到创客贴中转页 2. 设置 Cookie 3. 跳转回原页面,并增加 "hasCookie=1" 的 queryString 调用方根据 `hasCookie` 设置标志,下次调用时判断若有标志则无需再调用 `setCookie` 走上述流程