## **接口內容列表**
[TOC]
## **被動消息處理**
* 所謂消息推送解釋是指我們提共接口給微信調用,能過這些SDK方法來處理并返回系統可直接使用的數據
* 通常,大部分微信操作都會有事件回到我們系統,因此需要我們來接收并處理。
* 在配置公眾號開發者接口時,需要填寫一個地址,對應地址的業務處理就是這個了,哈哈...
* **注意**:接口驗證需要由微信服務器發起請求,直接HTTP訪問`API`接口地址,會顯示`Interface authentication failed, please use the correct method to call.`屬正常情況。另外微信服務器域名解析`DNS`會有一定的延時,如果修改了域名解析,請等待一段時間后再來對接。
## **消息接收處理**
* 以下是API業務偽代碼,請根據項目實際情況進行封裝,另外QQ交流群中有分享完整的代碼。
~~~
/* 創建接口操作對象 */
$wechat = &load_wechat('Receive');
/* 驗證接口 */
if ($wechat->valid() === FALSE) {
// 接口驗證錯誤,記錄錯誤日志
// log_message('ERROR', "微信被動接口驗證失敗,{$wechat->errMsg}[{$wechat->errCode}]");
// 退出程序
exit($wechat->errMsg);
}
/* 獲取粉絲的openid */
$openid = $wechat->getRev()->getRevFrom();
/* 記錄接口日志,具體方法根據實際需要去完善 */
// _logs();
/* 分別執行對應類型的操作 */
switch ($wechat->getRev()->getRevType()) {
// 文本類型處理
case \Wechat\WechatReceive::MSGTYPE_TEXT:
$keys = $wechat->getRevContent();
return _keys($keys);
// 事件類型處理
case \Wechat\WechatReceive::MSGTYPE_EVENT:
$event = $wechat->getRevEvent();
return _event(strtolower($event['event']));
// 圖片類型處理
case \Wechat\WechatReceive::MSGTYPE_IMAGE:
return _image();
// 發送位置類的處理
case \Wechat\WechatReceive::MSGTYPE_LOCATION:
return _location();
// 其它類型的處理,比如卡卷領取、卡卷轉贈
default:
return _default();
}
~~~
## **文本消息處理**
* 參數`$keys`就是上面代碼中事件分流傳過來的參數
~~~
function _keys($keys){
$wechat = &load_wechat('Receive');
// 這里直接原樣回復給微信(當然你需要根據業務需求來定制的)
return $wechat->text($keys)->reply();
}
~~~
## **事件消息處理**
* 參數`$event`就是上面代碼中事件分流傳過來的參數
~~~
function _event($event) {
$wechat = &load_wechat('Receive');
switch ($event) {
// 粉絲關注事件
case 'subscribe':
return $wechat->text('歡迎關注公眾號!')->reply();
// 粉絲取消關注
case 'unsubscribe':
exit("success");
// 點擊微信菜單的鏈接
case 'click':
return $wechat->text('你點了菜單鏈接!')->reply();
// 微信掃碼推事件
case 'scancode_push':
case 'scancode_waitmsg':
$scanInfo = $wechat->getRev()->getRevScanInfo();
return $wechat->text("你掃碼的內容是:{$scanInfo['ScanResult']}")->reply();
// 掃碼關注公眾號事件(一般用來做分銷)
case 'scan':
return $wechat->text('歡迎關注公眾號!')->reply();
}
}
~~~
## **圖片消息處理**
~~~
function _image(){
$wechat = &load_wechat('Receive');
// $wechat 中有獲取圖片的方法
return $wechat->text('您發送了一張圖片過來')->reply();
}
~~~
## **直接回復消息**
~~~
// 創建接口操作對象
$wechat = &load_wechat('Receive');
// 回復文本消息
$wechat->text("文本消息")->reply();
// 回復語音消息($meaia_id為圖片在微信服務器上的Media_ID)
$wechat->voice($media_id)->reply();
// 回復視頻
$wechat->video($media_id, $video_title, $video_desc)->reply();
// 回復語音($meaia_id 為語音在微信服務器上的Media_ID)
$wechat->voice($media_id)->reply()
// 回復音樂
$wechat->music($music_title $music_desc, $music_url, $music_url, $media_id)->reply()
// 回復圖文($newsdata為數組,圖文參數參考微信官方文檔)
$wechat->news($newsdata)->reply();
// 將會話轉交給多客服
$wechat->transfer_customer_service()->reply();
// 發送模板消息($data為數組,具體請參數微信官方文檔)
$wechat->sendTemplateMessage($data);
// 發送客服消息($data為數組,具體請參數微信官方文檔)
$wechat->sendCustomMessage($data);
~~~
## **以上是由消息類型分流的思想,可根據項目情況進行封裝哦**
當然`$wechat`中還有許多方法,可以獲取消息內容或者回復消息到微信中。
這個后面點再來完善,可以參考`SDK`中的`WechatReceive.php`的源碼哦!