国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
*** wechat

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_pushscancode_waitmsg 返回?cái)?shù)組array ('ScanType'=>'qrcode','ScanResult'=>'123123')
  • getRevSendPicsInfo() 獲取自定義菜單的圖片發(fā)送事件信息,事件類型為pic_sysphotopic_photo_or_albumpic_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_dateend_date的差值需小于“最大時(shí)間跨度”(比如最大時(shí)間跨度為1時(shí),begin_dateend_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_pushscancode_waitmsg 返回?cái)?shù)組array ('ScanType'=>'qrcode','ScanResult'=>'123123')
  • getRevSendPicsInfo() 獲取自定義菜單的圖片發(fā)送事件信息,事件類型為pic_sysphotopic_photo_or_albumpic_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è)重載方法setCachegetCacheremoveCache,以及修改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目錄

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
回復(fù)一個(gè)圖片消息 - 傻瓜式微信開發(fā)教程17
微信開發(fā) 介紹+案例使用 52 (上)
微信公眾平臺(tái)API接口擴(kuò)展包
 EasyWeChat在laravel框架中的使用技巧
php微信推送消息接口的實(shí)現(xiàn)方式
php的顏色定義表
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服