##3.1.1 擴展類庫:微信開發
此擴展可用于微信的服務號、訂閱號、企業號等功能開發,在PhalApi框架下簡單配置即可開發使用。
##3.1.2 安裝和配置
###(1)擴展包下載
從 [PhalApi-Library](http://git.oschina.net/dogstar/PhalApi-Library) 擴展庫中下載獲取 **Wechat** 微信包,如使用:
```javascript
git clone https://git.oschina.net/dogstar/PhalApi-Library.git
```
然后把 **Wechat** 目錄復制到 **./PhalApi/Library/** 下,即:
```javascript
cp ./PhalApi-Library/Wechat/ ./PhalApi/Library/ -R
```
到此安裝完畢!接下是插件的配置。
###(2)擴展包配置
為了讓微信擴展包能接收來自微信服務器的信息以及返回信息給用戶,我們需要在 **./Config/app.php** 配置文件中追加以下配置:
```javascript
/**
* 插件注冊 - 項目級重用
*/
'Wechat' => array(
'plugins' => array(
Wechat_InMessage::MSG_TYPE_TEXT => array('Plugin_Menu',),
Wechat_InMessage::MSG_TYPE_IMAGE => array(),
Wechat_InMessage::MSG_TYPE_VOICE => array(),
Wechat_InMessage::MSG_TYPE_VIDEO => array(),
Wechat_InMessage::MSG_TYPE_LOCATION => array(),
Wechat_InMessage::MSG_TYPE_LINK => array(),
Wechat_InMessage::MSG_TYPE_EVENT => array(),
Wechat_InMessage::MSG_TYPE_DEVICE_EVENT => array(),
Wechat_InMessage::MSG_TYPE_DEVICE_TEXT => array(),
),
)
```
簡單說明一下上面配置的作用,很明顯,Key為對應的消息類型,如:文本、位置、語音、圖片等;然后是各種消息類型對應的處理的類名,可以有多個,從上到下依次處理。
如果覺得配置很多,可以只配置需要用到的消息類型。另外,如果你的配置是其他途徑存放的,也亦然。
##3.1.3 入門使用
###(1)微信入口文件
可以按將下面的入口代碼得到你的項目下:
```javascript
//$ vim ./Public/weixin/index.php
<?php
// echo $_GET['echostr'];
// die();
if (!isset($GLOBALS['HTTP_RAW_POST_DATA'])) {
die('Access denied!');
}
require_once dirname(__FILE__) . '/../init.php';
//裝載項目代碼和擴展類庫
DI()->loader->addDirs(array('Demo', 'Library'));
/** ---------------- 微信輕聊版 ---------------- **/
$robot = new Wechat_Lite('YourTokenHere...', true);
$rs = $robot->response();
$rs->output();
```
**特別地** ,當首次接入微信時,需要將開頭的兩句注釋去掉,以便通過微信的驗證,即:
```javascript
// echo $_GET['echostr'];
// die();
```
##3.1.4 示例:讓紅包飛
###(1)業務場景
現在,快要過年了,各大企業都在派紅包,這里,我們也模擬一下微信服務號上紅包的派發。
通常地,當我們需要添加一個新的微信服務號的功能時,可以兩步走: **先開發插件,再注冊插件** 。
###(2)開發插件
很簡單地:
```javascript
// $vim ./Demo/Plugin/Money.php
<?php
class Plugin_Money implements Wechat_Plugin_Text {
public function handleText($inMessage, &$outMessage) {
$outMessage = new Wechat_OutMessage_News();
$item = new Wechat_OutMessage_News_Item();
$item->setTitle('讓紅包飛~')
->setDescription(sprintf('您已領取到一個%d元紅包~', rand(1, 100)))
->setPicUrl('http://webtools.qiniudn.com/172906_61c8663a_121026.jpeg')
->setUrl('http://git.oschina.net/dogstar/PhalApi-Library');
$outMessage->addItem($item);
}
}
````
運行效果:

##3.1.5 微信開發調試
為了便于進行微信開發的調試,我們專門提供了一個快速模擬微信請求的腳本。以下是對上面發紅包的模擬請求:
```javascript
$php ./Library/Wechat/Tests/send_wechat_text.php http://dev.wechat.com/weixin/ demo
<xml>
<ToUserName><![CDATA[oWNXvjipYqRViMpO8GZwXxE43pUY]]></ToUserName>
<FromUserName><![CDATA[gh_43235ff1360f]]></FromUserName>
<CreateTime>1423821388</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount>1</ArticleCount>
<Articles>
<item>
<Title><![CDATA[讓紅包飛~]]></Title>
<Description><![CDATA[您已領取到一個85元紅包~]]></Description>
<PicUrl><![CDATA[http://webtools.qiniudn.com/172906_61c8663a_121026.jpeg]]></PicUrl>
<Url><![CDATA[http://git.oschina.net/dogstar/PhalApi-Library]]></Url>
</item>
</Articles>
<FuncFlag>0</FuncFlag>
</xml>
```
- 歡迎使用PhalApi!
- 接口,從簡單開始!
- [1.1]-下載與安裝
- [1.2]-創建一個自己的項目
- [1.3]-在線體驗
- [1.4]-文檔、幫助和官網
- [1.10]-對PhalApi框架的抉擇
- [1.11]-快速入門(backup)
- [1.12]-參數規則:接口參數規則配置
- [1.13]-統一的接口請求方式:_sevice=XXX.XXX
- [1.14]-統一的返回格式和結構:ret-data-msg
- [1.15]-數據庫操作:基于NotORM的使用及優化
- [1.16]-配置讀取:內外網環境配置的完美切換
- [1.17]-日記紀錄:簡化版的日記接口
- [1.18]-快速函數:人性化的關懷
- [1.19]-DI服務速查:各資源服務一覽表
- [1.20]-DB操作:數據庫基本操作速查
- [1.21]-類的自動加載:遵循PEAR包的命名規范
- [1.22]-簽名驗證:自定義簽名規則
- [1.23]-請求和響應:GET和POST兩者皆可得及超越JSON格式返回
- [1.24]-緩存策略:更靈活地可配置化的多級緩存
- [1.25]-國際化翻譯:為走向國際化提前做好翻譯準備
- [1.26]-數據安全:數據對稱加密方案
- [1.27]-精益開發:更富表現力的Model層和重量級數據獲取的應對方案
- [1.28]-COOKIE:對COOKIE原生態的支持及記憶加密升級版
- [1.29]-開放與封閉:多入口和統一初始化
- [1.30]-保持的力量:接口開發最佳實踐
- [1.31]-新型計劃任務:以接口形式實現的計劃任務
- [2.11]-核心思想:DI依賴注入-讓資源更可控
- [2.12]-海量數據:可配置的分庫分表
- [2.13]-接口調試:在線SQL語句查看與性能優化
- [2.14]-測試驅動開發:意圖導向編程下的接口開發
- [2.15]-演進:新型計劃任務續篇
- [2.16]-領域驅動設計:應對復雜領域業務的Domain層
- [2.17]-微服務:Api接口服務層
- [2.18]-定制化:資源服務的再實現
- [2.19]-擴展庫:可重用的擴展類庫
- [2.20]-約定編程:架構明顯的編程風格
- [2.21]-服務器統一部署方案簡明版:CentOs---Nginx---php-fpm---MySql-[--Memcached]
- [2.22]-更多工具:精益項目和團隊建設
- [3.1]-擴展類庫:微信開發
- [3.2]-擴展類庫:代理模式下phprpc協議的輕松支持
- [3.3]-擴展類庫:基于PHPMailer的郵件發送
- [3.4]-擴展類庫:優酷開放平臺接口調用
- [3.5]-擴展類庫:七牛云存儲接口調用
- [3.6]-擴展類庫:新型計劃任務
- [3.8]-擴展類庫:用戶、會話和第三方登錄集成
- [3.9]-擴展類庫:swoole支持下的長鏈接和異步任務實現
- [3.11]-擴展類庫:基于FastRoute的快速路由
- [4.2]-開發實戰2:模擬優酷開放平臺接口項目開發
- [4.3]-開發實戰3:一個簡單的小型項目開發(奔跑吧兄弟投票活動)
- [5.1]-架構與思想:PhalApi核心設計和思想解讀
- [5.2]-雜談:扯一些PhalApi的前世和今生
- [5.3]-框架總結:術語表和PHP開發建議
- [5.4]-許可
- [5.5]-聯系和加入我們
- [5.6]-更新日記
- [5.8]-致框架貢獻者:加入PhalApi開源指南
- [6.1]-基于接口查詢語言的SDK包
- [6.2]-SDK包(JAVA版)
- [6.3]-SDK包(PHP版)
- [6.4]-SDK包(Objective-C版)
- [6.5]-SDK包(javascript版)
- [6.6]-SDK包(Ruby版)
- [8.1]-PhalApi視頻教程
- 附錄1:接口文檔參考模板