# 小程序接入
### 一、 需要提供的平台信息
1、 小程序appid
2、 小程序登录页路径登录页配置后用户登录店铺,无登录态情况下会跳转到配置的登录链接页面,请确保链接的正确性。
3、 业务域名校验文件名称
4、 业务域名校验文件内容
5、 小程序资质类目截图(受政策影响,除「视频」以及「直播」功能可使用小鹅通插件服务外,电子书、实物商品、作业本、打卡、圈子、错题本功能需小程序具备文娱-小说、商家自营、社交-论坛资质,请上传您的类目截图,确保您已具备相关资质,若您未能具备上述资,将无法使用类目对应的功能;)
### 二、 配置业务域名及服务器域名
小鹅通侧完成配置后,需要接入方配置小程序的业务域名及服务器域名。
###### 1、域名配置信息
业务域名:
```
// 下方为商家店铺appId域名
https://{{appid}}.h5.xiaoeknow.com
https://iframe.xiaoeknow.com
https://prvsh.myqcloud.com
https://wechatapppro-1252524126.cos.ap-shanghai.myqcloud.com
```
request合法域名:
```
https://1252524126.vod2.myqcloud.com
https://200026219.vod.myqcloud.com
https://5060.liveplay.myqcloud.com
https://522ff1e0vodcq1252524126-10022853.cos.ap-chongqing.myqcloud.com
https://app.xiaoe-tech.com
https://b-vod-hw-k.xiaoeknow.com
https://b-vod.hw-cdn.xiaoeknow.com
https://c-vod-hw-k.xiaoeknow.com
https://c-vod.hw-cdn.xiaoeknow.com
https://e33d04fdvodgzp1252524126-10022853.cos.ap-guangzhou-2.myqcloud.com
https://jsreport.xiaoe-tech.com
https://learnreport.xiaoeknow.com
https://liveplay.xiaoeknow.com
https://pic.tim.qq.com
https://report.h5.xeknow.com
https://sensors.xeknow.com
https://training-app.xiaoeknow.com
https://vod2.qcloud.com
https://webim.tim.qq.com
https://wechatappdev-1252524126.file.myqcloud.com
https://wechatavator-1252524126.file.myqcloud.com
https://wxresource-1252524126.file.myqcloud.com
// 下方为商家店铺appId域名
https://{{appId}}.h5.xiaoeknow.com
```
uploadFile合法域名:
```
https://522ff1e0vodcq1252524126-10022853.cos.ap-chongqing.myqcloud.com
https://app.xiaoe-tech.com
https://e33d04fdvodgzp1252524126-10022853.cos.ap-guangzhou-2.myqcloud.com
https://file.xiaoe-tech.com
https://pic.tim.qq.com
https://sh.file.myqcloud.com
https://vod2.qcloud.com
https://webim.tim.qq.com
https://wechatappdev-10011692.file.myqcloud.com
// 下方为商家店铺appId域名
https://{{appId}}.h5.xiaoeknow.com
```
downloadFile合法域名:
```
https://1252524126.vod2.myqcloud.com
https://200026219.vod.myqcloud.com
https://app.xiaoe-tech.com
https://download-vod-hw.xiaoeknow.com
https://download-vod.xiaoeknow.com
https://pic.tim.qq.com
https://sh.file.myqcloud.com
https://webim.tim.qq.com
https://wechatappdev-10011692.cos.xiaoeknow.com
https://wechatappdev-10011692.file.myqcloud.com
https://wechatappdev-1252524126.file.myqcloud.com
https://wechatapppro-1252524126.file.myqcloud.com
https://wechatavator-1252524126.file.myqcloud.com
https://wxresource-1252524126.file.myqcloud.com
// 下方为商家店铺appId域名
https://{{appId}}.h5.xiaoeknow.com
```
###### 2、操作步骤:
1、 登录微信公众平台
2、 找到左侧导航栏的开发->开发管理->开发设置

3、 找到下图业务域名->点击修改,配置准备好的四个域名,添加保存

4、 找到服务器域名->点击修改,在request合法域名、uploadFile合法域名、downloadFile合法域名中添加提供的域名配置

### 三、 小程序开发

