一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - 微信公眾平臺開發教程⑥ 微信開發集成類的使用圖文詳解

微信公眾平臺開發教程⑥ 微信開發集成類的使用圖文詳解

2021-07-31 16:15moTzxx PHP教程

這篇文章主要介紹了微信公眾平臺開發之微信開發集成類的使用,結合圖文形式詳細分析了微信開發集成類的原理、功能、用法及相關操作注意事項,需要的朋友可以參考下

本文實例講述了微信公眾平臺開發之微信開發集成類的使用。分享給大家供大家參考,具體如下:

背景

 

  這幾天又在接觸微信php方面的開發,認為之前寫的文章確實有些亂,剛好發現了一個不錯的集成類(看原始代碼,出自“云知夢軍哥”,不算打廣告,只是尊重別人的開發成果,謝謝)里面涉及了非常全面的函數,在此針對我自己的實際使用過程簡單的描述一下希望能給同道小白們一個誠懇的引導 ...

  框架:thinkphp 3.2.3

前期準備:

 

①.微信公眾平臺的配置

這里不贅述,具體的可以參考我前面所寫的1、2章,個人認為還是比較全面的

②. 將文件 weixin.class.php 放在對應的 library 目錄中

不過本人人開發是基于 thinkphp 框架,如果使用了其它的方式,注意更改引用路徑,相信還是較為容易的,參考截圖如下:

微信公眾平臺開發教程⑥ 微信開發集成類的使用圖文詳解

③. 對應的數據庫中需要新建一個表

當然,后期優化可以考慮去掉或自行設計,在這里個人覺得比較合理,也方便自己測試(公眾號在線接口調試工具)

微信公眾平臺開發教程⑥ 微信開發集成類的使用圖文詳解

④. 此表是用來微信授權時自動存儲公眾號信息及其token 獲取時間

而對應操作此表的代碼位于 weixin.class 中的 getaccesstoken()方法,

如果不是采用的 thinkphp 框架,可針對此方法中的 sql 語句進行替換截取部分代碼可供參考

微信公眾平臺開發教程⑥ 微信開發集成類的使用圖文詳解

一.開發者模式配置

 

①. 參考配置截圖

微信公眾平臺開發教程⑥ 微信開發集成類的使用圖文詳解

②. 注意匹配對應目錄以及令牌

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
 * 微信開發配置控制器
 * class weixincontroller
 * @package m\controller
 */
class weixincontroller extends controller
{
 public function index()
 {
 import('org.wechat.weixin');
 //參數傳值 token、appid、appsecert
 $wechat = new \weixin('zxxxi', 'wxxxxxxxxx89', 'efxxxxxxxxxxxxxxxxxxxxxxxb7');
 if (!isset($_get['echostr'])) {
  //todo 調用響應消息函數 自動回復
  $wechat->responsemsg();
 } else {
  //實現網址接入,調用驗證消息函數
  $wechat->valid();
 }
 }
}

③. 必要文件上傳

    微信公眾平臺近期發現規定需要在相應域名的根目錄下上傳文件,具體可從公眾號下載。

  微信公眾平臺開發教程⑥ 微信開發集成類的使用圖文詳解

二. 請求授權登錄,獲取微信用戶信息

 

①. 代碼參考

    下面是本人摘抄并精簡的部分代碼,具體的業務邏輯需要自己相應進行補充或刪減

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import('org.wechat.weixin');
//參數傳值 token、appid、appsecert
$wechat=new \weixin('zxxxxi','wxxxxxxxxxxxxx9','efxxxxxxxxxxxxxxxxxxxxxxxxxxxx7');
//可理解為這是當下的鏈接地址
$url = "http://www.xxxxx.com".$_server['request_uri'];
//todo 判斷 memcache是否有值,是否過期 (此處只是一個判斷舉例)
if(!s(session('xxxname').'_nameid')){
 if(!$_get['code']){
 $redirect_uri = $url;
 $urls=$wechat->getoauthredirect($redirect_uri);
 header("location:".$urls);
 die;
 }
}
$ret=$wechat->getoauthaccesstoken();
//todo 如果獲得 token值
if($ret){
 $openid = $ret['openid'];
 $user_info = $wechat->getoauthuserinfo($ret['access_token'],$openid);
 //查詢數據庫是否存在
 $userdata = m('users')
 ->where("openid = '$openid'")
 ->field('user_id,user_name,abnormal')
 ->find();
 if ($userdata['user_id']) {
 //執行操作 或者跳轉頁面
 header("location:???????");
 }else{
 //沒有帳號需要轉到用戶名填寫頁面來完成授權
 $maxuid = m('users')->max('user_id');
 $user['openid'] = $openid;
 $user['nickname'] = $user_info['nickname'];
 $user['sex'] = $user_info['sex'];
 $user['reg_time'] = time();
 $user['user_img'] = $user_info['headimgurl'];
 //todo 進行新用戶的添加
 $addtag = add('users',$user);
 }
}else{
//重新跳轉,或其他操作...
}

