首頁 > 微信小程式 > 微信開發 > 微信公眾號開發完整教學一

微信公眾號開發完整教學一

不言
發布: 2019-11-30 10:03:50
原創
93005 人瀏覽過

這篇文章介紹的內容是關於微信公眾號開發完整教程一,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

因為工作的需要,這一兩年對微信公眾號和小程序,專案製作的比較多。所以我才打算寫一篇全面的製作教程,當然了,最好的教程是微信工作平台的文檔。我這裡只是講述一下我的工作中的製作流程。所有相關文章的源碼,我託管在我自己的github上面,歡迎關注:地址點擊打開連結。接下來開始我們的教學。

1.微信與公眾平台的區別:

微信:即時聊天的軟體,屬於一對一的關係

微信公眾平台:屬於一對多的關係。

2.訂閱號碼與服務號碼的差異:

訂閱號碼:針對個人或媒體每天可以群發1條訊息,預設不具有自訂菜單。 伺服器號碼:針對企業或銀行每月可以群發4條訊息,預設具有自訂選單。 營運主體是組織(如企業、媒體、公益組織)的,可以申請服務號碼。營運主體是組織和個人的可以申請訂閱號,但是個人不能申請服務號碼。

3.公眾平台的兩種模式:

1、編輯模式:直接使用微信公眾平台所提供的後台操作進行使用者互動。編輯模式可以使用在如下的場景:不具備開發能力的經營者,主要是進行品牌宣傳、新聞媒體、自助客服的公眾帳號,營運初期,不需要特別多的功能,開發模式系統升級,故障等特殊情況

2、開發者模式:直接使用介面代碼實現用戶的交流

4.微信公眾平台前期準備:

#註冊公眾平台,擁有線上伺服器

5.認識編輯模式:

原理:

5.1訊息群發:

選擇物件選擇素材進行群發:


5.2:自訂選單:

#啟用自訂選單,並開啟:


##點擊查看,進入設定介面:



#5.3自動回覆:


上述敘述的主要是編輯模式的使用,我想很多人應該都會使用,其實和我們平常在論壇編輯文章和貼文差不多。

6.開發者模式

原則:


#6.1第一步我們要開啟開發者模式:

注意:在開啟開發者模式之後編輯模式中部分功能不能正常使用。即開發者模式跟編輯模式有衝突。

進入設定介面:


#修改設定:


設定結果如下圖:填寫上你的伺服器檔案位址,token,點選提交,驗證即可。如果提交並驗證通過,就進入開發者模式



6.2我線上的驗證程式碼如下:


