溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

微信公眾平臺開發(fā)之微信開發(fā)集成類怎么用

發(fā)布時(shí)間:2021-08-12 11:37:10 來源:億速云 閱讀:120 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹了微信公眾平臺開發(fā)之微信開發(fā)集成類怎么用,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

前期準(zhǔn)備:

①.微信公眾平臺的配置

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

②. 將文件 Weixin.class.php 放在對應(yīng)的 library 目錄中

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

微信公眾平臺開發(fā)之微信開發(fā)集成類怎么用

③. 對應(yīng)的數(shù)據(jù)庫中需要新建一個(gè)表

當(dāng)然,后期優(yōu)化可以考慮去掉或自行設(shè)計(jì),在這里個(gè)人覺得比較合理,也方便自己測試(公眾號在線接口調(diào)試工具)

微信公眾平臺開發(fā)之微信開發(fā)集成類怎么用

④. 此表是用來微信授權(quán)時(shí)自動(dòng)存儲(chǔ)公眾號信息及其token 獲取時(shí)間

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

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

微信公眾平臺開發(fā)之微信開發(fā)集成類怎么用

一.開發(fā)者模式配置

①. 參考配置截圖

微信公眾平臺開發(fā)之微信開發(fā)集成類怎么用

②. 注意匹配對應(yīng)目錄以及令牌

/**
 * 微信開發(fā)配置控制器
 * Class WeixinController
 * @package M\Controller
 */
class WeixinController extends Controller
{
 public function index()
 {
 import('Org.Wechat.Weixin');
 //參數(shù)傳值 token、AppID、AppSecert
 $wechat = new \Weixin('zxxxi', 'wxxxxxxxxx89', 'efxxxxxxxxxxxxxxxxxxxxxxxb7');
 if (!isset($_GET['echostr'])) {
  //TODO 調(diào)用響應(yīng)消息函數(shù) 自動(dòng)回復(fù)
  $wechat->responseMsg();
 } else {
  //實(shí)現(xiàn)網(wǎng)址接入,調(diào)用驗(yàn)證消息函數(shù)
  $wechat->valid();
 }
 }
}

③. 必要文件上傳

    微信公眾平臺近期發(fā)現(xiàn)規(guī)定需要在相應(yīng)域名的根目錄下上傳文件,具體可從公眾號下載。

  微信公眾平臺開發(fā)之微信開發(fā)集成類怎么用

二. 請求授權(quán)登錄,獲取微信用戶信息

①. 代碼參考

    下面是本人摘抄并精簡的部分代碼,具體的業(yè)務(wù)邏輯需要自己相應(yīng)進(jìn)行補(bǔ)充或刪減

import('Org.Wechat.Weixin');
//參數(shù)傳值 token、AppID、AppSecert
$wechat=new \Weixin('zxxxxi','wxxxxxxxxxxxxx9','efxxxxxxxxxxxxxxxxxxxxxxxxxxxx7');
//可理解為這是當(dāng)下的鏈接地址
$url = "http://www.xxxxx.com".$_SERVER['REQUEST_URI'];
//TODO 判斷 memcache是否有值,是否過期 (此處只是一個(gè)判斷舉例)
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);
 //查詢數(shù)據(jù)庫是否存在
 $userData = M('users')
 ->where("openid = '$openid'")
 ->Field('user_id,user_name,abnormal')
 ->find();
 if ($userData['user_id']) {
 //執(zhí)行操作 或者跳轉(zhuǎn)頁面
 header("Location:???????");
 }else{
 //沒有帳號需要轉(zhuǎn)到用戶名填寫頁面來完成授權(quán)
 $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 進(jìn)行新用戶的添加
 $addTag = add('users',$user);
 }
}else{
//重新跳轉(zhuǎn),或其他操作...
}

②. 手機(jī)微信端登錄對應(yīng)鏈接的結(jié)果

 微信公眾平臺開發(fā)之微信開發(fā)集成類怎么用

③. 補(bǔ)充說明

$user_info = $wechat->getOauthUserinfo($reT['access_token'],$openid);

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

三、微信端分享功能

①. 配置微信分享相應(yīng)數(shù)據(jù)

下面的方法個(gè)人設(shè)計(jì)面向?qū)ο髸r(shí)是在繼承的 Controller 構(gòu)造函數(shù)中初始化調(diào)用的,大家可以按自己需求放置

/**
 * 配置微信分享功能
 */
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);
}

②. 前臺頁面的配置信息

多數(shù)就是 html 前臺文件,補(bǔ)充如下的 js 代碼,具體的數(shù)據(jù)可自己修改