②. 手機微信端登錄對應鏈接的結果

 微信公眾平臺開發教程⑥ 微信開發集成類的使用圖文詳解

③. 補充說明

 

?
1
$user_info = $wechat->getoauthuserinfo($ret['access_token'],$openid);

   此處返回的$user_info 為授權用戶的詳細信息,可追蹤方法查看源代碼中 oauth_userinfo_url 的定義開發者文檔有介紹其意義,之前的兩篇文章里也做了簡單介紹

三、微信端分享功能

 

①. 配置微信分享相應數據

下面的方法個人設計面向對象時是在繼承的 controller 構造函數中初始化調用的,大家可以按自己需求放置

?
1
2
3
4
5
6
7
8
9
10
11
/**
 * 配置微信分享功能
 */
public function getwxshare(){
 import('org.wechat.weixin');
 $wechat=new \weixin('zxxxxi','wxxxxxxxxxxxx9','efxxxxxxxxxxxxxxxxxxb7');
 $url = "http://www.xxxxxmi.com".$_server['request_uri'];
 $res = $wechat->getjssign($url);
 $res['wxurl'] = $url;
 $this->assign('wx',$res);
}

②. 前臺頁面的配置信息

多數就是 html 前臺文件,補充如下的 js 代碼,具體的數據可自己修改

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<script src="http://res.wx.qq.com/open/js/jweixin-1.1.0.js" type="text/javascript"></script>
 
<script>
 /**
 * created by 百鬼夜行 on 2017/4/27.
 */
 //通過config接口注入權限驗證配置
 wx.config({
 debug : false,
 appid : "{$wx.appid}",
 timestamp : "{$wx.timestamp}",
 noncestr : "{$wx.noncestr}",
 url : "{$wx.url}",
 signature : "{$wx.signature}",
 jsapilist : ['onmenusharetimeline', 'onmenushareappmessage', 'onmenushareqq', 'onmenushareweibo']
 });
 wx.ready(function(){
 //朋友圈
 wx.onmenusharetimeline({
  title : "真米如初:美好的東西 如期相遇 值得期待", // 分享標題
  link : "{$wx.wxurl}", // 分享鏈接
  desc : "關注飲食,品質生活。您的健康,是我們最好的堅持,有真米,生活才夠美!", //分享描述
  imgurl : "http://img.52zhenmi.com/public/upload/20170426/149321008494428.jpg", // 分享圖標
 });
 //發送給好友
 wx.onmenushareappmessage({
  title : "真米如初:美好的東西 如期相遇 值得期待", // 分享標題
  link : "{$wx.wxurl}", // 分享鏈接
  desc : "關注飲食,品質生活。您的健康,是我們最好的堅持,有真米,生活才夠美!", //分享描述
  imgurl : "http://img.52zhenmi.com/public/upload/20170426/149321008494428.jpg", // 分享圖標
 });
 //qq好友
 wx.onmenushareqq({
  title : "真米如初:美好的東西 如期相遇 值得期待", // 分享標題
  link : "{$wx.wxurl}", // 分享鏈接
  desc : "關注飲食,品質生活。您的健康,是我們最好的堅持,有真米,生活才夠美!", //分享描述
  imgurl : "http://img.52zhenmi.com/public/upload/20170426/149321008494428.jpg", // 分享圖標
 });
 //騰訊微博
 wx.onmenushareweibo({
  title : "真米如初:美好的東西 如期相遇 值得期待", // 分享標題
  link : "{$wx.wxurl}", // 分享鏈接
  desc : "關注飲食,品質生活。您的健康,是我們最好的堅持,有真米,生活才夠美!", //分享描述
  imgurl : "http://img.52zhenmi.com/public/upload/20170426/149321008494428.jpg", // 分享圖標
 });
 });
</script>

③. 最終實現的效果如下

微信公眾平臺開發教程⑥ 微信開發集成類的使用圖文詳解

補充提醒:

(1).首先要保證開發配置信息的準確性

(2).有時會出現token令牌失效的情況,注意本地測試時很可能會影響線上,應該就是獲取新的令牌使得線上的數據庫中不對應,注意一下。