public function valid(){
//获取随机字符串
$echoStr = input("echostr");
if($echoStr){
// 验证接口的有效性,由于接口有效性的验证必定会传递echostr 参数
if($this ->checkSignature()){
echo $echoStr;
exit;
}
}else{
$this->responseMsg();
}
}
protected function checkSignature()
{
// 微信加密签名
$signature = input("signature");
$timestamp = input("timestamp");//时间戳
$nonce =input("nonce");//随机数
$token = "weixin";  //token值,必须和你设置的一样
$tmpArr =array($token,$timestamp,$nonce);
sort($tmpArr,SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr =sha1($tmpStr);
if($tmpStr == $signature){
return true;
}else{
return false;
}
}
登入後複製

關於上述程式碼中的變數來源,微信都有詳細的說明,我搭建的公眾號使用的是PHP7.0版本,TP5.0框架。這裡說明一下。

上述程式碼只會執行一次,開啟開發者模式之後,就不會在執行,只會執行上述程式碼中的

responseMsg

方法。

我們先上傳一段測試程式碼試試,回覆文字訊息,是否有回复,程式碼如下:


public function responseMsg()
{
        //get post data, May be due to the different environments
        $postStr = file_get_contents('php://input');    
  //extract post data
        if (!empty($postStr)){
/* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
                   the best way is to check the validity of xml by yourself */
libxml_disable_entity_loader(true);
  $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <Content><![CDATA[%s]]></Content>
                            <FuncFlag>0</FuncFlag>
                            </xml>";
                if(!empty( $keyword ))
{
      $msgType = "text";
    $contentStr = "Welcome to wechat world!";
    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
    echo $resultStr;
}else{
    echo "Input something...";
}
}else {
    echo "";
    exit;
}
}
登入後複製

結果如下:

,由於微信的網頁授權的限制,所以我們可以申請測試帳號,我這裡使用的就是測試帳號。上述的開啟開發者模式是一樣的。只要要去申請一個測試帳號就好。申請的地方:


如果出現上述的程式碼,表示我們已經測試成功。接下來,我們開始取得access_token的值,這個參數對我們來說很重要。因為

access_token是公眾號的全域唯一介面呼叫憑證,公眾號呼叫各介面時都需使用access_token。開發者需要進行妥善保存。 access_token的儲存至少要保留512個字元空間。 access_token的有效期限目前為2小時,需定時刷新,重複取得將導致上次取得的access_token失效。 access_token是身份認證 其他介面基本上都需要使用該值進行驗證。

7.access_token取得:(可在本機測試)

7.1檢視介面說明:


取得access_token方式一:


結果如下:


取得access_token方式二:



############結果如下:###################我們開始對上述的程式碼進行封裝,因為access_token,每天只能呼叫2000次,所以我們要快取起來,這樣才能達到復用的效果,###

7.2:curl封装发送请求和获取access_token封装:


// 获取请求的地址的方法

i

f(!function_exists("http_curl")){
function http_curl($url,$data =array(),$method ="get",$returnType ="json")
{
//1.开启会话
$ch = curl_init();
//2.设置参数
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
if($method!="get"){
curl_setopt($ch,CURLOPT_POST,TRUE);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
}
curl_setopt($ch,CURLOPT_URL,$url);
//执行会话
$json = curl_exec($ch);
curl_close($ch);
if($returnType == "json"){
return json_decode($json,true);
}
return $json;
}
}
if(!function_exists(&#39;get_access_token&#39;)){
function get_access_token()
{
$appid = "wx1ba8f59d9e2c0be0"; //微信的appid
$secret ="9e65155599fb9ec047455e197ff6e121"; //微信的开发者密钥
// 读取缓存中的内容
include_once "MyMemcache.php";  //引入缓存方法文件
$obj = new \MyMemcache("47.104.71.253");
$value = $obj ->get($appid);
if(!$value){
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret;
$result = http_curl($url);
$value = $result[&#39;access_token&#39;];
$obj->set($appid,$value,7000);
}
return $value;
}
}
登入後複製

上述代码就是我对这两个方法的封装,其中我们用到了缓存技术:缓存的方法如下:


// memcache操作类

class MyMemcache{
public $conn;
public $isMemcache =true;
public function __construct($host="127.0.0.1",$port=&#39;11211&#39;)
{
//  建立连接
if(class_exists(&#39;MyMemcache&#39;)){
$obj =new \Memcache();
}else{
$this ->isMemcache =false;
$obj =new \Memcached();
}
$obj ->addServer($host,$port);
$this ->conn =$obj;
}
//获取数据    
public function get($key)
{
return $this->conn->get($key);
}
//设置数据
public function set($key,$value,$expire=0)
{
if($this->isMemcache){
$this->conn->set($key,$value,0,$expire);
}else{
// Memcached扩展的操作方式
$this->conn->set($key,$value,$expire);
}
}
}
登入後複製

结合上述的三个方法,我们就可以实现获取access_token的值,并保存在缓存系统,7000s去重新获取一次。

上述的步骤完成,我们就算是对微信公众号的开发的基本准备全部准备完毕,接下来就开始对着微信开发者文档进行开发和数据的替换了。第一节先讲述到这里.....

相关文章推荐:
1.微信公众号开发完整教程二
2.微信公众号开发完整教程三
3.微信公众号开发完整教程四
相关视频推荐:
1.php微信接口开发实战项目视频教程 聊天机器人+微信支付
2.开发微信小程序视频教程

以上是微信公眾號開發完整教學一的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板