wechat-php-sdk
微信公眾平臺(tái)php開發(fā)包,細(xì)化各項(xiàng)接口操作,支持鏈?zhǔn)秸{(diào)用,歡迎Fork此項(xiàng)目
weixin developer SDK. 項(xiàng)目地址:https://github.com/dodgepudding/wechat-php-sdk
項(xiàng)目blog:http://binsee.github.io/wechat-php-sdk
使用詳解
使用前需先打開微信賬號(hào)的開發(fā)模式,詳細(xì)步驟請查看微信公眾平臺(tái)接口使用說明:
微信公眾平臺(tái): http://mp.weixin.qq.com/wiki/ 微信企業(yè)平臺(tái): http://qydev.weixin.qq.com/wiki/
微信支付接入文檔: https://mp.weixin.qq.com/cgi-bin/readtemplate?t=business/course2_tmpl&lang=zh_CN
微信多客服:http://dkf.qq.com
目錄
wechat.class.php 官方API類庫
qywechat.class.php 企業(yè)號(hào)API類庫
errCode.php|qyerrCode.php 全局返回碼類
old_version/wechatpay.class.php 舊版微信支付V2接口類庫
old_version/wechatext.class.php 非官方擴(kuò)展API(停止維護(hù))
old_version/wechatauth.class.php 授權(quán)登陸(停止維護(hù))
old_version/wechat.js 內(nèi)嵌JS(已廢棄)
為開發(fā)框架進(jìn)行適配
調(diào)用示例
1. wechat.class.php 官方API類庫
調(diào)用官方API,具有更靈活的消息分類響應(yīng)方式,支持鏈?zhǔn)秸{(diào)用操作 ;
主要功能
- 接入驗(yàn)證 (初級權(quán)限)
- 自動(dòng)回復(fù)(文本、圖片、語音、視頻、音樂、圖文) (初級權(quán)限)
- 菜單操作(查詢、創(chuàng)建、刪除) (菜單權(quán)限)
- 客服消息(文本、圖片、語音、視頻、音樂、圖文) (認(rèn)證權(quán)限)
- 二維碼(創(chuàng)建臨時(shí)、永久二維碼,獲取二維碼URL) (服務(wù)號(hào)、認(rèn)證權(quán)限)
- 長鏈接轉(zhuǎn)短鏈接接口 (服務(wù)號(hào)、認(rèn)證權(quán)限)
- 分組操作(查詢、創(chuàng)建、修改、移動(dòng)用戶到分組) (認(rèn)證權(quán)限)
- 網(wǎng)頁授權(quán)(基本授權(quán),用戶信息授權(quán)) (服務(wù)號(hào)、認(rèn)證權(quán)限)
- 用戶信息(查詢用戶基本信息、獲取關(guān)注者列表) (認(rèn)證權(quán)限)
- 多客服功能(客服管理、獲取客服記錄、客服會(huì)話管理) (認(rèn)證權(quán)限)
- 媒體文件(上傳、獲?。?nbsp;(認(rèn)證權(quán)限)
- 高級群發(fā) (認(rèn)證權(quán)限)
- 模板消息(設(shè)置所屬行業(yè)、添加模板、發(fā)送模板消息) (服務(wù)號(hào)、認(rèn)證權(quán)限)
- 卡券管理(創(chuàng)建、修改、刪除、發(fā)放、門店管理等) (認(rèn)證權(quán)限)
- 語義理解 (服務(wù)號(hào)、認(rèn)證權(quán)限)
- 獲取微信服務(wù)器IP列表 (初級權(quán)限)
- 微信JSAPI授權(quán)(獲取ticket、獲取簽名) (初級權(quán)限)
- 數(shù)據(jù)統(tǒng)計(jì)(用戶、圖文、消息、接口分析數(shù)據(jù)) (認(rèn)證權(quán)限)
> 備注:
> 初級權(quán)限:基本權(quán)限,任何正常的公眾號(hào)都有此權(quán)限
> 菜單權(quán)限:正常的服務(wù)號(hào)、認(rèn)證后的訂閱號(hào)擁有此權(quán)限
> 認(rèn)證權(quán)限:分為訂閱號(hào)、服務(wù)號(hào)認(rèn)證,如前綴服務(wù)號(hào)則僅認(rèn)證的服務(wù)號(hào)有此權(quán)限,否則為認(rèn)證后的訂閱號(hào)、服務(wù)號(hào)都有此權(quán)限
> 支付權(quán)限:僅認(rèn)證后的服務(wù)號(hào)可以申請此權(quán)限
初始化動(dòng)作
$options = array(
'token'=>'tokenaccesskey', //填寫你設(shè)定的key
'encodingaeskey'=>'encodingaeskey', //填寫加密用的EncodingAESKey
'appid'=>'wxdk1234567890', //填寫高級調(diào)用功能的app id, 請?jiān)谖⑿砰_發(fā)模式后臺(tái)查詢
'appsecret'=>'xxxxxxxxxxxxxxxxxxx' //填寫高級調(diào)用功能的密鑰
);
$weObj = new Wechat($options); //創(chuàng)建實(shí)例對象
//TODO:調(diào)用$weObj各實(shí)例方法
被動(dòng)接口方法:
- valid() 驗(yàn)證連接,被動(dòng)接口處于加密模式時(shí)必須調(diào)用
- getRev() 獲取微信服務(wù)器發(fā)來信息(不返回結(jié)果),被動(dòng)接口必須調(diào)用
- getRevData() 返回微信服務(wù)器發(fā)來的信息(數(shù)組)
- getRevFrom() 返回消息發(fā)送者的userid
- getRevTo() 返回消息接收者的id(即公眾號(hào)id)
- getRevType() 返回接收消息的類型
- getRevID() 返回消息id
- getRevCtime() 返回消息發(fā)送時(shí)間
- getRevContent() 返回消息內(nèi)容正文或語音識(shí)別結(jié)果(文本型)
- getRevPic() 返回圖片信息(圖片型信息) 返回?cái)?shù)組{'mediaid'=>'','picurl'=>''}
- getRevLink() 接收消息鏈接(鏈接型信息) 返回?cái)?shù)組{'url'=>'','title'=>'','description'=>''}
- getRevGeo() 返回地理位置(位置型信息) 返回?cái)?shù)組{'x'=>'','y'=>'','scale'=>'','label'=>''}
- getRevEventGeo() 返回事件地理位置(事件型信息) 返回?cái)?shù)組{'x'=>'','y'=>'','precision'=>''}
- getRevEvent() 返回事件類型(事件型信息) 返回?cái)?shù)組{'event'=>'','key'=>''}
- getRevScanInfo() 獲取自定義菜單的掃碼推事件信息,事件類型為
scancode_push
或scancode_waitmsg
返回?cái)?shù)組array ('ScanType'=>'qrcode','ScanResult'=>'123123')
- getRevSendPicsInfo() 獲取自定義菜單的圖片發(fā)送事件信息,事件類型為
pic_sysphoto
或pic_photo_or_album
或pic_weixin
數(shù)組結(jié)構(gòu)見php文件內(nèi)方法說明
- getRevSendGeoInfo() 獲取自定義菜單的地理位置選擇器事件推送,事件類型為
location_select
數(shù)組結(jié)構(gòu)見php文件內(nèi)方法說明
- getRevVoice() 返回語音信息(語音型信息) 返回?cái)?shù)組{'mediaid'=>'','format'=>''}
- getRevVideo() 返回視頻信息(視頻型信息) 返回?cái)?shù)組{'mediaid'=>'','thumbmediaid'=>''}
- getRevTicket() 返回接收TICKET(掃描帶參數(shù)二維碼,關(guān)注或SCAN事件) 返回二維碼的ticket值
- getRevSceneId() 返回二維碼的場景值(掃描帶參數(shù)二維碼的關(guān)注事件) 返回二維碼的參數(shù)值
- getRevTplMsgID() 返回主動(dòng)推送的消息ID(群發(fā)或模板消息事件) 返回MsgID值
- getRevStatus() 返回模板消息發(fā)送狀態(tài)(模板消息事件) 返回文本:success(成功)|failed:user block(用戶拒絕接收)|failed: system failed(發(fā)送失?。ǚ怯脩艟芙^))
- getRevResult() 返回群發(fā)或模板消息發(fā)送結(jié)果(群發(fā)或模板消息事件) 返回?cái)?shù)組,內(nèi)容依事件類型而不同,參考開發(fā)文檔中群發(fā)、模板消息推送事件
- getRevKFCreate() 返回多客服-接入會(huì)話的客服賬號(hào)(多客服-接入會(huì)話事件) 返回文本型
- getRevKFClose() 返回多客服-處理會(huì)話的客服賬號(hào)(多客服-接入會(huì)話事件) 返回文本型
- getRevKFSwitch() 返回多客服-轉(zhuǎn)接會(huì)話信息(多客服-轉(zhuǎn)接會(huì)話事件) 返回?cái)?shù)組 {'FromKfAccount' => '','ToKfAccount' => ''}
- getRevCardPass() 返回卡券-審核通過的卡券ID(卡券-卡券審核事件) 返回文本型
- getRevCardGet() 返回卡券-用戶領(lǐng)取卡券的相關(guān)信息(卡券-領(lǐng)取卡券事件) 返回?cái)?shù)組{'CardId' => '','IsGiveByFriend' => '','UserCardCode' => ''}
- getRevCardDel() 返回卡券-用戶刪除卡券的相關(guān)信息(卡券-刪除卡券事件) 返回?cái)?shù)組{'CardId' => '','UserCardCode' => ''}
- text($text) 設(shè)置文本型消息,參數(shù):文本內(nèi)容
- image($mediaid) 設(shè)置圖片型消息,參數(shù):圖片的media_id
- voice($mediaid) 設(shè)置語音型消息,參數(shù):語音的media_id
- video($mediaid='',$title,$description) 設(shè)置視頻型消息,參數(shù):視頻的media_id、標(biāo)題、摘要
- music($title,$desc,$musicurl,$hgmusicurl='',$thumbmediaid='') 設(shè)置回復(fù)音樂,參數(shù):音樂標(biāo)題、音樂描述、音樂鏈接、高音質(zhì)鏈接、縮略圖的媒體id
- news($newsData) 設(shè)置圖文型消息,參數(shù):數(shù)組。數(shù)組結(jié)構(gòu)見php文件內(nèi)方法說明
- Message($msg = '',$append = false) 設(shè)置發(fā)送的消息(一般不需要調(diào)用這個(gè)方法)
- transfer_customer_service($customer_account = '') 轉(zhuǎn)接多客服,如不指定客服可不提供參數(shù),參數(shù):指定客服的賬號(hào)
- reply() 將以上已經(jīng)設(shè)置好的消息,回復(fù)給微信服務(wù)器
預(yù)定義常量列表:
////消息類型,使用實(shí)例調(diào)用getRevType()方法取得
const MSGTYPE_TEXT = 'text';
const MSGTYPE_IMAGE = 'image';
const MSGTYPE_LOCATION = 'location';
const MSGTYPE_LINK = 'link';
const MSGTYPE_EVENT = 'event';
const MSGTYPE_MUSIC = 'music';
const MSGTYPE_NEWS = 'news';
const MSGTYPE_VOICE = 'voice';
const MSGTYPE_VIDEO = 'video';
////事件類型,使用實(shí)例調(diào)用getRevEvent()方法取得
const EVENT_SUBSCRIBE = 'subscribe'; //訂閱
const EVENT_UNSUBSCRIBE = 'unsubscribe'; //取消訂閱
const EVENT_SCAN = 'SCAN'; //掃描帶參數(shù)二維碼
const EVENT_LOCATION = 'LOCATION'; //上報(bào)地理位置
const EVENT_MENU_VIEW = 'VIEW'; //菜單 - 點(diǎn)擊菜單跳轉(zhuǎn)鏈接
const EVENT_MENU_CLICK = 'CLICK'; //菜單 - 點(diǎn)擊菜單拉取消息
const EVENT_MENU_SCAN_PUSH = 'scancode_push'; //菜單 - 掃碼推事件(客戶端跳URL)
const EVENT_MENU_SCAN_WAITMSG = 'scancode_waitmsg'; //菜單 - 掃碼推事件(客戶端不跳URL)
const EVENT_MENU_PIC_SYS = 'pic_sysphoto'; //菜單 - 彈出系統(tǒng)拍照發(fā)圖
const EVENT_MENU_PIC_PHOTO = 'pic_photo_or_album'; //菜單 - 彈出拍照或者相冊發(fā)圖
const EVENT_MENU_PIC_WEIXIN = 'pic_weixin'; //菜單 - 彈出微信相冊發(fā)圖器
const EVENT_MENU_LOCATION = 'location_select'; //菜單 - 彈出地理位置選擇器
const EVENT_SEND_MASS = 'MASSSENDJOBFINISH'; //發(fā)送結(jié)果 - 高級群發(fā)完成
const EVENT_SEND_TEMPLATE = 'TEMPLATESENDJOBFINISH';//發(fā)送結(jié)果 - 模板消息發(fā)送結(jié)果
const EVENT_KF_SEESION_CREATE = 'kfcreatesession'; //多客服 - 接入會(huì)話
const EVENT_KF_SEESION_CLOSE = 'kfclosesession'; //多客服 - 關(guān)閉會(huì)話
const EVENT_KF_SEESION_SWITCH = 'kfswitchsession'; //多客服 - 轉(zhuǎn)接會(huì)話
const EVENT_CARD_PASS = 'card_pass_check'; //卡券 - 審核通過
const EVENT_CARD_NOTPASS = 'card_not_pass_check'; //卡券 - 審核未通過
const EVENT_CARD_USER_GET = 'user_get_card'; //卡券 - 用戶領(lǐng)取卡券
const EVENT_CARD_USER_DEL = 'user_del_card'; //卡券 - 用戶刪除卡券
主動(dòng)接口方法:
- checkAuth($appid,$appsecret,$token) 此處傳入公眾后臺(tái)高級接口提供的appid和appsecret, 或者手動(dòng)指定$token為access_token。函數(shù)將返回access_token操作令牌
- resetAuth($appid='') 刪除驗(yàn)證數(shù)據(jù)
- resetJsTicket($appid='') 刪除JSAPI授權(quán)TICKET
- getJsTicket($appid='',$jsapi_ticket='') 獲取JSAPI授權(quán)TICKET
- getJsSign($url, $timestamp=0, $noncestr='', $appid='') 獲取JsApi使用簽名信息數(shù)組,可只提供url地址
- createMenu($data) 創(chuàng)建菜單 $data菜單結(jié)構(gòu)詳見 自定義菜單創(chuàng)建接口
- getServerIp() 獲取微信服務(wù)器IP地址列表 返回?cái)?shù)組array('127.0.0.1','127.0.0.1')
- getMenu() 獲取菜單
- deleteMenu() 刪除菜單
- uploadMedia($data, $type) 上傳臨時(shí)素材,有效期為3天(注意上傳大文件時(shí)可能需要先調(diào)用 set_time_limit(0) 避免超時(shí))
- getMedia($media_id,$is_video=false) 獲取臨時(shí)素材(含接收到的音頻、視頻媒體文件)
- uploadForeverMedia($data, $type,$is_video=false,$video_info=array()) 上傳永久素材,可以在公眾平臺(tái)官網(wǎng)素材管理模塊中看到
- uploadForeverArticles($data) 上傳永久圖文素材
- updateForeverArticles($media_id,$data,$index=0) 修改永久圖文素材(認(rèn)證后的訂閱號(hào)可用)
- getForeverMedia($media_id,$is_video=false) 獲取永久素材
- delForeverMedia($media_id) 刪除永久素材
- getForeverList($type,$offset,$count) 獲取永久素材列表(認(rèn)證后的訂閱號(hào)可用)
- getForeverCount() 獲取永久素材總數(shù)
- uploadMpVideo($data) 上傳視頻素材,當(dāng)需要群發(fā)視頻時(shí),必須使用此方法得到的MediaID,否則無法顯示
- uploadArticles($data) 上傳圖文消息素材
- sendMassMessage($data) 高級群發(fā)消息
- sendGroupMassMessage($data) 高級群發(fā)消息(全體或分組群發(fā))
- deleteMassMessage($msg_id) 刪除群發(fā)圖文消息
- previewMassMessage($data) 預(yù)覽群發(fā)消息
- queryMassMessage($msg_id) 查詢?nèi)喊l(fā)消息發(fā)送狀態(tài)
- getQRCode($scene_id,$type=0,$expire=1800) 獲取推廣二維碼ticket字串
- getQRUrl($ticket) 獲取二維碼圖片地址
- getShortUrl($long_url) 長鏈接轉(zhuǎn)短鏈接接口
- getUserList($next_openid) 批量獲取關(guān)注用戶列表
- getUserInfo($openid) 獲取關(guān)注者詳細(xì)信息
- updateUserRemark($openid,$remark) 設(shè)置用戶備注名
- getGroup() 獲取用戶分組列表
- getUserGroup($openid) 獲取用戶所在分組
- createGroup($name) 新增自定分組
- updateGroup($groupid,$name) 更改分組名稱
- updateGroupMembers($groupid,$openid) 移動(dòng)用戶分組
- batchUpdateGroupMembers($groupid,$openid_list) 批量移動(dòng)用戶分組
- sendCustomMessage($data) 發(fā)送客服消息
- getOauthRedirect($callback,$state,$scope) 獲取網(wǎng)頁授權(quán)oAuth跳轉(zhuǎn)地址
- getOauthAccessToken() 通過回調(diào)的code獲取網(wǎng)頁授權(quán)access_token
- getOauthRefreshToken($refresh_token) 通過refresh_token對access_token續(xù)期
- getOauthUserinfo($access_token,$openid) 通過網(wǎng)頁授權(quán)的access_token獲取用戶資料
- getOauthAuth($access_token,$openid) 檢驗(yàn)授權(quán)憑證access_token是否有效
- getSignature($arrdata,'sha1') 生成簽名字串
- generateNonceStr($length=16) 獲取隨機(jī)字串
- setTMIndustry($id1,$id2='') 模板消息,設(shè)置所屬行業(yè)
- addTemplateMessage($tpl_id) 模板消息,添加消息模板
- sendTemplateMessage($data) 發(fā)送模板消息
- 多客服接口:
- getCustomServiceMessage($data) 獲取多客服會(huì)話記錄
- transfer_customer_service($customer_account) 轉(zhuǎn)發(fā)多客服消息
- getCustomServiceKFlist() 獲取多客服客服基本信息
- getCustomServiceOnlineKFlist() 獲取多客服在線客服接待信息
- createKFSession($openid,$kf_account,$text='') 創(chuàng)建指定多客服會(huì)話
- closeKFSession($openid,$kf_account,$text='') 關(guān)閉指定多客服會(huì)話
- getKFSession($openid) 獲取用戶會(huì)話狀態(tài)
- getKFSessionlist($kf_account) 獲取指定客服的會(huì)話列表
- getKFSessionWait() 獲取未接入會(huì)話列表
- addKFAccount($account,$nickname,$password) 添加客服賬號(hào)
- updateKFAccount($account,$nickname,$password) 修改客服賬號(hào)信息
- deleteKFAccount($account) 刪除客服賬號(hào)
- setKFHeadImg($account,$imgfile) 上傳客服頭像
- querySemantic($uid,$query,$category,$latitude=0,$longitude=0,$city="",$region="") 語義理解接口 參數(shù)含義及返回的json內(nèi)容請查看 微信語義理解接口
-
getDatacube($type,$subtype,$begin_date,$end_date='') 獲取統(tǒng)計(jì)數(shù)據(jù) 參數(shù)需注意$type與$subtype的定義
獲取統(tǒng)計(jì)數(shù)據(jù)方法 參數(shù)定義
數(shù)據(jù)分類 | $type值(字符串) | 數(shù)據(jù)子分類 | $subtype值(字符串) | 時(shí)間跨度(天) |
用戶分析 |
'user' |
獲取用戶增減數(shù)據(jù) |
'summary' |
7 |
用戶分析 |
'user' |
獲取累計(jì)用戶數(shù)據(jù) |
'cumulate' |
7 |
圖文分析 |
'article' |
獲取圖文群發(fā)每日數(shù)據(jù) |
'summary' |
1 |
圖文分析 |
'article' |
獲取圖文群發(fā)總數(shù)據(jù) |
'total' |
1 |
圖文分析 |
'article' |
獲取圖文統(tǒng)計(jì)數(shù)據(jù) |
'read' |
3 |
圖文分析 |
'article' |
獲取圖文統(tǒng)計(jì)分時(shí)數(shù)據(jù) |
'readhour' |
1 |
圖文分析 |
'article' |
獲取圖文分享轉(zhuǎn)發(fā)數(shù)據(jù) |
'share' |
7 |
圖文分析 |
'article' |
獲取圖文分享轉(zhuǎn)發(fā)分時(shí)數(shù)據(jù) |
'sharehour' |
1 |
消息分析 |
'upstreammsg' |
獲取消息發(fā)送概況數(shù)據(jù) |
'summary' |
7 |
消息分析 |
'upstreammsg' |
獲取消息分送分時(shí)數(shù)據(jù) |
'hour' |
1 |
消息分析 |
'upstreammsg' |
獲取消息發(fā)送周數(shù)據(jù) |
'week' |
30 |
消息分析 |
'upstreammsg' |
獲取消息發(fā)送月數(shù)據(jù) |
'month' |
30 |
消息分析 |
'upstreammsg' |
獲取消息發(fā)送分布數(shù)據(jù) |
'dist' |
15 |
消息分析 |
'upstreammsg' |
獲取消息發(fā)送分布周數(shù)據(jù) |
'distweek' |
30 |
消息分析 |
'upstreammsg' |
獲取消息發(fā)送分布月數(shù)據(jù) |
'distmonth' |
30 |
接口分析 |
'interface' |
獲取接口分析數(shù)據(jù) |
'summary' |
30 |
接口分析 |
'interface' |
獲取接口分析分時(shí)數(shù)據(jù) |
'summaryhour' |
1 |
需要注意 begin_date
和end_date
的差值需小于“最大時(shí)間跨度”(比如最大時(shí)間跨度為1時(shí),begin_date
和end_date
的差值只能為0,才能小于1)
- 卡券接口:
- createCard($data) 創(chuàng)建卡券
- updateCard($data) 修改卡券
- delCard($card_id) 刪除卡券
- getCardInfo($card_id) 查詢卡券詳情
- getCardColors() 獲取顏色列表
- getCardLocations() 拉取門店列表
- addCardLocations($data) 批量導(dǎo)入門店信息
- createCardQrcode($card_id) 生成卡券二維碼
- consumeCardCode($code) 消耗 code
- decryptCardCode($encrypt_code) code 解碼
- checkCardCode($code) 獲取 code 的有效性
- getCardIdList($data) 批量查詢卡列表
- updateCardCode($code,$card_id,$new_code) 更改 code
- unavailableCardCode($code,$card_id='') 設(shè)置卡券失效(不可逆)
- modifyCardStock($data) 庫存修改
- activateMemberCard($data) 激活/綁定會(huì)員卡,參數(shù)結(jié)構(gòu)請參看卡券開發(fā)文檔(6.1.1 激活/綁定會(huì)員卡)章節(jié)
- updateMemberCard($data) 會(huì)員卡交易,參數(shù)結(jié)構(gòu)請參看卡券開發(fā)文檔(6.1.2 會(huì)員卡交易)章節(jié)
- updateLuckyMoney($code,$balance,$card_id='') 更新紅包金額
- setCardTestWhiteList($openid=array(),$user=array()) 設(shè)置卡券測試白名單
- 搖一搖周邊接口:
- applyShakeAroundDevice($data) 申請?jiān)O(shè)備ID
- updateShakeAroundDevice($data) 編輯設(shè)備的備注信息
- searchShakeAroundDevice($data) 查詢設(shè)備列表
- bindLocationShakeAroundDevice($device_id,$poi_id,$uuid='',$major=0,$minor=0) 配置設(shè)備與門店的關(guān)聯(lián)關(guān)系
- bindPageShakeAroundDevice($device_id,$page_ids=array(),$bind=1,$append=1,$uuid='',$major=0,$minor=0) 配置設(shè)備與頁面的關(guān)聯(lián)關(guān)系
- uploadShakeAroundMedia($data) 上傳在搖一搖頁面展示的圖片素材
- addShakeAroundPage($title,$description,$icon_url,$page_url,$comment='') 新增搖一搖出來的頁面信息
- updateShakeAroundPage($page_id,$title,$description,$icon_url,$page_url,$comment='') 編輯搖一搖出來的頁面信息
- searchShakeAroundPage($page_ids=array(),$begin=0,$count=1) 查詢搖一搖已有的頁面
- deleteShakeAroundPage($page_ids=array()) 刪除搖一搖已有的頁面,必須是未與設(shè)備關(guān)聯(lián)的頁面
- getShakeInfoShakeAroundUser($ticket) 獲取搖周邊的設(shè)備及用戶信息
- deviceShakeAroundStatistics($device_id,$begin_date,$end_date,$uuid='',$major=0,$minor=0) 以設(shè)備為維度的數(shù)據(jù)統(tǒng)計(jì)接口
- pageShakeAroundStatistics($page_id,$begin_date,$end_date) 以頁面為維度的數(shù)據(jù)統(tǒng)計(jì)接口
2. wechatext.class.php 非官方擴(kuò)展API
此擴(kuò)展類庫已經(jīng)不再更新,原因是官方對公眾號(hào)開放了眾多接口,此類庫繼續(xù)維護(hù)的意義不大
非官方擴(kuò)展API,需要配置公眾平臺(tái)賬戶和密碼,能實(shí)現(xiàn)對已關(guān)注用戶的點(diǎn)對點(diǎn)微信,此方式不保證長期有效。
類方法里提及的用戶id在接口返回結(jié)構(gòu)里表述為FakeId, 屬同一概念, 在下面wechatauth類里則表示為Uin, 用戶id對應(yīng)的微信號(hào)必須通過getInfo()方法通過返回?cái)?shù)組的Username值獲取, 但非關(guān)注關(guān)系用戶資料不能獲取.
調(diào)用下列方法前必須經(jīng)過login()方法和checkValid()驗(yàn)證方法才能獲得調(diào)用權(quán)限. 有的賬戶無法通過登陸可能因?yàn)橐筇峁?yàn)證碼, 可以手動(dòng)登陸后把獲取到的cookie寫進(jìn)程序存放cookie的文件解決.
程序使用了經(jīng)過修改的snoopy兼容式HTTP類方法, 在類似BAE/SAE云服務(wù)器上可能不能正常運(yùn)行, 因?yàn)樵品?wù)的curl方法是經(jīng)過重寫的, 某些header參數(shù)如網(wǎng)站來源參數(shù)不被支持.
類主要方法:
- send($id,$content) 向某用戶id發(fā)送微信文字信息
- sendNews($id,$msgid) 發(fā)送圖文消息, 可通過getNewsList獲取$msgid
- getUserList($page,$pagesize,$groupid) 獲取用戶信息
- getGroupList($page,$pagesize) 獲取群組信息
- getNewsList($page,$pagesize) 獲取圖文信息列表
- uploadFile($filepath,$type) 上傳附件,包括圖片/音頻/視頻/縮略圖
- getFileList($type,$page,$pagesize) 獲取素材庫文件列表
- sendImage($id,$fid) 發(fā)送圖片消息
- sendAudio($id,$fid) 發(fā)送音頻消息
- sendVideo($id,$fid) 發(fā)送視頻消息
- getInfo($id) 根據(jù)id獲取用戶資料,注: 非關(guān)注關(guān)系用戶資料不能獲取
- getNewMsgNum($lastid) 獲取從$lastid算起新消息的數(shù)目
- getTopMsg() 獲取最新一條消息的數(shù)據(jù), 此方法獲取的消息id可以作為檢測新消息的$lastid依據(jù)
- getMsg($lastid,$offset=0,$perpage=50,$day=0,$today=0,$star=0) 獲取最新的消息列表, 列表將返回消息id, 用戶id, 消息類型, 文字消息等參數(shù)
- 消息返回結(jié)構(gòu): {"id":"消息id","type":"類型號(hào)(1為文字,2為圖片,3為語音)","fileId":"0","hasReply":"0","fakeId":"用戶uid","nickName":"昵稱","dateTime":"時(shí)間戳","content":"文字內(nèi)容"}
- getMsgImage($msgid,$mode='large') 若消息type類型為2, 調(diào)用此方法獲取圖片數(shù)據(jù)
- getMsgVoice($msgid) 若消息type類型為3, 調(diào)用此方法獲取語音數(shù)據(jù)
3. wechatauth.class.php 授權(quán)登陸
此擴(kuò)展類庫已經(jīng)不再更新,原因是官方開放平臺(tái)對網(wǎng)站應(yīng)用開放的有授權(quán)登陸接口,更標(biāo)準(zhǔn),更好用。請查看:微信開放平臺(tái)
通過微信二維碼登陸微信的API, 能實(shí)現(xiàn)第三方網(wǎng)站同步登陸, 首先程序分別通過get_login_code和get_code_image方法獲取授權(quán)二維碼圖片, 然后利用微信手機(jī)客戶端掃描二維碼圖片后將自動(dòng)跳出授權(quán)頁面, 用戶點(diǎn)擊授權(quán)后即可獲取對應(yīng)的用戶資料和頭像信息. 詳細(xì)驗(yàn)證步驟請看test3.php例子.
類主要方法:
- get_login_code() 獲取登陸授權(quán)碼, 通過授權(quán)碼才能獲取二維碼
- get_code_image($code='') 將上面獲取的授權(quán)碼轉(zhuǎn)換為圖片二維碼
- verify_code() 鑒定是否登陸成功,返回200為最終授權(quán)成功.
- get_login_info() 鑒定成功后調(diào)用此方法即可獲取用戶基本信息
- get_avatar($url) 獲取用戶頭像圖片數(shù)據(jù)
- logout() 注銷登陸
4. wechat.js 內(nèi)嵌JS
此JS腳本已經(jīng)廢棄不再更新,原因是官方在微信6.0.2版本開放了全新的JSAPI接口,更全面好用。請查看:微信公眾平臺(tái)WIKI
微信內(nèi)嵌網(wǎng)頁特殊功能js調(diào)用:
- WeixinJS.hideOptionMenu() 隱藏右上角按鈕
- WeixinJS.showOptionMenu() 顯示右上角按鈕
- WeixinJS.hideToolbar() 隱藏工具欄
- WeixinJS.showToolbar() 顯示工具欄
- WeixinJS.getNetworkType() 獲取網(wǎng)絡(luò)狀態(tài)
- WeixinJS.closeWindow() 關(guān)閉窗口
- WeixinJS.scanQRCode() 掃描二維碼
- WeixinJS.openUrlByExtBrowser(url) 使用瀏覽器打開網(wǎng)址
- WeixinJS.jumpToBizProfile(username) 跳轉(zhuǎn)到指定公眾賬號(hào)頁面
- WeixinJS.sendEmail(title,content) 發(fā)送郵件
- WeixinJS.openProductView(latitude,longitude,name,address,scale,infoUrl) 查看地圖
- WeixinJS.addContact(username) 添加微信賬號(hào)
- WeixinJS.imagePreview(urls,current) 調(diào)出微信內(nèi)圖片預(yù)覽
- WeixinJS.payCallback(appId,package,timeStamp,nonceStr,signType,paySign,callback) 微信JsApi支付接口
- WeixinJS.editAddress(appId,addrSign,timeStamp,nonceStr,callback) 微信JsApi支付接口
- 通過定義全局變量dataForWeixin配置觸發(fā)分享的內(nèi)容:
javascript var dataForWeixin={ appId:"", MsgImg:"消息圖片路徑", TLImg:"時(shí)間線圖路徑", url:"分享url路徑", title:"標(biāo)題", desc:"描述", fakeid:"", callback:function(){} };
5. errCode.php 全局返回碼類
當(dāng)調(diào)用API接口失敗時(shí),可以用此類來獲取失敗原因的中文說明。
注意:微信公眾號(hào)引用errCode.php
,企業(yè)號(hào)引用qyerrCode.php
。
使用方法:
include "errCode.php"; //或 qyerrCode.php
$ret=ErrCode::getErrText(48001); //錯(cuò)誤碼可以通過公眾號(hào)類庫的公開變量errCode得到
if ($ret)
echo $ret;
else
echo "未找到對應(yīng)的內(nèi)容";
6. qywechat.class.php 企業(yè)號(hào)API類庫
調(diào)用官方API,具有更靈活的消息分類響應(yīng)方式,支持鏈?zhǔn)秸{(diào)用操作 ;
主要功能
- 接入驗(yàn)證
- 自動(dòng)回復(fù)(文本、圖片、語音、視頻、音樂、圖文)
- 菜單操作(查詢、創(chuàng)建、刪除)
- 部門管理(創(chuàng)建、更新、刪除、獲取部門列表)
- 成員管理(創(chuàng)建、更新、刪除、獲取成員信息,獲取部門成員列表)
- 標(biāo)簽管理(創(chuàng)建、更新、刪除、獲取成員、添加成員、刪除成員,獲取標(biāo)簽列表)
- 媒體文件管理(上傳、獲?。?/li>
- 二次驗(yàn)證
- OAuth2(生成授權(quán)url、獲取成員信息)
- 獲取企業(yè)微信服務(wù)器IP列表
- 微信JSAPI授權(quán)(獲取ticket、獲取簽名)
初始化動(dòng)作
$options = array(
'token'=>'tokenaccesskey', //填寫應(yīng)用接口的Token
'encodingaeskey'=>'encodingaeskey', //填寫加密用的EncodingAESKey
'appid'=>'wxdk1234567890', //填寫高級調(diào)用功能的app id
'appsecret'=>'xxxxxxxxxxxxxxxxxxx', //填寫高級調(diào)用功能的密鑰
'agentid'=>'1', //應(yīng)用的id
'debug'=>false, //調(diào)試開關(guān)
'_logcallback'=>'logg', //調(diào)試輸出方法,需要有一個(gè)string類型的參數(shù)
);
$weObj = new Wechat($options); //創(chuàng)建實(shí)例對象
//TODO:調(diào)用$weObj各實(shí)例方法
被動(dòng)接口方法:
- valid() 驗(yàn)證連接,被動(dòng)接口必須調(diào)用
- getRev() 獲取微信服務(wù)器發(fā)來信息(不返回結(jié)果),被動(dòng)接口必須調(diào)用
- getRevData() 返回微信服務(wù)器發(fā)來的信息(數(shù)組)
- getRevPostXml() 返回微信服務(wù)器發(fā)來的原始加密xml信息
- getRevFrom() 返回消息發(fā)送者的userid
- getRevTo() 返回消息接收者的id(即公眾號(hào)id,一般與等同appid一致)
- getRevAgentID() 返回接收消息的應(yīng)用id
- getRevType() 返回接收消息的類型
- getRevID() 返回消息id
- getRevCtime() 返回消息發(fā)送事件
- getRevContent() 返回消息內(nèi)容正文(文本型消息)
- getRevPic() 返回圖片信息(圖片型信息) 返回?cái)?shù)組{'mediaid'=>'','picurl'=>''}
- getRevGeo() 返回地理位置(位置型信息) 返回?cái)?shù)組{'x'=>'','y'=>'','scale'=>'','label'=>''}
- getRevEventGeo() 返回事件地理位置(事件型信息) 返回?cái)?shù)組{'x'=>'','y'=>'','precision'=>''}
- getRevEvent() 返回事件類型(事件型信息) 返回?cái)?shù)組{'event'=>'','key'=>''}
- getRevScanInfo() 獲取自定義菜單的掃碼推事件信息,事件類型為
scancode_push
或scancode_waitmsg
返回?cái)?shù)組array ('ScanType'=>'qrcode','ScanResult'=>'123123')
- getRevSendPicsInfo() 獲取自定義菜單的圖片發(fā)送事件信息,事件類型為
pic_sysphoto
或pic_photo_or_album
或pic_weixin
數(shù)組結(jié)構(gòu)見php文件內(nèi)方法說明
- getRevSendGeoInfo() 獲取自定義菜單的地理位置選擇器事件推送,事件類型為
location_select
數(shù)組結(jié)構(gòu)見php文件內(nèi)方法說明
- getRevVoice() 返回語音信息(語音型信息) 返回?cái)?shù)組{'mediaid'=>'','format'=>''}
- getRevVideo() 返回視頻信息(視頻型信息) 返回?cái)?shù)組{'mediaid'=>'','thumbmediaid'=>''}
- text($text) 設(shè)置文本型消息,參數(shù):文本內(nèi)容
- image($mediaid) 設(shè)置圖片型消息,參數(shù):圖片的media_id
- voice($mediaid) 設(shè)置語音型消息,參數(shù):語音的media_id
- video($mediaid='',$title,$description) 設(shè)置視頻型消息,參數(shù):視頻的media_id、標(biāo)題、摘要
- news($newsData) 設(shè)置圖文型消息,參數(shù):數(shù)組。數(shù)組結(jié)構(gòu)見php文件內(nèi)方法說明
- image($mediaid) 設(shè)置圖片型消息,參數(shù):圖片的media_id
- Message($msg = '',$append = false) 設(shè)置發(fā)送的消息(一般不需要調(diào)用這個(gè)方法)
- reply() 將已經(jīng)設(shè)置好的消息,回復(fù)給微信服務(wù)器
預(yù)定義常量列表:
////消息類型,使用實(shí)例調(diào)用getRevType()方法取得
const MSGTYPE_TEXT = 'text';
const MSGTYPE_IMAGE = 'image';
const MSGTYPE_LOCATION = 'location';
const MSGTYPE_LINK = 'link'; //暫不支持
const MSGTYPE_EVENT = 'event';
const MSGTYPE_MUSIC = 'music'; //暫不支持
const MSGTYPE_NEWS = 'news';
const MSGTYPE_VOICE = 'voice';
const MSGTYPE_VIDEO = 'video';
////事件類型,使用實(shí)例調(diào)用getRevEvent()方法取得
const EVENT_SUBSCRIBE = 'subscribe'; //訂閱
const EVENT_UNSUBSCRIBE = 'unsubscribe'; //取消訂閱
const EVENT_LOCATION = 'LOCATION'; //上報(bào)地理位置
const EVENT_ENTER_AGENT = 'enter_agent'; //用戶進(jìn)入應(yīng)用
const EVENT_MENU_VIEW = 'VIEW'; //菜單 - 點(diǎn)擊菜單跳轉(zhuǎn)鏈接
const EVENT_MENU_CLICK = 'CLICK'; //菜單 - 點(diǎn)擊菜單拉取消息
const EVENT_MENU_SCAN_PUSH = 'scancode_push'; //菜單 - 掃碼推事件(客戶端跳URL)
const EVENT_MENU_SCAN_WAITMSG = 'scancode_waitmsg'; //菜單 - 掃碼推事件(客戶端不跳URL)
const EVENT_MENU_PIC_SYS = 'pic_sysphoto'; //菜單 - 彈出系統(tǒng)拍照發(fā)圖
const EVENT_MENU_PIC_PHOTO = 'pic_photo_or_album'; //菜單 - 彈出拍照或者相冊發(fā)圖
const EVENT_MENU_PIC_WEIXIN = 'pic_weixin'; //菜單 - 彈出微信相冊發(fā)圖器
const EVENT_MENU_LOCATION = 'location_select'; //菜單 - 彈出地理位置選擇器
const EVENT_SEND_MASS = 'MASSSENDJOBFINISH'; //發(fā)送結(jié)果 - 高級群發(fā)完成
const EVENT_SEND_TEMPLATE = 'TEMPLATESENDJOBFINISH';//發(fā)送結(jié)果 - 模板消息發(fā)送結(jié)果
主動(dòng)接口方法:
- checkAuth($appid='',$appsecret='',$token='') 通用auth驗(yàn)證方法,也用來換取ACCESS_TOKEN 。僅在需要手動(dòng)指定access_token時(shí)才用
$token
- resetAuth($appid='') 清除記錄的ACCESS_TOKEN
- resetJsTicket($appid='') 刪除JSAPI授權(quán)TICKET
- getJsTicket($appid='',$jsapi_ticket='') 獲取JSAPI授權(quán)TICKET
- getJsSign($url, $timestamp=0, $noncestr='', $appid='') 獲取JsApi使用簽名信息數(shù)組,可只提供url地址
- getSignature($arrdata,'sha1') 生成簽名字串
- generateNonceStr($length=16) 獲取隨機(jī)字串
- createMenu($data,$agentid='') 創(chuàng)建菜單,參數(shù):菜單內(nèi)容數(shù)組,要?jiǎng)?chuàng)建菜單應(yīng)用id
- getMenu($agentid='') 獲取菜單內(nèi)容,參數(shù):要獲取菜單內(nèi)容的應(yīng)用id
- deleteMenu($agentid='') 刪除菜單,參數(shù):要?jiǎng)h除菜單的應(yīng)用id
- uploadMedia($data, $type) 上傳媒體文件,參數(shù)請看php文件內(nèi)方法說明(注意上傳大文件時(shí)可能需要先調(diào)用 set_time_limit(0) 避免超時(shí))
- getMedia($media_id) 根據(jù)媒體文件ID獲取媒體文件,參數(shù):媒體id
- getServerIp() 獲取企業(yè)微信服務(wù)器IP地址列表 返回?cái)?shù)組array('127.0.0.1','127.0.0.1')
- createDepartment($data) 創(chuàng)建部門,參數(shù): array("name"=>"郵箱產(chǎn)品組","parentid"=>"1","order" => "1")
- updateDepartment($data) 更新部門,參數(shù): array("id"=>"1","name"=>"郵箱產(chǎn)品組","parentid"=>"1","order" => "1")
- deleteDepartment($id) 刪除部門,參數(shù):要?jiǎng)h除的部門id
- moveDepartment($data) 移動(dòng)部門,參數(shù):array("department_id" => "5","to_parentid" => "2","to_position" => "1")
- getDepartment() 獲取部門列表,返回部門數(shù)組。其中department部門列表數(shù)據(jù)。以部門的order字段從小到大排列
- createUser($data) 創(chuàng)建成員,參數(shù)請看php文件內(nèi)方法說明
- updateUser($data) 更新成員,參數(shù)請看php文件內(nèi)方法說明
- deleteUser($userid) 刪除成員,參數(shù):員工UserID
- deleteUsers($userids) 批量刪除成員,參數(shù):員工UserID數(shù)組
- getUserInfo($userid) 獲取成員信息,參數(shù):員工UserID
- getUserList($department_id,$fetch_child=0,$status=0) 獲取部門成員,參數(shù):部門id,是否遞歸獲取子部門,獲取類型。 > 0獲取全部員工,1獲取已關(guān)注成員列表,2獲取禁用成員列表,4獲取未關(guān)注成員列表。status可疊加
- getUserListInfo($department_id,$fetch_child=0,$status=0) 獲取部門成員詳情,參數(shù)同上
- getUserId($code,$agentid) 根據(jù)code獲取員工UserID與手機(jī)設(shè)備號(hào),參數(shù):Oauth2.0或者二次驗(yàn)證返回的code值,跳轉(zhuǎn)鏈接時(shí)所在的企業(yè)應(yīng)用ID
- sendInvite($userid,$invite_tips='') 邀請成員關(guān)注
- createTag($data) 創(chuàng)建標(biāo)簽,參數(shù):array("tagname" => "UI")
- updateTag($data) 更新標(biāo)簽,參數(shù):array("tagid" => "1","tagname" => "UI")
- deleteTag($tagid) 刪除標(biāo)簽,參數(shù):標(biāo)簽TagID
- getTag($tagid) 獲取標(biāo)簽成員,參數(shù):標(biāo)簽TagID
- addTagUser($data) 增加標(biāo)簽成員,參數(shù)請看php文件內(nèi)方法說明
- delTagUser($data) 刪除標(biāo)簽成員,參數(shù)請看php文件內(nèi)方法說明
- getTagList() 獲取標(biāo)簽列表,返回標(biāo)簽數(shù)組
- sendMessage($data) 主動(dòng)發(fā)送信息接口,參數(shù)請看php文件內(nèi)方法說明
- authSucc($userid) 二次驗(yàn)證,參數(shù): 員工UserID
- getOauthRedirect($callback,$state='STATE',$scope='snsapi_base') 組合授權(quán)跳轉(zhuǎn)接口url
7. wechatpay.class.php 舊版微信支付V2接口類庫
舊版微信支付類庫(微信支付V2),已移動(dòng)至old_version目錄下。
自2014年8月開始申請到的微信支付都是V3接口,據(jù)官方說V2的會(huì)陸續(xù)升級為V3接口,但時(shí)間及升級渠道未確認(rèn)。
主要功能
- 獲取access_token (初級權(quán)限)
- 調(diào)用地址組件 (支付權(quán)限)
- 生成訂單簽名數(shù)據(jù) (支付權(quán)限)
- 訂單成功回調(diào) (支付權(quán)限)
- 發(fā)貨通知 (支付權(quán)限)
- 支付訂單查詢 (支付權(quán)限)
> 備注:
> 初級權(quán)限:基本權(quán)限,任何正常的公眾號(hào)都有此權(quán)限
> 菜單權(quán)限:正常的服務(wù)號(hào)、認(rèn)證后的訂閱號(hào)擁有此權(quán)限
> 認(rèn)證權(quán)限:分為訂閱號(hào)、服務(wù)號(hào)認(rèn)證,如前綴服務(wù)號(hào)則僅認(rèn)證的服務(wù)號(hào)有此權(quán)限,否則為認(rèn)證后的訂閱號(hào)、服務(wù)號(hào)都有此權(quán)限
> 支付權(quán)限:僅認(rèn)證后的服務(wù)號(hào)可以申請此權(quán)限
初始化動(dòng)作
$options = array(
'appid'=>'wxdk1234567890', //填寫高級調(diào)用功能的app id, 請?jiān)谖⑿砰_發(fā)模式后臺(tái)查詢
'appsecret'=>'xxxxxxxxxxxxxxxxxxx', //填寫高級調(diào)用功能的密鑰
'partnerid'=>'88888888', //財(cái)付通商戶身份標(biāo)識(shí),支付權(quán)限專用,沒有可不填
'partnerkey'=>'', //財(cái)付通商戶權(quán)限密鑰Key,支付權(quán)限專用
'paysignkey'=>'' //商戶簽名密鑰Key,支付權(quán)限專用
);
$weObj = new Wechat($options); //創(chuàng)建實(shí)例對象
//TODO:調(diào)用$weObj各實(shí)例方法
主動(dòng)接口方法:
- checkAuth($appid='',$appsecret='',$token='') 獲取access_token。可根據(jù)appid和appsecret獲取,或手動(dòng)指定access_token
- resetAuth($appid='') 刪除驗(yàn)證數(shù)據(jù)
- getSignature($arrdata,'sha1') 生成簽名字串
- generateNonceStr($length=16) 獲取隨機(jī)字串
- createNativeUrl($productid) 生成原生支付url
- createPackage($out_trade_no,$body,$total_fee,$notify_url,$spbill_create_ip,$fee_type=1,$bank_type="WX",$input_charset="UTF-8",$time_start="",$time_expire="",$transport_fee="",$product_fee="",$goods_tag="",$attach="") 生成訂單package字符串
- getPaySign($package, $timeStamp, $nonceStr) 支付簽名(paySign)生成方法
- checkOrderSignature($orderxml='') 回調(diào)通知簽名驗(yàn)證
- sendPayDeliverNotify($openid,$transid,$out_trade_no,$status=1,$msg='ok') 發(fā)貨通知
- getPayOrder($out_trade_no) 查詢訂單信息
- setUserToken($user_token) 設(shè)置用戶授權(quán)密鑰
- getAddrSign($url, $timeStamp, $nonceStr, $user_token='') 獲取收貨地址JS的簽名
為開發(fā)框架進(jìn)行適配
為不同的開發(fā)框架進(jìn)行適配緩存操作(保存access_token、jsapi_ticket),及輸出調(diào)試日志。
由于微信api需要緩存access_token與jsapi_ticket,而在不同框架下的緩存方式不同,所以原先在Wechat.class.php和QYWechat.class.php中緩存代碼做了TODO標(biāo)志。 需要各位在使用不同框架時(shí)再進(jìn)行修改,但確實(shí)很麻煩,因?yàn)閷Y(jié)構(gòu)進(jìn)行了修改。
取消了原先同步維護(hù)的Thinkphp版本,為Wechat類增加操作緩存3個(gè)重載方法setCache
, getCache
, removeCache
,以及修改log
方法可以重載。 分別來實(shí)現(xiàn)在不同開發(fā)框架下的設(shè)置緩存、讀取緩存、清除緩存、日志輸出4個(gè)功能。
在不同的開發(fā)框架下使用Wechat類庫,請繼承Wechat類,根據(jù)需要實(shí)現(xiàn)這4個(gè)方法。
可參考Thinkphp版的TPWechat.class.php
為不同框架進(jìn)行適配。 歡迎提交其他框架的適配文件到項(xiàng)目庫來。
為Thinkphp進(jìn)行適配的示例如下:
/**
* 微信公眾平臺(tái)PHP-SDK, ThinkPHP實(shí)例
* @author dodgepudding@gmail.com
* @link https://github.com/dodgepudding/wechat-php-sdk
* @version 1.2
* usage:
* $options = array(
* 'token'=>'tokenaccesskey', //填寫你設(shè)定的key
* 'encodingaeskey'=>'encodingaeskey', //填寫加密用的EncodingAESKey
* 'appid'=>'wxdk1234567890', //填寫高級調(diào)用功能的app id
* 'appsecret'=>'xxxxxxxxxxxxxxxxxxx' //填寫高級調(diào)用功能的密鑰
* );
* $weObj = new TPWechat($options);
* $weObj->valid();
* ...
*
*/
class TPWechat extends Wechat
{
/**
* log overwrite
* @see Wechat::log()
*/
protected function log($log){
if ($this->debug) {
if (function_exists($this->logcallback)) {
if (is_array($log)) $log = print_r($log,true);
return call_user_func($this->logcallback,$log);
}elseif (class_exists('Log')) {
Log::write('wechat:'.$log, Log::DEBUG);
}
}
return false;
}
/**
* 重載設(shè)置緩存
* @param string $cachename
* @param mixed $value
* @param int $expired
* @return boolean
*/
protected function setCache($cachename,$value,$expired){
return S($cachename,$value,$expired);
}
/**
* 重載獲取緩存
* @param string $cachename
* @return mixed
*/
protected function getCache($cachename){
return S($cachename);
}
/**
* 重載清除緩存
* @param string $cachename
* @return boolean
*/
protected function removeCache($cachename){
return S($cachename,null);
}
}
調(diào)用示例
官方Wechat調(diào)用示例:
//test1.php
include "wechat.class.php";
$options = array(
'token'=>'tokenaccesskey', //填寫你設(shè)定的key
'encodingaeskey'=>'encodingaeskey' //填寫加密用的EncodingAESKey,如接口為明文模式可忽略
);
$weObj = new Wechat($options);
$weObj->valid();//明文或兼容模式可以在接口驗(yàn)證通過后注釋此句,但加密模式一定不能注釋,否則會(huì)驗(yàn)證失敗
$type = $weObj->getRev()->getRevType();
switch($type) {
case Wechat::MSGTYPE_TEXT:
$weObj->text("hello, I'm wechat")->reply();
exit;
break;
case Wechat::MSGTYPE_EVENT:
break;
case Wechat::MSGTYPE_IMAGE:
break;
default:
$weObj->text("help info")->reply();
}
企業(yè)號(hào)API類庫調(diào)用示例:
可參考test目錄下的qydemo.php
include "wechat.class.php";
$options = array(
'token'=>'9Ixxxxxxx', //填寫應(yīng)用接口的Token
'encodingaeskey'=>'d4o9WVg8sxxxxxxxxxxxxxxxxxxxxxx',//填寫加密用的EncodingAESKey
'appid'=>'wxa07979baxxxxxxxx', //填寫高級調(diào)用功能的appid
);
$weObj = new Wechat($options);
$weObj->valid(); //注意, 企業(yè)號(hào)與普通公眾號(hào)不同,必須打開驗(yàn)證,不要注釋掉
$type = $weObj->getRev()->getRevType();
switch($type) {
case Wechat::MSGTYPE_TEXT:
$weObj->text("hello, I'm wechat")->reply();
exit;
break;
case Wechat::MSGTYPE_EVENT:
break;
case Wechat::MSGTYPE_IMAGE:
break;
default:
$weObj->text("help info")->reply();
}
擴(kuò)展包Wechatext調(diào)用示例:
// old_version/test/test2.php
include "wechatext.class.php";
function logdebug($text){
file_put_contents('./data/log.txt',$text."\n",FILE_APPEND);
};
$options = array(
'account'=>'demo@domain.com',
'password'=>'demo',
'datapath'=>'./data/cookie_',
'debug'=>true,
'logcallback'=>'logdebug'
);
$wechat = new Wechatext($options);
if ($wechat->checkValid()) {
// 獲取用戶信息
$data = $wechat->getInfo('3974255');
var_dump($data);
// 獲取最新一條消息
$topmsg = $wechat->getTopMsg();
var_dump($topmsg);
// 主動(dòng)回復(fù)消息
if ($topmsg && $topmsg['has_reply']==0)
$wechat->send($topmsg['fakeid'],'hi '.$topmsg['nick_name'].',rev:'.$topmsg['content']);
}
微信二維碼Wechatauth登陸示例:
// old_version/test/test3.php
include "../wechatauth.class.php";
session_start();
$sid = session_id();
$options = array(
'account'=>$sid,
'datapath'=>'../data/cookiecode_',
);
$wechat = new Wechatauth($options);
if (isset($_POST['code'])) {
$logincode = $_POST['code'];
$vres = $wechat->set_login_code($logincode)->verify_code();
if ($vres===false) {
$result = array('status'=>0);
} else {
$result = array('status'=>$vres);
if ($vres==200) {
$result['info'] = $wechat->get_login_info();
$result['cookie'] = $wechat->get_login_cookie(true);
}
}
die(json_encode($result));
}
$logincode = $wechat->get_login_code(); //獲取授權(quán)碼
$qrimg = $wechat->get_code_image(); //待輸出的二維碼圖片
HTML部分請看old_version/test/test3.php, 主要是定時(shí)ajax查詢是否已經(jīng)授權(quán)成功
新版微信JSAPI調(diào)用DEMO:
請看test/jsapi目錄