# 网站应用调用 PC 微信能力
# 1、功能介绍
考虑到部分场景下网站应用需要使用 PC 微信能力来承载服务,为此提供 PC OpenSDK ,支持网站应用调用 PC 微信的能力。
# 2、准备工作
在进行网站应用接口调用之前,需在微信开放平台注册开发者账号,拥有一个已审核通过的网站应用,配置业务域名,并开通能力权限(拉起 PC 小程序、分享 PC 小程序),获得相应的 AppID 和 AppSecret,可开始接入流程。
# 3、接口调用流程说明
请在已申请网站应用、已获取 access_token 的情况下,按照如下流程调用网站应用接口。
# 第一步:获取 ticket
第三方使用网站应用接口前需提前获取 ticket。请在业务后台向微信后台 POST 请求以下地址(补充 access_token):
https://api.weixin.qq.com/cgi-bin/pcopensdk/ticket?access_token=TOKEN
请求 body 格式为 JSON。PC OpenSDK 场景,固定为:
{"ticket_type": "pcopensdk"}
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
ticket_type | 是 | 授权的票据类型,此处固定为"pcopensdk" |
返回说明
返回结果 | 说明 |
---|---|
ticket | 获取到的一次性接口调用票据,5 分钟内有效,仅可调用一次网站应用接口 |
# 第二步:在页面内嵌入 OpenSDK
在应用 appid 所属的网页中,通过 script 标签引用如下 JS 文件(需 https):
https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxopensdk.js
注意事项:
- PC OpenSDK 的技术实现需嵌入一个 https://open.weixin.qq.com 源的 iframe,请确保 frame-src 等设置满足要求。
- 请确保没有开启全局代理配置,否则可能会导致接口调用失败。
- 微信侧会检测发起对 http 请求的进程信息及其签名,如发起请求的进程无签名,会被拦截。
# 第三步:调用网页 OpenSDK 接口
获取到 ticket 后,携带 ticket 参数,调用 wxopensdk 下挂载的方法发起拉起请求。 此处需等待 wxopensdk 加载完成再发起请求。此处使用拉起 PC 小程序能力进行举例:
function dosomething() {
wxopensdk.launchMiniProgram({
appid: "网站应用appid",
userName: "需拉起的小程序 userName",
path: "",
ticket: "申请到的 ticket",
});
}
if (wxopensdk.ready) {
dosomething();
} else {
wxopensdk.onReady = dosomething;
}
# 4、接口说明
# 返回值格式定义
接口均会返回 Promise,Promise 对象中包含以下参数:
名称 | 类型 | 说明 |
---|---|---|
errcode | number | 错误码 |
errmsg | string | 错误说明 |
actionId | string | 当次接口调用的操作 id,可辅助进行问题定位 |
# errcode 说明
code | 描述 |
---|---|
0 | 正常触发操作 |
1 | 当前 sdk 运行环境不合法 |
2 | 网络错误 |
3 | ticket 错误 |
4 | 请求参数格式错误 |
5 | 后台异常 |
6 | 操作超时 |
7 | 未知错误 |
8 | 超过频率限制 |
-11028 | 接口名错误 |
-11029 | ticket 错误 |
-11032 | 请求域名错误,请检查业务域名是否已在 open 登记 |
-11033 | 需要 https 页面 |
-11034 | 当前接口无权限,请检查是否已在 open 开通相关功能权限 |
-11035 | 当前接口请求类型错误 |
-11036 | 当前微信客户端版本不支持该接口 |
# 接口频率限制
PC OpenSDK 的所有接口,共享频率限制,以保障用户体验。目前限制规则:
- 每秒钟只允许调用 1 次 OpenSDK 接口。
- 每分钟内,只允许调用 5 次 OpenSDK 接口。
超过限制将会返回特定 errmsg。
# 微信未登录时的处理
PC OpenSDK 接口调用依赖支持该能力的微信版本已启动并且已登录。若不符合要求,PC OpenSDK 将会尝试通过 Scheme 拉起微信客户端,并且在 timeout
参数所规定的时间内持续尝试调用接口。
- PC OpenSDK 通过 Scheme 来拉起微信客户端,在标准浏览器中会出现浏览器的弹窗,且可能要求操作由用户交互发起才可弹窗。
- 可以通过设置
timeout
参数的值来控制尝试时间。特别地,如将timeout
设置为 0,则不会尝试拉起微信客户端,会在初次尝试连接微信失败后返回超时的错误信息。注意,timeout
参数只影响微信未登录时的尝试时间。如支持该能力的微信版本已启动并且已登录不会受该参数的影响。
# 常见问题
Q:PC OpenSDK 是否支持旧版本浏览器?
A:PC OpenSDK 为 ES5 语法的 JavaScript 代码,理论支持 ES5 及以上的 web 环境。
Q:我是原生应用,没有 WebView 环境,能否调用 PC OpenSDK?
A:PC OpenSDK 需要在 WebView 环境中运行,暂不支持纯原生应用。
Q:我在本地调试应用时发现无法连接到微信,会是什么原因?
A:微信侧会检测发起对 http 请求的进程信息及其签名,如发起请求的进程无签名,会被拦截。请给应用增加签名后再测试。
Q:用户同时登录多个微信帐号时,PC OpenSDK 会如何处理?
A:微信侧并未支持过同设备登录多个微信。如用户在一台 PC 设备登录了多个微信,PC OpenSDK 会随机连接到其中一个实例。