# wx_jssdk_node **Repository Path**: liunwcj/wx_jssdk_node ## Basic Information - **Project Name**: wx_jssdk_node - **Description**: wx_jssdk_node test - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-28 - **Last Updated**: 2025-10-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 微信测试号 JSSDK Node.js 示例项目 一个使用 Node.js(Express) 后端生成微信 JS-SDK 所需签名,前端集成并调试 JSSDK 的示例。 ## 功能 - 后端:获取 `access_token` 和 `jsapi_ticket`,生成 `timestamp`、`noncestr`、`signature` 等信息并返回接口。 - 前端:引入并初始化 JSSDK,演示 `updateAppMessageShareData`/`updateTimelineShareData` 分享能力。 - 完整错误处理与日志输出,方便调试。 ## 快速开始 1. 安装依赖 ```bash npm install ``` 2. 配置环境变量 - 将 `.env.example` 复制为 `.env` 并填写: - `WECHAT_APP_ID`:测试号的 AppID - `WECHAT_APP_SECRET`:测试号的 AppSecret - `PORT`:服务端口(默认 3000) 3. 启动服务 ```bash npm run dev ``` 访问 `http://localhost:3000` 查看示例页。 ## 配置微信测试号与安全域名 1. 登录微信公众平台测试号(微信开放平台提供的“[微信公众平台接口测试号](https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index)”)。 2. 在「接口权限」中,确保启用 JS 接口相关权限。 3. 在「设置 - 公众号设置 - 功能设置」中配置「JS接口安全域名」。 4. 可以使用本地IP地址:端口/localhost:端口作为安全域名。 5. 测试号二维码,微信扫描关注测试号,确保测试号已关注。 --- 以下方案待测试: - 需使用可公网访问的域名(不能使用 IP、localhost)。 - 开发本地服务时,可使用内网穿透获取临时域名,例如: - ngrok: `ngrok http 3000`(生成域名如 `https://xxx.ngrok.io`) - cloudflared: `cloudflared tunnel --url http://localhost:3000` - 将生成的域名(不含路径)添加到安全域名列表。 在微信内置浏览器中打开你的页面(例如 `https://xxx.ngrok.io/`)。JSSDK 只在微信环境下可用。 --- ## 接口说明 - `GET /api/wechat-signature?url=<页面URL>` - 参数:`url` 必填,需传入页面完整 URL(不含 `#`)。 - 返回:`appId`、`timestamp`、`nonceStr`、`signature`。 - 前端调用示例见 `public/index.html`。 ## 关键实现与错误处理 - 令牌与票据缓存:在内存中缓存 `access_token` 与 `jsapi_ticket`,并在过期前 200s 刷新,减少频繁调用。 - 错误分类: - `40013 invalid appid`:检查 `WECHAT_APP_ID` 是否正确。 - `40125 invalid appsecret`:检查 `WECHAT_APP_SECRET` 是否正确。 - `40164 invalid url domain`:当前页面域名未在「JS接口安全域名」中配置。 - `invalid signature`:签名字符串的 `url` 必须是当前页面完整 URL(不含 `#`),且与安全域名一致。 - JSSDK 调试:启用 `wx.config({ debug: true })` 输出详细日志;结合前端 `wx.error` 捕获错误。 ## 常见问题与解决方案 - 页面在 PC 浏览器打开,`wx` 不可用:JSSDK 只能在微信内使用,请在手机微信打开。 - 域名已配置但仍报错: - 确认你的访问 URL 与配置的安全域名匹配(含协议 https)。 - 若使用内网穿透,检查生成的域名是否稳定;更换新的域名后需重新配置。 - 签名不一致:确保后端签名使用的 `url` 与前端实际使用的 URL 完全一致(去掉 `#` 部分)。 - 分享菜单未出现:部分接口在某些场景不可用;先用 `wx.checkJsApi` 检查支持情况,确保在 `wx.ready` 后调用。 ## 目录结构 ``` wx_jssdk_node/ ├── .env.example ├── package.json ├── README.md ├── src/ │ ├── config.js │ ├── server.js │ └── wechat.js └── public/ └── index.html ``` ## 进一步扩展 - 自定义缓存(Redis/文件级)以支持多实例部署。 - 增加更多 JSSDK 示例:图像接口、地理位置接口、支付(需开通权限)。 - 加入统一日志与监控,提升可观测性。 ## 参考 - [微信公众平台 JS-SDK 文档](https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html) - [微信公众平台](https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login)