<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接口注入權(quán)限驗(yàn)證配置
 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 : "真米如初:美好的東西 如期相遇 值得期待", // 分享標(biāo)題
  link : "{$wx.wxurl}", // 分享鏈接
  desc : "關(guān)注飲食,品質(zhì)生活。您的健康,是我們最好的堅(jiān)持,有真米,生活才夠美!", //分享描述
  imgUrl : "http://img.52zhenmi.com/Public/upload/20170426/149321008494428.jpg", // 分享圖標(biāo)
 });
 //發(fā)送給好友
 wx.onMenuShareAppMessage({
  title : "真米如初:美好的東西 如期相遇 值得期待", // 分享標(biāo)題
  link : "{$wx.wxurl}", // 分享鏈接
  desc : "關(guān)注飲食,品質(zhì)生活。您的健康,是我們最好的堅(jiān)持,有真米,生活才夠美!", //分享描述
  imgUrl : "http://img.52zhenmi.com/Public/upload/20170426/149321008494428.jpg", // 分享圖標(biāo)
 });
 //QQ好友
 wx.onMenuShareQQ({
  title : "真米如初:美好的東西 如期相遇 值得期待", // 分享標(biāo)題
  link : "{$wx.wxurl}", // 分享鏈接
  desc : "關(guān)注飲食,品質(zhì)生活。您的健康,是我們最好的堅(jiān)持,有真米,生活才夠美!", //分享描述
  imgUrl : "http://img.52zhenmi.com/Public/upload/20170426/149321008494428.jpg", // 分享圖標(biāo)
 });
 //騰訊微博
 wx.onMenuShareWeibo({
  title : "真米如初:美好的東西 如期相遇 值得期待", // 分享標(biāo)題
  link : "{$wx.wxurl}", // 分享鏈接
  desc : "關(guān)注飲食,品質(zhì)生活。您的健康,是我們最好的堅(jiān)持,有真米,生活才夠美!", //分享描述
  imgUrl : "http://img.52zhenmi.com/Public/upload/20170426/149321008494428.jpg", // 分享圖標(biāo)
 });
 });
</script>

③. 最終實(shí)現(xiàn)的效果如下

微信公眾平臺開發(fā)之微信開發(fā)集成類怎么用

補(bǔ)充提醒:

(1).首先要保證開發(fā)配置信息的準(zhǔn)確性

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

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

debug : true,

四、公眾號發(fā)送消息

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

①. 前提

所要發(fā)送信息的用戶關(guān)注了當(dāng)前的公眾號

②. 代碼舉例

/**
 * 此方法不支持 圖片發(fā)送 注意文字的換行顯示
 */
public function postMsg(){
 import('Org.Wechat.Weixin');
 $wechat=new \Weixin('zxxxxi','wxxxxxxxxxx9','efxxxxxxxxxxxxxxxxxxxxxxxxxb7');
 $content = "微信公眾號發(fā)送:\n";
 $content .= "人生如戲,我們以為可以改變自己的命運(yùn),卻沒想到我們的結(jié)局早已注定。\n無論怎么做都擺脫不了戲里既定的安排,可謂殊途同歸。";
 $content .= "如此看來,我們的拼搏和掙扎就像小丑在跳舞,徒惹人發(fā)笑罷了。";
 //TODO 微信用戶唯一標(biāo)記-openID 前提是對方已經(jīng)關(guān)注公眾號
 $wxOpenID = "oIaCOxxxxxxxxxxxxxxxxxxxxFe0";
 $wechat->postMaggerToUser($wxOpenID,$content);
}

③. 實(shí)現(xiàn)效果

微信公眾平臺開發(fā)之微信開發(fā)集成類怎么用

五、公眾號自動(dòng)回復(fù)

功能主要用于用戶操作公眾號時(shí)的觸發(fā)事件處理,比如關(guān)注時(shí)的消息發(fā)送、按鈕點(diǎn)擊的監(jiān)聽等

①. 主要的配置

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

②. 監(jiān)聽響應(yīng)消息的函數(shù)

監(jiān)聽響應(yīng)消息的函數(shù)為 Weixin.class 中的 responseMsg(),對于其中詳細(xì)的數(shù)據(jù)處理可根據(jù)不同的觸發(fā)事件路徑進(jìn)行代碼的修改

    微信公眾平臺開發(fā)之微信開發(fā)集成類怎么用

③. 舉例:關(guān)注公眾號后的消息發(fā)送

微信公眾平臺開發(fā)之微信開發(fā)集成類怎么用

④. 舉例:

根據(jù)用戶的輸入進(jìn)行消息的自動(dòng)回復(fù),代碼實(shí)際開發(fā)中可根據(jù)獲得的文字進(jìn)行項(xiàng)目數(shù)據(jù)庫中的文字匹配,此處簡單演示即可。

微信公眾平臺開發(fā)之微信開發(fā)集成類怎么用

⑤. 效果實(shí)現(xiàn)截圖

微信公眾平臺開發(fā)之微信開發(fā)集成類怎么用 微信公眾平臺開發(fā)之微信開發(fā)集成類怎么用 微信公眾平臺開發(fā)之微信開發(fā)集成類怎么用

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“微信公眾平臺開發(fā)之微信開發(fā)集成類怎么用”這篇文章對大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI