# 微信JS-SDK集成文档 ## 🎯 项目概述 本文档介绍如何在智慧校园移动应用(mobile工程)中集成微信JS-SDK功能,实现微信浏览器内的原生功能调用。 ## 📋 技术架构 - **技术栈**: uni-app 2.x + Vue 2.6.14 + TypeScript + uview-ui 2.0.38 - **微信JS-SDK版本**: 1.6.0 - **支持平台**: H5(微信浏览器环境) - **集成方式**: 官方CDN + 本地工具类封装 ## 🚀 快速开始 ### 1. 前置条件 #### 1.1 微信公众平台配置 - 已认证的微信服务号 - 已配置JS接口安全域名 - 获取AppID和AppSecret #### 1.2 后端接口支持 确保后端已实现以下接口: ``` POST /system/wechat/config # 获取JS-SDK配置 POST /system/wechat/upload # 上传微信媒体文件 GET /system/wechat/download # 下载微信媒体文件 GET /system/wechat/userinfo # 获取微信用户信息 ``` ### 2. 项目文件结构 ``` mobile/ ├── public/ │ └── index.html # 已添加微信JS-SDK脚本引用 ├── src/ │ ├── api/ │ │ └── wechat.ts # 微信API接口定义 │ ├── utils/ │ │ └── wechat.js # 微信JS-SDK工具类 │ └── components/ │ └── WeChatDemo.vue # 功能演示组件 └── README-wechat-integration.md # 本文档 ``` ### 3. 基础使用示例 #### 3.1 在页面中使用微信SDK ```vue ``` ## 📚 API文档 ### 微信工具类 (wechat.js) #### 初始化方法 ##### `init(options)` 初始化微信JS-SDK配置 **参数:** - `options.url` (String, 可选): 当前页面URL,默认自动获取 - `options.jsApiList` (Array, 可选): 需要使用的API列表,默认使用全部 - `options.debug` (Boolean, 可选): 是否开启调试模式,默认根据环境 **返回:** Promise ```javascript await weChatSDK.init({ debug: false, jsApiList: ['chooseImage', 'scanQRCode'] }); ``` #### 环境检测方法 ##### `isWeChatBrowser()` 检查是否在微信浏览器中 **返回:** Boolean ##### `getCurrentUrl()` 获取当前页面URL(去除hash部分) **返回:** String #### 分享功能 ##### `shareTimeline(shareData)` 分享到朋友圈 **参数:** - `shareData.title` (String): 分享标题 - `shareData.link` (String): 分享链接 - `shareData.imgUrl` (String): 分享图标 ##### `shareAppMessage(shareData)` 分享给朋友 **参数:** - `shareData.title` (String): 分享标题 - `shareData.desc` (String): 分享描述 - `shareData.link` (String): 分享链接 - `shareData.imgUrl` (String): 分享图标 #### 扫码功能 ##### `scanQRCode(options)` 微信扫一扫 **参数:** - `options.needResult` (Number, 可选): 是否返回扫描结果,默认1 - `options.scanType` (Array, 可选): 扫码类型,默认['qrCode', 'barCode'] **返回:** Promise<{resultStr: string}> #### 图片功能 ##### `chooseImage(options)` 选择图片 **参数:** - `options.count` (Number, 可选): 图片数量,默认1 - `options.sizeType` (Array, 可选): 图片尺寸,默认['original', 'compressed'] - `options.sourceType` (Array, 可选): 图片来源,默认['album', 'camera'] **返回:** Promise<{localIds: string[]}> ##### `previewImage(options)` 预览图片 **参数:** - `options.current` (String): 当前显示图片的http链接 - `options.urls` (Array): 需要预览的图片http链接列表 #### 地理位置 ##### `getLocation(options)` 获取地理位置 **参数:** - `options.type` (String, 可选): 坐标类型,默认'gcj02' **返回:** Promise<{latitude: number, longitude: number, accuracy: number}> ##### `openLocation(location)` 打开地图 **参数:** - `location.latitude` (Number): 纬度 - `location.longitude` (Number): 经度 - `location.name` (String, 可选): 位置名称 - `location.address` (String, 可选): 地址详情 - `location.scale` (Number, 可选): 地图缩放级别,默认14 #### 设备信息 ##### `getNetworkType()` 获取网络状态 **返回:** Promise<{networkType: string}> #### 支付功能 ##### `chooseWXPay(payInfo)` 微信支付 **参数:** - `payInfo.timestamp` (String): 时间戳 - `payInfo.nonceStr` (String): 随机字符串 - `payInfo.package` (String): 订单详情扩展字符串 - `payInfo.signType` (String, 可选): 签名方式,默认'MD5' - `payInfo.paySign` (String): 签名 #### 其他功能 ##### `checkJsApi(jsApiList)` 检查当前客户端版本是否支持指定JS接口 ##### `closeWindow()` 关闭当前网页窗口 ### API接口 (wechat.ts) #### `getWeChatConfig(url: string)` 获取微信JS-SDK配置信息 #### `uploadWeChatMedia(mediaId: string, type: string)` 上传微信临时素材 #### `downloadWeChatMedia(mediaId: string)` 下载微信临时素材 #### `getWeChatUserInfo(code: string)` 获取微信用户信息 #### `createWeChatPay(orderData: any)` 生成微信支付订单 ## 🔧 配置说明 ### 1. 微信公众平台配置 1. 登录微信公众平台 2. 进入"设置" → "公众号设置" → "功能设置" 3. 配置"JS接口安全域名" 4. 填入你的网站域名(不需要协议头,不需要www) ### 2. 后端配置要求 后端需要实现微信JS-SDK配置接口,返回格式: ```json { "code": 200, "data": { "appId": "wx1234567890abcdef", "timestamp": 1640995200, "nonceStr": "Wm3WZYTPz0wzccnW", "signature": "0f9de62fce790f9a083d5c99e95740ceb90c27ed" }, "msg": "success" } ``` ### 3. 环境配置 确保项目配置文件中的API地址正确: ```javascript // mobile/src/common/config.js export const REQUEST_CONFIG = { baseURL: process.env.NODE_ENV === 'development' ? '/api' : '/prod-api' }; ``` ## 🎨 功能演示组件 项目提供了完整的功能演示组件 `WeChatDemo.vue`,包含: - ✅ 微信环境检测 - ✅ SDK初始化状态 - ✅ 分享功能(朋友圈/朋友) - ✅ 扫码功能 - ✅ 图片选择和预览 - ✅ 地理位置获取 - ✅ 设备信息查询 - ✅ 接口支持检查 使用方法: ```vue ``` ## 🚀 部署注意事项 ### 1. 域名配置 - 确保生产环境域名已在微信公众平台配置 - 域名必须通过ICP备案 - 支持绑定最多5个域名 ### 2. HTTPS要求 - 生产环境必须使用HTTPS协议 - 本地开发可以使用HTTP ### 3. 跨域处理 微信JS-SDK不存在跨域问题,但需要确保: - 配置获取接口可以正常访问 - 分享的链接在安全域名内 ## 🔍 调试指南 ### 1. 开启调试模式 ```javascript await weChatSDK.init({ debug: true // 开启调试模式 }); ``` ### 2. 常见问题排查 #### 问题1: invalid signature 签名失败 **原因:** 签名验证失败 **解决:** - 检查后端签名算法 - 确认URL参数正确(不包含#hash部分) - 验证时间戳和随机字符串 #### 问题2: permission denied 权限拒绝 **原因:** 接口未授权或不在jsApiList中 **解决:** - 确认服务号权限 - 检查jsApiList配置 - 验证config是否正确执行 #### 问题3: the permission value is offline verifying **原因:** config配置有误 **解决:** - 检查config参数完整性 - 确保在wx.ready回调中调用JSAPI - 验证jsApiList包含所需接口 ### 3. 调试工具 使用微信开发者工具进行调试: 1. 打开微信开发者工具 2. 新建项目,选择"网页" 3. 输入你的网站URL 4. 在控制台查看调试信息 ## 📱 兼容性说明 ### 支持的微信版本 - iOS: 6.0.2及以上 - Android: 6.0.2及以上 ### 支持的功能 - ✅ 基础分享功能 - ✅ 图像处理 - ✅ 地理位置 - ✅ 设备信息 - ✅ 扫一扫 - ✅ 微信支付 ### 平台限制 - 仅支持微信浏览器环境 - 部分接口需要服务号认证 - 支付功能需要开通微信支付 ## 🔗 相关资源 ### 官方文档 - [微信JS-SDK说明文档](https://developers.weixin.qq.com/doc/service/guide/h5/jssdk.html) - [微信公众平台](https://mp.weixin.qq.com/) ### 项目文档 - [移动端开发规范](../.cursor/cursorrules-mobile.md) - [API开发规范](../docs/开发文档/API/) - [项目部署文档](../docs/部署文档/) ## 📝 更新日志 ### v1.0.0 (2025-01-03) - ✅ 完成微信JS-SDK基础集成 - ✅ 实现常用API功能封装 - ✅ 创建功能演示组件 - ✅ 编写完整使用文档 --- **维护者**: 开发团队 **最后更新**: 2025-01-03 **文档版本**: v1.0.0