PHPackages                             lixuancn/lanewechat - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. lixuancn/lanewechat

ActiveLibrary[Framework](/categories/framework)

lixuancn/lanewechat
===================

LaneWeChat is WeChat development package for PHP,这是一个为快速开发微信应用而生的PHP框架。将微信的开发者功能根据文档进行了封装。为了快速开发的目的，开发者完全不需要要知道具体是如何实现的，只需要简单的调用方法即可

v1.5.3(10y ago)1.4k6.7k559[1 issues](https://github.com/lixuancn/LaneWeChat/issues)DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSEPHPPHP &gt;=5.3.0

Since Oct 21Pushed 8y ago175 watchersCompare

[ Source](https://github.com/lixuancn/LaneWeChat)[ Packagist](https://packagist.org/packages/lixuancn/lanewechat)[ Docs](http://lanewechat.lanecn.com)[ RSS](/packages/lixuancn-lanewechat/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

框架名称：LaneWeChat

框架简介：这是一个为快速开发微信应用而生的PHP框架。将微信的开发者功能根据文档进行了封装。为了快速开发的目的，开发者完全不需要要知道具体是如何实现的，只需要简单的调用方法即可

开发语言：PHP

版本要求：原则PHP5.3以上

版本规避：若版本低于PHP5.3，则删除本框架所有页面开头“namespace”的行、删除本框架中所有的“use LaneWeChat”开头的行，删除“LaneWeChat\\Core”，修改Autoloader::NAMESPACE\_PREFIX=''，修改curl.lib.php的\\Exception为Exception即可。

命名空间：本框架的命名空间均为LaneWeChat开头。

开源协议：Do What The Fuck You Want To Public License

开发者博客：

文档地址：[](http://lanewechat.lanecn.com/)

更新日志：

```
2016-05-05 1.5.4

    1、接收数据方式由HTTP_RAW_POST_DATA替换为php://input. HTTP_RAW_POST_DATA在PHP5.6以后就不再推荐使用.

2016-04-26 1.5.4

    1、新增生成个性化菜单方法Menu::setPersonalMenuJson($menuListJson)

    2、新增生成默认菜单方法Menu::setMenuJson($menuListJson)，与原生成默认菜单函数Menu::setMenu($menuList)，此函数参数是json字符串

    3、新增Environment类, isSae($appname,$accesskey)方法判断所在环境是否是SAE平台。

    4、外部类调用的入口，一定是getAccessToken()，所以进入此方法后调用Environment::isSae($appname,$accesskey)判断平台属性，若不是SAE，逻辑不变原用户不受影响，否则根据SAE环境执行不同的获取token的方法。

    5、新增AccessToken::_getSae()方法，在SAE平台上根据条件的不同,选择从memcache/文件/数据库中读取access_token.

    6、新增AccessToken::_getFromMemcache()方法，在SAE平台上从memcache中读取access_token。

    7、新增AccessToken::_getFromFile()方法，从文件中读取access_token。
        1) 在获取access_token的过程中需要调用私有方法_existsToken(),_expriseToken()
        2) 此方法在其他平台上的可写目录中可以正常执行,因为SAE平台不支持本地创建/写文件,可通过改写此方法在SAE的storage中创建/读/写文件,
        个人感觉任何缓存、中间临时交换数据的需求都是不适合使用Storage和KVDB存储的,所以没有添加相关的方法实现(有什么理解不对的请指出)。

    8、改写WechatRequest::eventQrsceneSubscribe方法，用户在扫描带参数二维码之后，可根据所带参数实现对用户自动分组的功能

1、修复主动响应的BUG，感谢 晨露微凉 反馈。

2015-10-21 1.5.3

    1、文件上传根据PHP版本增加了CURLFile()类。自PHP5.5以后，废弃了“@文件名”的方式上传文件

2015-06-29 1.5.2

    1、在主动发消息模块（responseinitiative.lib.php）pic_url 和 url赋值反了。

2015-04-29 1.5.1

    1、新增获取微信服务器IP列表接口。如果需要安全性校验，可以每次判断请求的来源IP。

    2、新增接收消息类型：小视频

    3、新增 模板消息-设置行业 和 模板消息-获取模板ID

    4、高级群发接口-根据分组群发 新增参数is_to_all，使用is_to_all为true且成功群发，会使得此次群发进入历史消息列表。

    5、新增 高级群发接口-预览接口【订阅号与服务号认证后均可用】 和 高级群发接口-查询群发消息发送状态【订阅号与服务号认证后均可用】

    6、新增 客服帐号管理-获取所有客服账号列表/添加客服账号/修改客服账号/删除客服账号/设置客服头像

    7、新增 自动回复-获取自动回复 接口

2014-12-04 1.4.2

    1、解决CURL的GET调用在php5.3以下时出现errno=60(CA证书无效)的BUG。（解决人：大志）

    2、文档、注释优化。（zhulin3141）

    3、实战演练 - 添加微信自定义菜单 文档场景描述错误

2014-11-05：1.4版本

    兼容性：
        设置菜单Menu::setMenu($menuList)参数结构和返回值重写，不向下兼容。
    根目录下新增lanewechat.php：
        在项目用需要使用本SDK的地方，只需要include 'lanewechat/lanewechat.php'，然后可以直接ClassName::method()调用即可。

    安全性升级：
        因为SSL爆出高危漏洞，公众平台在2014.11.30起，将关闭SSLv2，SSLv3版本的支持。根据官方实例，LaneWeChat的CURL类中也将使用curl_setopt($curl, CURLOPT_SSLVERSION, 1)

    新增消息体签名加解密验证（EncodingAESKey），默认为空，为空时微信公众号平台会自动生成。也可以开发者自行手动指定。

    新增语音消息识别

    新增高级群发接口：
        1 上传图文消息素材
        2 根据分组进行群发，可发送图文消息，文本消息，图片消息，语音消息，视频消息。
        3 根据OpenID列表群发，，可发送图文消息，文本消息，图片消息，语音消息，视频消息。
        4 删除群发
        5 事件推送群发结果

    新增模板消息接口：
        1、主动推送给用户模板消息的接口
        2、被动接收微信服务器发送的关于主动推送模板消息的结果通知。

    用户管理接口：
        1、新增设置备注名。开发者可以通过该接口对指定用户设置备注名，该接口暂时开放给微信认证的服务号。

    网页授权接口：
        注意：此access_token与基础支持的access_token不同。
        1、新增刷新access_token。由于access_token拥有较短的有效期，当access_token超时后，可以使用refresh_token进行刷新，refresh_token拥有较长的有效期（7天、30天、60天、90天），当refresh_token失效的后，需要用户重新授权。
        2、新增scope为snsapi_userinfo的模式下（会在网页弹出一个授权框），拉取用户信息的接口。
        3、新增检验授权凭证（access_token）是否有效接口

    新增多客服功能：
        1、新增将消息转发到多客服接口：在接收到用户发送的消息时，调用ResponsePassive::forwardToCustomService($fromusername, $tousername)，微信服务器在收到这条消息时，会把这次发送的消息转到多客服系统。用户被客服接入以后，客服关闭会话以前，处于会话过程中，用户发送的消息均会被直接转发至客服系统。
        2、新增获取客服聊天记录接口：在需要时，开发者可以通过获取客服聊天记录接口，获取多客服的会话记录，包括客服和用户会话的所有消息记录和会话的创建、关闭等操作记录。利用此接口可以开发如“消息记录”、“工作监控”、“客服绩效考核”等功能。

    自定义菜单：
        警告：设置菜单Menu::setMenu($menuList)参数结构和返回值重写，自1.4版本起不向下兼容。
        注意：所有新增的菜单类型，仅支持微信iPhone5.4.1以上版本，和Android5.4以上版本的微信用户，旧版本微信用户点击后将没有回应，开发者也不能正常接收到事件推送。
        1、新增“scancode_push：扫码推事件”类型菜单
            用户点击按钮后，微信客户端将调起扫一扫工具，完成扫码操作后显示扫描结果（如果是URL，将进入URL），且会将扫码的结果传给开发者，开发者可以下发消息。
        2、新增“scancode_waitmsg：扫码推事件且弹出‘消息接收中’提示框”类型菜单
            用户点击按钮后，微信客户端将调起扫一扫工具，完成扫码操作后，将扫码的结果传给开发者，同时收起扫一扫工具，然后弹出“消息接收中”提示框，随后可能会收到开发者下发的消息。
        3、新增“pic_sysphoto：弹出系统拍照发图”类型菜单
            用户点击按钮后，微信客户端将调起系统相机，完成拍照操作后，会将拍摄的相片发送给开发者，并推送事件给开发者，同时收起系统相机，随后可能会收到开发者下发的消息。
        4、新增“pic_photo_or_album：弹出拍照或者相册发图”类型菜单
            用户点击按钮后，微信客户端将弹出选择器供用户选择“拍照”或者“从手机相册选择”。用户选择后即走其他两种流程。
        5、新增“pic_weixin：弹出微信相册发图器”类型菜单
            用户点击按钮后，微信客户端将调起微信相册，完成选择操作后，将选择的相片发送给开发者的服务器，并推送事件给开发者，同时收起相册，随后可能会收到开发者下发的消息。
        6、新增“location_select：弹出地理位置选择器”类型菜单
            用户点击按钮后，微信客户端将调起地理位置选择工具，完成选择操作后，将选择的地理位置发送给开发者的服务器，同时收起位置选择工具，随后可能会收到开发者下发的消息。
        7、新增了以上6种菜单类型、view（点击跳转链接）的菜单类型的被动响应的支持。默认讲点击菜单的事件推送数据发送文本消息返回给用户。开发者请自行修改。

    新增语义理解接口
        1、如输入“查一下明天从北京到上海的南航机票”，类型为“flight,hotel”，则返回机票信息。

    新增推广支持：
        1、新增获取二维码接口。二维码分临时二维码和永久二维码。第一步先获取ticket，第二部是拿ticket获取二维码图片。二维码可以保存为文件，也可以展示预览。
        2、新增长链接转短链接接口。

    新增实例示范：
        1、被动响应用户 - 发送图文消息
        2、群发图文消息
        3、推送模板消息
        4、添加自定义菜单
        5、页面展示二维码

    关于获取用户信息的新亮点 - unionId：
        获取用户信息是根据openId获取，同一个微信用户对于不同的公众号，是不同的openId。那问题就来了，如果你有多个公众号，想要共享一份用户数据，可是同一个用户在不同的公众号是不同的openId，我们无法判断是否是同一个用户，现在微信引入了UnionId的概念。
        如果开发者有在多个公众号，或在公众号、移动应用之间统一用户帐号的需求，需要前往微信开放平台（open.weixin.qq.com）绑定公众号后，才可利用UnionID机制来满足上述需求。
        在绑定了公众号后，我们根据openId获取用户信息的时候，会新增一个字段“unionid”，只要是同一个用户，在不同的公众号用不同的openId获取用户信息的时候unionid是相同的。
        此功能不需要新增/修改代码，只需要在微信开放平台绑定公众号就可以了。仍旧使用获取用户信息接口UserManage::getUserInfo($openId);

2014-10-14：1.2.2版本。新增自动载入函数

2014-08-17：1.2版本。新增自定义菜单功能、新增多媒体上传下载功能。

2014-08-07：1.0版本

```

文档目录：

```
1、常识普及。

2、如何安装。

3、初出茅庐。

4、流程分析。

5、牛刀小试。

6、函数详解。

7、实例示范。

```

常识普及：

一、微信公众账号分两种，一种是订阅号，一种是服务号。

```
1、订阅号是被动响应用户消息功能，并且每天推送一条消息。

2、服务号是300元/每年认证，被动响应用户消息，主动给用户发送消息，自定义菜单按钮，网页授权等功能，并且每月推送一条消息。

3、订阅号适合消息类，新闻类应用，常常需要推送文章给用户的；服务号适合自助查询等。

4、订阅号被认证后也享用自定义菜单等功能，仍旧是300元/每年

```

二、专业术语：

```
1、OpenId：微信服务器并不会告诉公众号用户的微信ID，即使是你的关注者也不行，为了解决开发中唯一标识的问题，微信使用了OpenId，所谓的OpenId，就是用户和微信公众号之间的一种唯一关系。一个用户在一个公众号面前，享用唯一的OpenId，不会和别人重复。换言之，同一个用户在另一个公众号面前，是拥有另一个OpenId的。再直白些就是$openId = md5('用户微信ID+公众号ID')

2、Access_Token：此项只有认证号的功能才会使用的到，Access_token是一个授权标识，即一个授权验证码，一个标识10分钟内有效，10分钟的有效期内公众号的多个关注者可以使用同一个Access_Token。在使用主动给指定用户发送消息、自定义菜单、用户管理和用户组管理等功能的时候，每次操作需要给微信服务器以参数的形式附带Access_token。

3、Access_Token网页版：本Access_Token网页版授权时会使用到，和2中的Access_Toekn是不同的东西，不过使用我们的LaneWeChat微信快速开发框架是不需要了解这些的。Access_Token网页版是说在用户打开你的公众号提供的网页的时候，你的网页需要获取用户的OpenId、昵称、头像等信息的时候授权用的。同时，本Access_Token网页版有两种用法，一种是打开网页后弹出一个授权框，让用户点击是否授权，界面像主流的开放平台授权界面（比如QQ登陆某网站，支付宝账号登陆某网站等）；另一种是不需要弹出授权框仍旧可以获取用户信息，用法可以在实例中看到。

```

如何安装：

```
1、本框架以代码包的插件形式放在项目的目录中即可。调用时只需要include 'lanewechat/lanewechat.php'即可。如：
