**下載并載入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');
```
- 0.1 關于微信SDK的介紹
- 0.2 微信SDK下載與安裝使用
- 0.3 微信SDK源文件結構與介紹
- 1.0 微信API驗證與事件推送回復
- 1.1 微信自定義菜單及個性化菜單
- 1.2 微信粉絲用戶及粉絲標簽管理
- 1.3 微信網頁JSSDK簽名包生成
- 1.4 微信紅包和JSAPI支付及掃碼支付
- 1.4.0 微信支付狀態通知處理
- 1.4.1 微信掃碼支付(模式一)
- 1.4.2 微信掃碼支付(模式二)
- 1.4.3 微信發起JSAPI支付
- 1.4.4 微信支付統一下單接口
- 1.5 微信各種素材管理及圖文推送
- 1.6 微信各種卡券及微信門店管理
- 1.7 微信設備管理
- 1.9 微信OAuth授權及用戶資料獲取
- 2.1 用數據庫管理微信SDK所需參數
- 2.2 自定微信SDK緩存設置方式
- 3.1 第三方平臺配置參數及實例
- 3.2 第三方平臺AccessToken獲取
- 3.3 第三方平臺Ticket推送處理
- 3.4 第三方平臺代發起網頁授權
- 4.1 案例之 CodeIgniter 3 集成方法
- 4.2 案例之 ThinkPHP 3.2 集成方法
- 4.3 案例之 ThinkPHP 5.0 集成方法
- 4.4 案例之 ThinkPHP 5.0 微信掃碼支付