# 插件方式接入
# 插件要求
# 产品
- 对插件业务的要求
- 【主流程】主业务流程需要保证通畅可用,且线上使用体验良好
- 【定位】在使用定位的适当时机请求用户定位,非强依赖定位的服务,不可强制索取用户定位。用户未授权定位时,推荐使用首页选择城市的默认POI作为默认位置,具体可结合实际业务进行调整。
- 【导流】整个插件内不可出现以banner、推文、引导关注/下载等任何形式的导流至非腾讯出行服务公众号的内容出现
- 【交叉内容】与腾讯出行服务出现的交叉服务/功能需屏蔽
- 其他
- 接入方不可在未经允许的情况下,私自短信/电话等形式进行导流操作
- 接入方不可在未经允许的情况下,私自短信/电话等形式进行非服务相关的干预/打扰用户等行为
# 技术
- 分包插件大小不宜超过 500k;
- 以首页半页卡方式接入的服务,首页部分大小不宜超过 100k;
- 插件支持 生产环境、测试环境 的切换;
- 建议调试基础库基于 2.11.1 版本;
# 提供参数
| 参数名称 | 是否必须 | 说明 | 备注 |
|---|---|---|---|
| appId | 是 | 小程序 appId,用于订单同步时的 app_id 参数 | 如:wx65cc950f42e8fff1 |
| debug | 否 | 环境切换 | 0 生产环境 1 测试环境 |
| openId | 否 | 用户标识,用于订单同步时的 user_code 参数 | 如:ce7ac44cb24db1111c4c805e664ea906 |
| encryptData | 否 | 加密参数,需要 decodeURIComponent | 如:PSYDQHwWw%2B0H2l%2FNFUoLNrAIF8%3D |
| encryptId | 否 | 加密参数流水号 | 如:1611844898010850820 |
| timestamp | 否 | 时间戳(毫秒) | 如:1596772108130 |
| sign | 否 | 签名 | 参见以下签名算法,32位小写 MD5 值 |
| mobile | 否 | 用户手机号 | 如:13800138000 |
| carPlate | 否 | 车牌 | 如:京A88888 |
| carMode | 否 | 腾讯车型id | 如:64142 |
| city | 否 | 当前城市 (可提供城市中心坐标) | 如:北京市,(或城市码,如:110100) |
| orderId | 否 | 订单唯一标识,用于跳转订单详情页等 | 如:S618805163170115 |
| [others] | 否 | 其他约定的业务所需参数 | ... |
- 签名算法: sign = MD5([参与签名的key + 参与签名的value] + timestamp + secret) secret 由出行或插件提供,区分测试环境和生产环境 假设定义 openId, mobile, carPlate, orderId 需要参与签名,代码示例如下
const secret = '95t277x20952d1a6vi3sl67u138664';
const appId = 'wx65cc950f42e8fff1';
const openId = 'ce7ac44cb24db1111c4c805e664ea906'; // 参与签名
const mobile = '13800138000'; // 参与签名
const carPlate = '京A88888'; // 参与签名
const timestamp = Date.now(); // 如:1604650181834
const debug = 1;
const param = { appId, openId, mobile, carPlate, timestamp, debug };
// 按顺序遍历参与签名的参数
const authKeys = [];
['openId', 'mobile', 'carPlate', 'orderId'].forEach((k) => {
if (typeof param[k] !== 'undefined') authKeys.push(`${k}${param[k]}`);
});
authKeys.push(timestamp, secret);
param.sign = MD5(authKeys.join(''));
// sign 值为:a7b2a948ddc4265ab9e7455ef93430d9
const query = Object.keys(param).map(k => `${k}=${param[k]}`).join('&');
wx.navigateTo({ url: `plugin://xx-plugin/index?${query}` });
# 调用时序
# 版本更新
- 插件由版本升级时,按如下格式同步变更信息:
[XXX 插件名称] [版本号]1.0.2
A:新增 XXXXXX 功能
F:修复 XXXXXX 的缺陷
U:更新 优化 XXXXX 流程
U:更新 优化 XXXXX 流程
# 注意事项
针对首页半页卡方式接入,有一些特殊的要求:
- 首页半页卡可通过两种形式提供组件:
插件中的组件或标准 NPM 包构建的组件; - 提供的半页卡组件包文件大小总和不宜超过100k;
- 组件中的 CSS 限定在特定的 class 内,禁止使用 page、view 等容易造成影响的全局设置;
- 以 NPM 包方式提供的组件,组件内调用的接口域名限制为1个(需要绑定业务域名);
- 以 NPM 包方式提供的组件,账号信息、跳转路径等参数通过组件属性进行传递;
- 以插件方式提供的组件,页面跳转通过 TMSBridge 导出到插件(基础库 2.11.1以上 (opens new window)); 参见如下<能力扩展>:
# 能力扩展
![]()
- 文档详情 👉 TMSBridge