{"id":17238198,"url":"https://github.com/zxlie/weixinapi","last_synced_at":"2025-05-15T13:06:18.234Z","repository":{"id":16352757,"uuid":"19102739","full_name":"zxlie/WeixinApi","owner":"zxlie","description":"专门用于微信公众平台的Javascript API","archived":false,"fork":false,"pushed_at":"2019-04-18T04:08:00.000Z","size":182,"stargazers_count":2204,"open_issues_count":29,"forks_count":757,"subscribers_count":244,"default_branch":"master","last_synced_at":"2025-05-15T00:22:36.436Z","etag":null,"topics":["javascript","weixinapi"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zxlie.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-04-24T09:20:17.000Z","updated_at":"2025-04-04T13:06:07.000Z","dependencies_parsed_at":"2022-08-30T20:01:10.948Z","dependency_job_id":null,"html_url":"https://github.com/zxlie/WeixinApi","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zxlie%2FWeixinApi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zxlie%2FWeixinApi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zxlie%2FWeixinApi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zxlie%2FWeixinApi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zxlie","download_url":"https://codeload.github.com/zxlie/WeixinApi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254346624,"owners_count":22055808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["javascript","weixinapi"],"created_at":"2024-10-15T05:44:53.818Z","updated_at":"2025-05-15T13:06:18.183Z","avatar_url":"https://github.com/zxlie.png","language":"JavaScript","readme":"微信公众平台Js API（WeixinApi）\n=======================================\n\n## 关于WeixinApi\n### 1、WeixinApi为何诞生\n以前顺便玩儿了下微信公众账号，做Web前端开发的，都对页面脚本充满好奇，所以研究了下，放到[`Blog`](http://www.baidufe.com)上，\n也正因为微信官方一直没有放出正式的Api提供给用户来用，所以大量的用户到我blog上去询问`WeixinJSBridge`相关的技术点，索性我就整理了一下，\n起个名字叫`WeixinApi`开源到github来，提供给大家使用！\n\n### 2、免责声明\n此Api为`非官方`版，由于官方的限制，继续使用此Api还有可能会出现一些意向不到的问题，一切后果请自行承担！\n\n### 3、WeixinApi可能停止更新\n目前官方已经出了正式版本的SDK，详情可见[微信JS-SDK说明文档](http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html),\n所以大家还是尽早迁移到官方版本吧，这对大家来说是好事，以后出什么问题，官方渠道应该都会第一时间给出解决方案，稳定很多，也不至于经常被黑！\n本API可能以后就不会频繁更新了，各位知晓！\n\n## 目录\n* [快速使用](#user-content-快速使用)\n* [详细Api列表](#user-content-详细api列表)\n    * [1、初始化等待分享](#user-content-1初始化等待分享)\n    * [2、隐藏右上角option menu入口](#user-content-2隐藏右上角option-menu入口)\n    * [3、隐藏底部工具栏](#user-content-3隐藏底部工具栏)\n    * [4、获取当前的网络类型](#user-content-4获取当前的网络类型)\n    * [5、调起客户端图片播放组件](#user-content-5调起客户端图片播放组件)\n    * [6、关掉当前微信公众页面窗口](#user-content-6关掉当前微信公众页面窗口)\n    * [7、判断当前网页是否在微信内置浏览器中打开](#user-content-7判断当前网页是否在微信内置浏览器中打开)\n    * [8、开启WeixinApi的错误监控](#user-content-8开启weixinapi的错误监控)\n    * [9、发送电子邮件](#user-content-9发送电子邮件)\n    * [10、禁止用户分享](#user-content-10禁止用户分享)\n* [常见问题](#user-content-常见问题)\n* [其他](#user-content-其他)\n\n你可以用微信的“扫一扫”来打开下面这个二维码体验一下：\n\n![Weixin Api Demo](/img/2014-06-14_3.47.02.png)\n\n## 快速使用\n```javascript\n// 定义微信分享的数据\nvar wxData = {\n    \"appId\": \"\", // 服务号可以填写appId\n    \"imgUrl\" : 'http://photocdn.sohu.com/20130122/Img364302298.jpg',\n    \"link\" : 'http://www.baidufe.com',\n    \"desc\" : '使用警告：此Api非官方版本，请各位尽量将分享功能迁移至腾讯官方版，会更稳定些！',\n    \"title\" : \"欢迎使用WeixinApi\"\n};\n\n// 分享的回调\nvar wxCallbacks = {\n    // 收藏操作是否触发回调，默认是开启的\n    favorite : false,\n\n    // 分享操作开始之前\n    ready : function() {\n        // 你可以在这里对分享的数据进行重组\n        alert(\"准备分享\");\n    },\n    // 分享被用户自动取消\n    cancel : function(resp) {\n        // 你可以在你的页面上给用户一个小Tip，为什么要取消呢？\n        alert(\"分享被取消，msg=\" + resp.err_msg);\n    },\n    // 分享失败了\n    fail : function(resp) {\n        // 分享失败了，是不是可以告诉用户：不要紧，可能是网络问题，一会儿再试试？\n        alert(\"分享失败，msg=\" + resp.err_msg);\n    },\n    // 分享成功\n    confirm : function(resp) {\n        // 分享成功了，我们是不是可以做一些分享统计呢？\n        alert(\"分享成功，msg=\" + resp.err_msg);\n    },\n    // 整个分享过程结束\n    all : function(resp,shareTo) {\n        // 如果你做的是一个鼓励用户进行分享的产品，在这里是不是可以给用户一些反馈了？\n        alert(\"分享\" + (shareTo ? \"到\" + shareTo : \"\") + \"结束，msg=\" + resp.err_msg);\n    }\n};\n// 自定义分享到：微信好友、朋友圈、腾讯微博、QQ好友\nWeixinApi.share(wxData,wxCallbacks);\n```\n\n可下载源码，部署sample/sample-new.html进行测试\n\n## 详细Api列表\n使用起来比较简单，具体可参考sample/sample-normal.html中的实现\n\n### 1、初始化等待分享\n```javascript\n// 开发阶段，开启WeixinApi的调试模式\nWeixinApi.enableDebugMode();\n\n// 初始化WeixinApi，等待分享\nWeixinApi.ready(function(Api) {\n\n    // 微信分享的数据\n    var wxData = {\n        \"appId\": \"\", // 服务号可以填写appId\n        \"imgUrl\" : 'http://www.baidufe.com/fe/blog/static/img/weixin-qrcode-2.jpg',\n        \"link\" : 'http://www.baidufe.com',\n        \"desc\" : '使用警告：此Api非官方版本，请各位尽量将分享功能迁移至腾讯官方版，会更稳定些！',\n        \"title\" : \"欢迎使用WeixinApi\"\n    };\n\n    // 分享的回调\n    var wxCallbacks = {\n        // 收藏操作不执行回调，默认是开启(true)的\n        favorite : false,\n\n        // 分享操作开始之前\n        ready : function() {\n            // 你可以在这里对分享的数据进行重组\n            alert(\"准备分享\");\n        },\n        // 分享被用户自动取消\n        cancel : function(resp) {\n            // 你可以在你的页面上给用户一个小Tip，为什么要取消呢？\n            alert(\"分享被取消，msg=\" + resp.err_msg);\n        },\n        // 分享失败了\n        fail : function(resp) {\n            // 分享失败了，是不是可以告诉用户：不要紧，可能是网络问题，一会儿再试试？\n            alert(\"分享失败，msg=\" + resp.err_msg);\n        },\n        // 分享成功\n        confirm : function(resp) {\n            // 分享成功了，我们是不是可以做一些分享统计呢？\n            alert(\"分享成功，msg=\" + resp.err_msg);\n        },\n        // 整个分享过程结束\n        all : function(resp,shareTo) {\n            // 如果你做的是一个鼓励用户进行分享的产品，在这里是不是可以给用户一些反馈了？\n            alert(\"分享\" + (shareTo ? \"到\" + shareTo : \"\") + \"结束，msg=\" + resp.err_msg);\n        }\n    };\n\n    // 用户点开右上角popup菜单后，点击分享给好友，会执行下面这个代码\n    Api.shareToFriend(wxData, wxCallbacks);\n\n    // 点击分享到朋友圈，会执行下面这个代码\n    Api.shareToTimeline(wxData, wxCallbacks);\n\n    // 点击分享到腾讯微博，会执行下面这个代码\n    Api.shareToWeibo(wxData, wxCallbacks);\n\n    // iOS上，可以直接调用这个API进行分享，一句话搞定\n    Api.generalShare(wxData,wxCallbacks);\n});\n```\n\n可能有的朋友不知道appId从哪儿获取，请看这里：[如何获取appId](http://jingyan.baidu.com/article/6525d4b12af618ac7c2e9468.html)\n\n**分享的数据可以动态修改：**\n\n* 普通模式分享：分享的数据是固定的，代码请参考 [sample/sample-normal.html](https://github.com/zxlie/WeixinApi/blob/master/sample/sample-normal.html)\n* 异步模式分享：分享的数据是可以被动态修改的，代码请参考 [sample/sample-async.html](https://github.com/zxlie/WeixinApi/blob/master/sample/sample-async.html)\n\n\n### 2、隐藏右上角option menu入口\n```javascript\nWeixinApi.ready(function(Api) {\n\t// 隐藏\n\tApi.hideOptionMenu();\n\t\n\t// 显示\n\t// Api.showOptionMenu();\n});\n```\n\n### 3、隐藏底部工具栏\n```javascript\nWeixinApi.ready(function(Api) {\n\t// 隐藏\n\tApi.hideToolbar();\n\t\n\t// 显示\n\t// Api.showToolbar();\n});\n```\n\n### 4、获取当前的网络类型\n```javascript\nWeixinApi.ready(function(Api) {\n\tApi.getNetworkType(function(network){\n\t\t/**\n\t\t * network取值：\n\t\t *\n\t\t * network_type:wifi     wifi网络\n\t     * network_type:edge     非wifi,包含3G/2G\n\t     * network_type:fail     网络断开连接\n\t     * network_type:wwan     2g或者3g\n\t     */\n\t});\n});\n```\n\n### 5、调起客户端图片播放组件\n```javascript\nWeixinApi.ready(function(Api) {\n\t// 需要播放的图片src list\n\tvar srcList = [src1, src2, ..., srcN];\n\t// 选一个作为当前需要展示的图片src\n\tvar curSrc = src1;\n\t// 调起\n\tApi.imagePreview(curSrc, srcList);\n});\n```\n\n调起客户端图片播放组件，还有一种更屌的方法，不需要依赖这个WeixinApi，直接a标签实现就行，具体格式：\n\n\n\t\u003ca href=\"weixin://viewimage/`YourImageURL`\"\u003eAnyThing\u003c/a\u003e\n\n\n我们可以用A标签来嵌套这个img，具体Demo如下：\n\n```html\n\u003ca href=\"weixin://viewimage/http://www.baidu.com/img/bdlogo.gif\"\u003e\n\t\u003cimg src=\"http://www.baidu.com/img/bdlogo.gif\"\u003e\n\u003c/a\u003e\n\u003ca href=\"weixin://viewimage/http://tb2.bdstatic.com/tb/static-common/img/search_logo_big_6a13b553.gif\"\u003e\n\t\u003cimg src=\"http://tb2.bdstatic.com/tb/static-common/img/search_logo_big_6a13b553.gif\"\u003e\n\u003c/a\u003e\n```\n\n### 6、关掉当前微信公众页面窗口\n```javascript\nWeixinApi.ready(function(Api) {\t\n\t// 关闭窗口\n    WeixinApi.closeWindow({\n        success : function(resp){\n            alert('关闭窗口成功！');\n        },\n        fail : function(resp){\n            alert('关闭窗口失败');\n        }\n    });\n});\n```\n\n### 7、判断当前网页是否在微信内置浏览器中打开\n```javascript\n\n\t// true or false\n\tvar flag = WeixinApi.openInWeixin();\n\n```\n\n### 8、开启WeixinApi的错误监控\n注意，这句代码务必放在WeixinApi.ready之前；上线的时候，根据实际需要，可删掉它\n\n```javascript\n// 方法1：不带任何参数，将以alert方式提示出错信息\nWeixinApi.enableDebugMode();\n\n// 方法2：给一个callback，自己处理错误信息\nWeixinApi.enableDebugMode(function(errObj){\n    // errObj = {\n    //     message : errorMessage,\n    //     script : scriptURI,\n    //     line : lineNumber,\n    //     column : columnNumber\n    // }\n});\n\n// 当然，你还可以做一件事：把这些错误信息上报到服务器\n```\n\n### 9、发送电子邮件\n```javascript\nWeixinApi.sendEmail({\n    subject : '邮件标题',\n    body : '邮件正文'\n},function(resp){\n    // 注意这里可不要轻易alert，会卡死的。。。\n});\n```\n\n### 10、禁止用户分享\n```javascript\n// 先对Api进行初始化\nWeixinApi.ready(function(Api) {\n    // 禁止分享\n    Api.disabledShare(function(){\n        alert('当前页面禁止分享！');\n    });\n});\n```\n\n代码请参考 [sample/sample-normal.html](https://github.com/zxlie/WeixinApi/blob/master/sample/sample-disable.html)\n\n## 常见问题\n### 1、用了这个API怎么没生效\n如果遇到这种情况，请先回到这里，扫描最上面的 [二维码](#user-content-api能实现什么) Demo，首先验证Demo是否能运行正确；然后再参照demo.html调整自己的代码：\n\n* 1）、`WeixinApi.js`路径是否引用正确\n* 2）、`WeixinApi.ready`是否正确执行了？（可以在里面加一个alert，简单粗暴可依赖）\n* 3）、开启`WeixinApi.enableDebugMode`方便问题定位\n\n### 2、Android上取消分享依然提示成功\n传送门：[为什么分享到朋友圈，取消了依然提示成功？](http://www.baidufe.com/item/4bdcde11a024c63df3af.html)\n\n### 3、想自己做一个按钮直接分享\n就我目前了解到的情况来看，是行不通的，官方都有做权限控制，感兴趣可以到这里[去翻一下评论](http://www.baidufe.com/item/f07a3be0b23b4c9606bb.html#content)\n\n### 4、怎样动态修改分享的信息：wxData\n用到Api提供的`async:true`配置，具体可阅读[这里的使用介绍](http://www.baidufe.com/item/f07a3be0b23b4c9606bb.html)\n\n### 5、收藏的时候为什么也执行分享的回调了？\n请在wxCallbacks中设置`favorite:false`，关闭收藏操作的callback\n\n## 其他\n### 1、更多互动\n详细的使用场景，还可以到这里获取：http://www.baidufe.com/item/f07a3be0b23b4c9606bb.html\n\n注意：这只是发烧版本，非微信官方出品！有问题可大家一起来讨论，我很乐意与大家一起来完善这个API。\n\n\n### 3、如果你觉得这个Api对你有用：\n![alien-alipay-qrcode-256.png](/img/2014-11-03_21-19-40_5.png)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzxlie%2Fweixinapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzxlie%2Fweixinapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzxlie%2Fweixinapi/lists"}