**下载并载入SDK到项目中** -- **方法`A`** 使用 [Composer](https://getcomposer.org) 下载安装,`SDK`符合`PSR`标准**(推荐)**。 --- >1. 用`composer`来下载安装`SDK`,需要确定框架会不会自动加载`vendor/autoload.php`文件 >2. 如果框架不能自动`vendor/autoload.php`,那么可以在项目中手动加载`vendor/autoload.php`文件 ``` // 使用命名行下载SDK文件 composer require zoujingli/wechat-php-sdk //在项目合适的地方向SDK注入配置参数(字段见下面) \Wechat\Loader::config($options); // 实例SDK相关的操作对象 $pay = new \Wechat\WechatPay(); ``` **方法`B`** 普通文件加载(需要独立加载`\Wechat\Loader.php`文件) --- >1. 首先通过 [Github](https://github.com/zoujingli/wechat-php-sdk) 或 [OSChina](http://git.oschina.net/zoujingli/wechat-php-sdk) 下载最新的微信SDK源代码 >2. 在项目中引入`include.php`是一个自动注册类加载的文件,功能与 [Composer](https://getcomposer.org) 类似。 ``` // 引入SDK加载注册文件 include "zoujingli/wechat-php-sdk/include.php" //在项目合适的地方向SDK注入配置参数(字段见下面) \Wechat\Loader::config($options); // 实例SDK相关的操作对象 $pay = new \Wechat\WechatPay(); ... ``` **微信SDK所需要的参数** -- 使用前,需要准备好SDK的配置参数 --- ``` $options = array( 'token' => '', // 填写你设定的key 'appid' => '', // 填写高级调用功能的app id, 请在微信开发模式后台查询 'appsecret' => '', // 填写高级调用功能的密钥 'encodingaeskey' => '', // 填写加密用的EncodingAESKey(可选,接口传输选择加密时必需) 'mch_id' => '', // 微信支付,商户ID(可选) 'partnerkey' => '', // 微信支付,密钥(可选) 'ssl_cer' => '', // 微信支付,证书cert的路径(可选,操作退款或打款时必需) 'ssl_key' => '', // 微信支付,证书key的路径(可选,操作退款或打款时必需) 'cachepath' => '', // 设置SDK缓存目录(可选,默认位置在./src/Cache下,请保证写权限) ); ``` **微信SDK实例的几种方法** -- * 如:微信支付接口实例 ```php // 实例方法一 (在IDE工具上没有SDK方法的提示) $pay = & \Wechat\Loader::get('Pay',$options); // 实例方法二 (在IDE工具上没有SDK方法的提示) \Wechat\Loader::config($options); // 在项目合适的地方向SDK注入配置参数(字段见上面) $pay = & \Wechat\Loader::get('Pay'); // 这行可以在任何地方New,IDE会带提示功能哦 // 实例方法三 (在IDE工具上有SDK方法的提示) $pay = new \Wechat\WechatPay($options); // 实例方法四 (在IDE工具有SDK方法的提示) \Wechat\Loader::config($options); // 在项目合适的地方向SDK注入配置参数(字段见上面) $pay = new \Wehcat\WechatPay(); // 这行可以在任何地方New,IDE会带提示功能哦 ``` * 如:微信菜单接口实例 ```php // 实例方法一 (在IDE工具上没有SDK方法的提示) $menu = & \Wechat\Loader::get('Menu',$options); // 实例方法二 (在IDE工具上没有SDK方法的提示) \Wechat\Loader::config($options); // 在项目合适的地方向SDK注入配置参数(字段见上面) $menu = & \Wechat\Loader::get('Menu'); // 这行可以在任何地方New,IDE会带提示功能哦 // 实例方法三 (在IDE工具上有SDK方法的提示) $menu = new \Wechat\WechatMenu($options); // 实例方法四 (在IDE工具有SDK方法的提示) \Wechat\Loader::config($options); // 在项目合适的地方向SDK注入配置参数(字段见上面) $menu = new \Wehcat\WechatMenu(); // 这行可以在任何地方New,IDE会带提示功能哦 ``` **我们建议在项目中放置这样的函数,方便加载SDK对象** --- * 下面是`load_wechat`助手函数标准代码,请根据自己项目的情况动态读取微信配置参数 ``` /** * 获取微信操作对象(单例模式) * @staticvar array $wechat 静态对象缓存对象 * @param type $type 接口名称 ( Card|Custom|Device|Extend|Media|Oauth|Pay|Receive|Script|User ) * @return \Wehcat\WechatReceive 返回接口对接 */ function & load_wechat($type = '') { static $wechat = array(); $index = md5(strtolower($type)); if (!isset($wechat[$index])) { // 定义微信公众号配置参数(这里是可以从数据库读取的哦) $options = array( 'token' => '', // 填写你设定的key 'appid' => '', // 填写高级调用功能的app id, 请在微信开发模式后台查询 'appsecret' => '', // 填写高级调用功能的密钥 'encodingaeskey' => '', // 填写加密用的EncodingAESKey(可选,接口传输选择加密时必需) 'mch_id' => '', // 微信支付,商户ID(可选) 'partnerkey' => '', // 微信支付,密钥(可选) 'ssl_cer' => '', // 微信支付,双向证书(可选,操作退款或打款时必需) 'ssl_key' => '', // 微信支付,双向证书(可选,操作退款或打款时必需) 'cachepath' => '', // 设置SDK缓存目录(可选,默认位置在Wechat/Cache下,请保证写权限) ); \Wechat\Loader::config($options); $wechat[$index] = \Wechat\Loader::get($type); } return $wechat[$index]; } ``` 这样我们就不用管什么配置参数了,单例模式加载,省心省力。^_^ ---- * 获取粉丝列表 ``` // 加载SDK对象 $user = & load_wechat('User'); // 读取调用接口,读取微信官方粉丝列表 $result = $user->getUserList(); // 接口异常的处理 if ($result === FALSE) { echo $user->errMsg; echo $user->errCode; } else { // 接口正常的处理 } ``` * 读取单个粉丝的信息 ``` // 加载SDK对象 $user = & load_wechat('User'); // 读取调用接口,读取微信粉丝信息,需要传入粉丝的openid $result = $user->getUserInfo($openid); // 接口异常的处理 if ($result === FALSE) { echo $user->errMsg; echo $user->errCode; } else { // 接口正常的处理 } ``` * 所有接口实例以此类推,方法一致。 想了解更多关于SDK的功能,请阅读下面的章节。 有什么不明白地方,可以阅读对应的源代码,相信代码这代码也是一种不错的表达试。 当然,我们也欢乐您在下面提出您的疑问。 ``` // 微信多客服接口 $custom = & load_wechat('Custom'); // 微信周边设备接口 $device = & load_wechat('Device'); // 微信其它工具接口 $extends = & load_wechat('Extends'); // 微信媒体素材接口 $media = & load_wechat('Media'); // 微信菜单操作接口 $menu = & load_wechat('Menu'); // 微信网页授权接口 $oauth = & load_wechat('Oauth'); // 微信支付相关接口 $pay = & load_wechat('Pay'); // 微信被动消息处理SDK $receive = & load_wechat('Receive'); // 微信网页脚本工具 $script = & load_wechat('Script'); // 微信粉丝操作接口 $user = & load_wechat('User'); ```