**下载并载入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');
```