(3).分享頁面的操作,為了方便處理可能出現的失敗情況,可以先用調試模式將wx.config中的 debug值更改為true,待正確無誤后再改回來。針對具體的報錯信息需要查詢微信開發者文檔,相信每一個想走程序猿道路的人,都會強制習慣補坑填坑 ...

?
1
debug : true,

四、公眾號發送消息

 

可用于簡單消息的發送,比如用戶購物完成后對公眾號管理員的消息提醒等.

①. 前提

所要發送信息的用戶關注了當前的公眾號

②. 代碼舉例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
/**
 * 此方法不支持 圖片發送 注意文字的換行顯示
 */
public function postmsg(){
 import('org.wechat.weixin');
 $wechat=new \weixin('zxxxxi','wxxxxxxxxxx9','efxxxxxxxxxxxxxxxxxxxxxxxxxb7');
 $content = "微信公眾號發送:\n";
 $content .= "人生如戲,我們以為可以改變自己的命運,卻沒想到我們的結局早已注定。\n無論怎么做都擺脫不了戲里既定的安排,可謂殊途同歸。";
 $content .= "如此看來,我們的拼搏和掙扎就像小丑在跳舞,徒惹人發笑罷了。";
 //todo 微信用戶唯一標記-openid 前提是對方已經關注公眾號
 $wxopenid = "oiacoxxxxxxxxxxxxxxxxxxxxfe0";
 $wechat->postmaggertouser($wxopenid,$content);
}

③. 實現效果

微信公眾平臺開發教程⑥ 微信開發集成類的使用圖文詳解

五、公眾號自動回復

功能主要用于用戶操作公眾號時的觸發事件處理,比如關注時的消息發送、按鈕點擊的監聽等

①. 主要的配置

其實來源于上面第一節對開發者模式的配置,而舉例代碼中 weixincontroller 的 index()重要的就是那不到十行的代碼

②. 監聽響應消息的函數

監聽響應消息的函數為 weixin.class 中的 responsemsg(),對于其中詳細的數據處理可根據不同的觸發事件路徑進行代碼的修改

    微信公眾平臺開發教程⑥ 微信開發集成類的使用圖文詳解

③. 舉例:關注公眾號后的消息發送

微信公眾平臺開發教程⑥ 微信開發集成類的使用圖文詳解

④. 舉例:

根據用戶的輸入進行消息的自動回復,代碼實際開發中可根據獲得的文字進行項目數據庫中的文字匹配,此處簡單演示即可。

微信公眾平臺開發教程⑥ 微信開發集成類的使用圖文詳解

⑤. 效果實現截圖

微信公眾平臺開發教程⑥ 微信開發集成類的使用圖文詳解 微信公眾平臺開發教程⑥ 微信開發集成類的使用圖文詳解 微信公眾平臺開發教程⑥ 微信開發集成類的使用圖文詳解

附錄

 

因為集成的微信類代碼偏多,不在此粘貼,可從下面的鏈接進行下載參考    

①. 前期文章參考

參考文章一:獲取用戶Openid及個人信息

參考文章二:微信端分享功能

②. 源代碼

源代碼下載 >>>

希望本文所述對大家php程序設計有所幫助。

原文鏈接:https://blog.csdn.net/u011415782/article/details/71171395

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品性久久| 嫩草蜜桃| 色综合久久中文字幕综合网 | 红色播放器 | ange venus与黑人| 性欧美高清理论片 | 久久视频精品3线视频在线观看 | 精品国产一区二区三区久久影院 | 欧美成人一区二区三区 | 国产精品视频免费观看 | 国产在线精品成人一区二区三区 | 欧美日韩国产精品自在自线 | 女同志freelesvoices | 啾咪成人漫画免费 | 四虎影院久久久 | 黑帮大佬与我的365天2标清中文 | 国产女主播在线播放一区二区 | 色噜噜国产精品视频一区二区 | 日本一区二区三区在线 视频 | 无人影院免费观看 | 亚洲毛片免费看 | 成年男人永久免费看片 | 欧美精品99久久久久久人 | 久热这里只有精品99国产6 | 欧美高清免费一级在线 | 全程粗语对白视频videos | 免费看国产一级片 | 特级夫妻大片免费在线播放 | 午夜国产精品视频 | 欧美日韩导航 | 日韩高清成人毛片不卡 | 久久久乱码精品亚洲日韩 | 猫咪社区在线播放 | 奇米888在线看奇米999 | 95在线观看精品视频 | 女同变态 中文字幕 | 日本ww视频 | 男人香蕉好大好爽视频 | 人妖女天堂视频在线96 | 国产高清自拍 | 国产精品国产三级在线专区 |