plugin.submitEcCustomGoods收藏我的收藏
收藏
我的收藏基础库 3.43.0.0 开始支持本接口。
抖店支付成功订单以跳转小程序的方式定制商品,为小程序提供定制数据提交的能力,仅支持抖音 App 和抖音极速版 App。
前置条件
- 1.参考 电商小程序接入指南 完成小程序及资质的准备;
- 2.参考 申请行业插件 完成插件的申请,注意只有小程序拥有电商类目资质才可见申请入口;
- 3.参考 使用行业插件 进行能力的调用;
行业插件在抖音 App 版本 31.8.0 及以上,小程序基础库版本 3.4x.0.0 及以上时支持。
语法
const plugin = tt.requirePlugin('tt95aee3130ae1cbe911'); plugin.submitEcCustomGoods({ orderId: "xxxx", filePath: "ttfile://abc", customData: { text: [ { id: 1, key: "手镯颜色", content: "黑色", }, ], extra: {}, }, success(res) { console.log("submitEcCustomGoods success", res); }, fail(res) { console.log("submitEcCustomGoods fail", res); }, complete(res) { console.log("submitEcCustomGoods complete", res); }, });
参数说明
属性名 | 类型 | 默认值 | 必填 | 说明 | 最低支持版本 |
orderId | string | -- | 否 | 抖音订单 ID,可由用户主动填写,如果小程序页面 query 中存在 order_id 时会取 order_id,无需传此属性,当小程序 query 的 order_id 为空时,可以传入该属性代替 | 2.52.0.0 |
filePath | string | -- | 是 | 定制效果快照的本地文件地址,来源如下:
要求如下:
| 2.52.0.0 |
customData | object | -- | 是 | 用户定制信息 | 2.52.0.0 |
success | function | -- | 否 | 接口调用成功的回调函数 | 2.52.0.0 |
fail | function | -- | 否 | 接口调用失败的回调函数 | 2.52.0.0 |
complete | function | -- | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) | 2.52.0.0 |
customData 为 object 类型,属性如下:
属性名 | 类型 | 默认值 | 必填 | 说明 | 最低支持版本 |
image | Array<Object> | [] | 否 | 2.52.0.0 | |
text | Array<Object> | -- | 是 | 商家定制的文案信息 | 2.52.0.0 |
extra | Object | -- | 否 | 其它扩展信息 | 2.52.0.0 |
customData.image 为 object 类型,属性如下:
属性名 | 类型 | 默认值 | 必填 | 说明 | 最低支持版本 |
id | number | -- | 是 | 自定义图片模块 ID | 2.52.0.0 |
url | string | -- | 是 | 定制图片链接,要求 HTTPS 协议 | 2.52.0.0 |
customData.text 为 object 类型,属性如下:
属性名 | 类型 | 默认值 | 必填 | 说明 | 最低支持版本 |
id | number | -- | 是 | 自定义文案模块 ID | 2.52.0.0 |
key | string | -- | 是 | 标记可定制的内容,如商品名称和规格名称 | 2.52.0.0 |
content | string | -- | 是 | 标记用户定制的具体信息,如定制数量和定制要求 | 2.52.0.0 |
回调成功
参数为 Object 类型,属性如下:
参数 | 参数类型 | 说明 | 最低支持版本 |
errMsg | string | 回调信息 | 2.52.0.0 |
回调失败
参数为 Object 类型,属性如下:
参数 | 参数类型 | 说明 | 最低支持版本 |
errNo | number | 错误码 | 2.52.0.0 |
errMsg | string | 错误信息 | 2.52.0.0 |
错误码说明
errNo | errMsg | 说明 |
10101 | Platform auth deny | 权限错误,不在白名单内; |
10301 | The feature is only support in Douyin and DonyinLite | 仅支持在抖音、抖音极速版中使用,当前 App 不支持这个功能 |
20000 | xxx should be string, but got xxx | 参数类型校验错误,请检查参数类型 |
21500 | Invalid login status, please check login status | 获取宿主登录信息失败,用户未登录 |
21501 | Network error | 网络错误,请检查网络状况 |
21502 | Server error | 服务端网关错误(如 404、502 等),请联系客服助手 |
21503 | Value of orderId cannot be empty | 订单 ID 为空 |
21655 | 定制信息填入失败,稍后重试 | 内部服务不稳定,可以联系客服助手 |
21660 | 当前订单状态不支持定制 | 不支持重复上传定制信息,或者订单流程已经结束 |
21661 | 定会信息提交不全 | 后续如果存在一笔订单,多个定制商品,则需要同时上报。第一期暂时不会出现 |
21662 | 定制订单中含有不同店铺的信息 | 后续如果存在一笔订单,多个定制商品,则需要都是同个店铺的商品。第一期暂时不会出现 |
定制成功回调开发者接口
请求类型:POST。
请求头:
参数名 | 参数类型 | 是否必须 | 说明 |
Content-Type | string | 是 | 请求的 MIME 类型,统一固定为 application/json |
请求参数:
参数 | 参数类型 | 是否必传 | 说明 |
order_ids | list | 是 | 校验成功的订单(目前 list 中只有一条数据) |
开发者响应参数(目前并不关注开发者的处理结果,只关注是否通知到):
参数 | 参数类型 | 是否必传 | 说明 |
err_no | number | 是 | 响应结果 |
err_msg | string | 否 | 响应结果数据 |
代码示例
canvas 方案:
<!-- ttml --> <view> <canvas canvas-id="myCanvas" /> <button type="default" size="default" bindtap="submit"> 提交定制信息 </button> </view>
// js const plugin = tt.requirePlugin('tt95aee3130ae1cbe911'); Page({ submit() { const self = this; tt.login(); tt.showLoading({ title: "正在提交", }); tt.canvasToTempFilePath({ canvasId: "myCanvas", success(res) { self.submitEcCustomGoods(res.tempFilePath); }, }); }, submitEcCustomGoods(path) { plugin.submitEcCustomGoods({ orderId: "xx_order_id", filePath: path, customData: { text: [ { id: 1, key: "手镯颜色", content: "黑色", }, ], extra: {}, }, success(res) { console.log("submitEcCustomGoods success", res); }, fail(res) { console.log("submitEcCustomGoods fail", res); }, complete(res) { console.log("submitEcCustomGoods complete", res); tt.hideLoading(); }, }); }, });
image 方案:
<!-- ttml --> <view> <button type="default" size="default" bindtap="submit"> 提交定制信息 </button> </view>
// js const plugin = tt.requirePlugin('tt95aee3130ae1cbe911'); Page({ submit() { tt.login(); tt.showLoading({ title: "正在提交", }); tt.downloadFile({ url: "https://你的图片地址", header: { "content-type": "application/json", }, success(res) { console.log("downloadFile success", res); this.submitEcCustomGoods(res.tempFilePath); }, fail(res) { console.log("downloadFile fail", res); }, complete: (res) => { console.log("downloadFile complete", res); }, }); }, submitEcCustomGoods(path) { plugin.submitEcCustomGoods({ orderId: "xx_order_id", filePath: path, customData: { text: [ { id: 1, key: "手镯颜色", content: "黑色", }, ], extra: {}, }, success(res) { console.log("submitEcCustomGoods success", res); }, fail(res) { console.log("submitEcCustomGoods fail", res); }, complete(res) { console.log("submitEcCustomGoods complete", res); tt.hideLoading(); }, }); }, });