#### 1、 登录&&获取用户id
获取登录态链接时,需要传入小鹅通用户的用户id,接入方可以通过查询用户信息接口查询现有用户id。对于新用户,可以调用注册新用户接口获取用户id。
相关接口:
[查询单个用户信息 · 小鹅云](https://api-doc.xiaoe-tech.com/api_list/user/get_user_info.html)
[注册新用户 · 小鹅云](https://api-doc.xiaoe-tech.com/api_list/user/register.html)
#### 2、 web-view组件开发
web-view 是小程序内承载小鹅通内容的容器,为了保障用户使用时的体验,建议小程序接入时,将访问的目标页传给后端服务器,后端服务器通过小鹅3API获取登录链接,小程序web-view直接打开登录链接,该链接会给当前传入的用户种上登录态,并重定向至访问的目标页。
此处需要后端封装登录链接接口:
获取登录鉴权链接
●请求方式: POST
●请求url: [https://api.xiaoe-tech.com/xe.login.url/1.0.0](https://api.xiaoe-tech.com/xe.login.url/1.0.0)
●频率限制:10秒10000次
请求参数
| 参数 | 必选 | 类型 | 说明 |
| --- | --- | --- | --- |
| access_token | 是 | string | 获取access_token |
| user_id | 是 | string | 用户id |
| data.redirect_uri | 否 | string | 登录成功后跳转的目标url |
| data.login_type | 是 | int | 登录类型:1:pc 2:h5 3:App 4:小程序 |
| data.extra_info | 是 | array | 补充信息 |
| data.extra_info.wx_app_id | 是 | string | 小程序appid |
| ddata.extra_info.wx_open_id | 是 | string | 用户的openid |
请求参数实例
~~~
{
"app_id": "appxxxxxxxxxxxxxx",
"user id": "U_644256d170088_XXXXXXXXXX",
"data": {
"login_type": 4,
"redirect_uri": "https://your_redirect_url",
"extra_info": {
"wx_app_id": "wxxxxxxxxxxxxxxxx",
"wx_open_id": "xxxxxxxxxxxxx"
}
}
}
~~~
注意事项:
传入的redirect\_uri参数,必须带上 app\_env\_type=mini\_program\_wechat\_sdk
返回响应
| 参数 | 类型 | 说明 |
| --- | --- | --- | --- |
| code | int | 状态码,0表示成功,其他错误码见全局返回码 |
| msg | string | 错误信息提示 |
| data | array | 数据 |
| data.login_url | string | 登录url,有效期为1分钟 |
| data.permission_denied_url | string | 店铺无SDK权益包权限跳转链接 |
相关demo如下:
```
<template>
<view class="content">
<web-view :src="url"></web-view>
</view>
</template>
<script>
import { globalData } from "../../utils/config";
import { loginApi} from "../../utils/api/mainApi";
export default {
data() {
return {
url: ''
}
},
onLoad(e) {
// 如果进入当前页面是从登录页面跳转进来,则不需要重新登录
decodeURIComponent(e.urlData) !== 'undefined'?this.url = decodeURIComponent(e.urlData):this.getLoginUrlData();
},
methods: {
getLoginUrlData(){
/**
* @description: 登录接口
* @param {*} app_id 店铺appid
* @param {*} xe_user_id 用户id
* @param {*} redirect_uri 需要跳转的店铺链接
* @param {*} login_type 登录类型:1:pc 2:h5 3:App 4:小程序
*/
loginApi({
app_id: globalData.grayId,
xe_user_id: globalData.xe_user_id,
redirect_uri:`${globalData.BASE_URL}?app_env_type=mini_program_wechat_sdk`,
}).then((dataApi)=>{
const {data, code} = dataApi
if(code === 0){
this.url = `${data.login_url}&app_env_type=mini_program_wechat_sdk`;
}
}).catch(()=>{})
}
}
}
</script>
```
#### 3、 分享能力接入
小程序如需要接入微信分享功能,可以在web-view页面添加'onShareAppMessage'方法,通过入参'options'的’webViewUrl‘参数,可以获取到当前小程序页面webView的url,将获取到的url给到分享路径中。
```
<template>
<view class="">
<web-view :src="url"> </web-view>
</view>
</template>
<script>
export default {
data() {
return {
//商家自己设置跳转的店铺链接
url: 'https://XXX.XXX.com?app_env_type=mini_program_wechat_sdk'
};
},
onLoad(e) {
if (e.urlData) {
this.url = decodeURIComponent(e.urlData);
}
},
//点击分享触发的方法
onShareAppMessage(options) {
const shareUrl = this.addAppEnvTypeParam(options.webViewUrl);
return {
//分享标题,商家可自定义
title: '自定义分享标题',
//分享路径,`pages/webViewIndex/index`为当前页面路径,商家可根据自己的当前页面路径自行修改
path: `pages/webViewIndex/index?urlData=${shareUrl}`,
//分享封面图的url,商家可自定义
imageUrl: ''
};
},
methods: {
/**
* @description: 给链接添加app_env_type参数
* @param {*} url 分享链接
* @return {*} 添加了分享app_env_type参数的链接
*/
addAppEnvTypeParam(url) {
// 如果链接包含app_env_type=mini_program_wechat_sdk,则直接返回
const regex = /[?&]app_env_type=mini_program_wechat_sdk/;
if (regex.test(url)) {
return encodeURIComponent(url);
}
// 如果不包含,则返回添加app_env_type=mini_program_wechat_sdk的链接
const separator = url.includes('?') ? '&' : '?';
const newUrl = `${url}${separator}app_env_type=mini_program_wechat_sdk`;
// 调用`encodeURIComponent`方法是为了防止丢参
return encodeURIComponent(newUrl);
}
}
};
</script>
```
#### 4、 登录页兼容开发
目前小鹅通h5的登录态有效期为24小时,当用户登录态失效时,小鹅通服务器会将用户请求拦截,并跳转至接入方配置的小程序原生登录页,因此需要接入方在登录页做好兼容逻辑。
登录态失效时,小鹅通会通过以下方法跳转小程序原生页,并携带redirect\_uri参数以及app\_env\_type=mini\_program\_wechat\_sdk 的标识
~~~
wx.miniProgram.redirectTo({
url: "/pages/login_path?redirect_uri=encodeURIComponent(target_url)"
});
~~~
~~~
//代码如下:
<template>
<view class="content">
<view>
<text class="title">{{title}}</text>
</view>
</view>
</template>
<script>
import { loginApi} from "../../utils/api/mainApi";
import { globalData } from "../../utils/config";
export default {
data() {
return {
title: '登录空白页跳转',
redirect_uri: `${globalData.BASE_URL}?app_env_type=mini_program_wechat_sdk`
}
},
onLoad(opt) {
if (opt.redirect_uri) {
this.redirect_uri = decodeURIComponent(opt.redirect_uri)
}
this.getLoginUrlData()
},
methods: {
getLoginUrlData(){
/**
* @description: 登录接口
* @param {*} app_id 店铺appid
* @param {*} xe_user_id 用户id
* @param {*} redirect_uri 需要跳转的店铺链 接
*/
loginApi({
app_id: globalData.grayId,
xe_user_id: globalData.xe_user_id,
redirect_uri: this.redirect_uri
}).then((dataApi)=>{
const {data, code} = dataApi
if(code === 0){
let url = `/pages/webViewIndex/index?urlData=${encodeURIComponent(data.login_url)}`
wx.redirectTo({
url: url
})
}
}).catch(()=>{})
}
}
}
</script>
~~~
参考代码demo[wx\_miniprogram\_sdk-master.zip](https://drive.weixin.qq.com/s?k=ALQAnAdhAAYDBId3ixAb0A_gbBAEI)
#### 5、 退出登录
小程序如有支持用户切换登录的场景,需要实现退出登录的场景,可以调用下方接口实现退出登录
退出登录
●请求方式: POST
●请求url: [https://api.xiaoe-tech.com/xe.websdk.account.logout/1.0.0](https://api.xiaoe-tech.com/xe.websdk.account.logout/1.0.0)
●频率限制:10秒3000次
请求参数
|参数|必选|类型|说明|备注|
|:---- |:---|:----- |:----- |----|
|access_token |是 |string |[专属token](https://api-doc.xiaoe-tech.com/api_list/get_access_token.html) |`xxxxxxxx`|
|user_id|是|string|用户id|`...`|
响应参数
|参数|类型|描述|
|:---- |:---|:----- |
|code|int|状态码,0表示成功,其他错误码见全局返回码 · 小鹅云|
|msg|string|错误信息提示|
|data|array|数据|
示例
请求示例
~~~
{
"access_token":"xxxxxxxxxx",
"user_id":"xxxxxxxxxx"
}
~~~
响应示例
~~~
{
"code": 0,
"msg": "",
"data": [
"sdk logout success"
]
}
~~~
- 开发前必读
- 小鹅云介绍
- 更新日志
- 开始开发
- 开发指南
- 创建并授权应用
- 获取access_token(含代码示例)
- 开通接口权限
- 全局返回码
- 常用工具
- 日志排查工具
- 场景方案
- 同步用户场景
- 同步商品场景
- 同步订购关系场景
- 同步积分场景
- 同步页面统计场景
- 同步学习数据场景
- 同步推广员场景
- 内嵌SDK服务场景
- 产品介绍
- 产品简介
- 客户案例
- 接入流程
- 业务文档
- 账号打通
- 支付
- 直播带货
- 商品同步
- 订单同步
- 学习数据同步
- 企业内训
- PCweb
- H5web
- 流量变现
- App分享
- 微页面装修
- 直播连麦
- 技术文档
- 小鹅通SDK开发者声明
- 小鹅通SDK个人信息保护政策(2022年9月28日生效)
- 小鹅通SDK个人信息保护政策(2022年9月28日失效)
- 开发指南
- 原生SDK登录态
- Android-SDK 接入
- iOS-SDK 接入
- WebSDK接入
- 小程序接入
- 小程序支付接入
- 代币支付签名算法
- SDK&H5账号详解
- 发布日志(iOS)
- 发布日志(Android)
- 常见问题
- 消息推送
- 使用说明
- 消息加/解密
- 消息接收URL校验说明
- 订单状态推送
- 用户手机号变更推送
- 用户状态变更推送
- 积分变更消息推送
- 商品变更推送
- 考试消息推送
- 活动签到推送
- 订单支付推送
- 账号合并推送
- 用户注册推送
- 优惠券消息推送
- 信息采集推送
- 权益变更推送
- 用户标签变更消息推送
- API列表
- 获取access_token(含代码示例)
- 用户管理
- 使用说明
- 注册新用户
- 更新用户信息
- 获取用户列表2.0
- 获取用户列表1.0
- 查询单个用户信息
- 批量查询用户信息
- 获取用户消费信息
- 获取课程学员列表
- 获取训练营pro学员列表
- 获取会员卡用户信息
- 查询单个用户标签列表
- 查询用户合并记录
- 获取标签列表
- 添加/修改标签
- 添加/修改用户标签
- 获取用户反馈列表
- 获取用户反馈回复列表
- 回复用户反馈
- 学习数据管理
- 获取学习记录列表
- 获取每日学习记录
- 获取指定资源学习记录信息
- 获取营期下用户的学习情况
- 获取训练营pro学员任务详情
- 直播管理
- 获取直播列表
- 批量查询指定直播间列表信息
- 获取班课列表
- 获取签到列表
- 获取签到学员列表
- 获取直播红包列表
- 获取红包领取记录
- 获取直播数据概览
- 获取直播详情
- 获取直播详情2.0
- 获取红包数据概况
- 获取直播间讨论区消息列表
- 获取直播间多段推流记录
- 创建直播
- 编辑直播
- 上架/下架直播
- 删除直播
- 获取直播间用户列表
- 商品管理
- 查询商品列表2.0
- 查询商品列表1.0
- 查询组合课资源列表4.0
- 查询组合课资源列表3.0
- 获取训练营营期任务
- 商品详情2.0
- 商品详情1.0
- 获取课程关联的助学工具
- 获取直播带货商品列表
- 获取实物商品评论列表
- 商品增加库存
- 商品减少库存
- 新建实物商品
- 编辑实物商品
- 删除实物商品
- 获取实物商品类目列表
- 获取C端搜索商品列表
- 商品分组管理
- 获取店铺商品分组列表
- 获取商品分组内商品列表
- 批量新建/更新商品分组
- 删除商品分组
- 素材管理
- 获取素材列表
- 获取素材分组列表
- 素材分组编辑
- 素材分组移动
- 素材分组删除
- 订单管理
- 获取订单列表2.0
- 获取订单详情2.0
- 获取订单列表1.1
- 获取订单列表1.0
- 查询用户订单列表
- 获取订单详情
- 获取买赠订单信息
- 待付款订单改价
- 获取售后订单列表
- 获取售后订单详情
- 订单退款
- 订购管理
- 用户开通产品包权益2.0
- 用户开通产品包权益
- 查询用户订购资源列表
- 用户购买关系查询
- 查询用户资源权益2.0
- 查询用户资源权益1.0
- 取消订购
- 批量开通用户产品包权益-创建任务
- 批量开通用户产品包权益-查询任务列表
- 批量开通用户产品包权益-查询任务详情
- 物流管理
- 普通实物单发货(即将下线)
- 获取物流公司信息列表
- 订单全部商品发货
- 订单部分商品发货
- 修改已发货订单的物流信息
- 获取运费模板列表
- 推广员管理
- 查询推广员列表
- 查询推广员客户列表
- 查询推广员的下级推广员列表
- 查询指定推广员的信息
- 查询客户所属推广员
- 查询推广员名下新增/过期客户
- 新增推广员
- 推广员绑定客户
- 修改/解除绑定关系
- 设置推广员上级
- 推广订单详情
- 按日期查询推广员的收益和新增加的下级
- 推广订单详情(支持购物车订单返回多条记录)
- 信息采集管理
- 获取信息采集列表
- 获取单个信息采集结果
- 获取用户信息采集结果
- 根据表单ID以及用户ID获取信息采集结果
- 营销码券管理
- 优惠券列表
- 获取优惠券详情2.0
- 获取优惠券详情
- 获取优惠券领券用户
- 发放优惠券2.0
- 发放优惠券
- 优惠券核销
- 获取优惠码列表
- 获取优惠码码库列表
- 获取优惠码效果数据
- 创建优惠码
- 优惠码添加库存
- 优惠码失效
- 编辑优惠码
- 优惠码删除
- 获取兑换码码库列表
- 追加兑换码库存
- 创建兑换码
- 编辑兑换码
- 兑换码失效
- 用户使用兑换码
- 获取兑换码批次列表
- 作废单个兑换码
- 积分管理
- 查询用户积分日志
- 获取单个用户积分信息
- 批量获取用户积分列表
- 获取店铺积分信息
- 批量发放积分
- 批量扣减积分
- 解冻冻结积分
- 设置店铺积分过期时间
- 业务类型说明
- 页面统计管理
- 新建页面统计
- 编辑页面统计
- 获取页面统计列表
- 获取页面统计详情
- 获取页面统计订单列表
- 新建投放渠道
- 获取投放渠道列表
- 打卡管理
- 获取打卡列表
- 获取打卡参与用户
- 获取指定学员活动日记列表
- 获取活动点赞列表
- 获取指定学员被点赞总数和列表
- 获取用户日记被点评/评论列表
- 获取指定打卡的作业列表
- 获取学员的打卡日记列表
- 获取打卡关联的课程信息
- 练习管理
- 获取练习基本信息列表
- 获取练习结果列表
- 获取练习详情
- 获取学员练习答题详情
- 作业管理
- 获取作业本列表
- 获取作业基本信息列表
- 获取作业结果列表
- 获取作业详情
- 获取学员作业答题详情
- 圈子管理
- 获取用户参与的圈子
- 考试管理
- 获取考试列表
- 获取考试详情
- 获取考试结果列表信息
- 获取考试结果详细信息
- 活动管理
- 获取活动列表
- 获取签到列表
- 获取活动报名列表
- 获取活动签到信息
- 组织管理
- 获取员工列表
- 获取员工详细信息
- 添加或者保存员工信息
- 启用员工
- 停用员工
- 删除员工
- 根据员工账号获取用户ID
- 获取组织结构树
- 添加或修改组织架构
- 移除组织架构
- 微页面管理
- 获取微页面列表
- 企学院专用(不对外开放)
- 学员管理(限企学院)
- 企学院获取学员列表
- 企学院添加学员
- 企学院修改学员
- 企学院删除学员
- 企学院添加组织架构
- 企学院删除组织架构
- 企学院编辑组织架构
- 企学院获取组织架构
- 企学院获取部门信息
- 活动管理(限企学院)
- 企学院用户签到活动列表
- 培训计划管理(限企学院)
- 获取培训计划列表
- 获取培训计划详情
- 获取用户培训学习数据
- 获取员工的培训计划列表
- 常见问题
- 问题汇总
- 问题反馈
