溫馨提示×

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

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

微信公眾號(hào)完整開(kāi)發(fā)的示例分析

發(fā)布時(shí)間:2021-06-08 10:19:30 來(lái)源:億速云 閱讀:314 作者:小新 欄目:移動(dòng)開(kāi)發(fā)

這篇文章將為大家詳細(xì)講解有關(guān)微信公眾號(hào)完整開(kāi)發(fā)的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

這篇文章介紹的內(nèi)容是關(guān)于微信公眾號(hào)開(kāi)發(fā)完整教程一,有著一定的參考價(jià)值,現(xiàn)在分享給大家,有需要的朋友可以參考一下

因?yàn)楣ぷ鞯男枰@一兩年對(duì)微信公眾號(hào)和小程序,項(xiàng)目制作的比較多。所以我才打算寫一篇全面的制作教程,當(dāng)然了,最好的教程是微信工作平臺(tái)的文檔。我這里只是講述一下我的工作中的制作流程。所有相關(guān)文章的源碼,我托管在我自己的github上面,歡迎關(guān)注:地址點(diǎn)擊打開(kāi)鏈接。接下來(lái)開(kāi)始我們的教程。

1.微信與公眾平臺(tái)的區(qū)別:

微信:即時(shí)聊天的軟件,屬于一對(duì)一的關(guān)系

微信公眾平臺(tái):屬于一對(duì)多的關(guān)系。

2.訂閱號(hào)與服務(wù)號(hào)的區(qū)別:

訂閱號(hào):針對(duì)個(gè)人或媒體每天可以群發(fā)1條信息,默認(rèn)不具有自定義菜單。服務(wù)器號(hào):針對(duì)企業(yè)或銀行每月可以群發(fā)4條信息,默認(rèn)具有自定義菜單。運(yùn)營(yíng)主體是組織(比如企業(yè)、媒體、公益組織)的,可以申請(qǐng)服務(wù)號(hào)。運(yùn)營(yíng)主體是組織和個(gè)人的可以申請(qǐng)訂閱號(hào),但是個(gè)人不能申請(qǐng)服務(wù)號(hào)。

3.公眾平臺(tái)的兩種模式:

1、編輯模式:直接使用微信公眾平臺(tái)所提供的后臺(tái)操作進(jìn)行用戶交互。編輯模式可以使用在如下的場(chǎng)景:不具備開(kāi)發(fā)能力的運(yùn)營(yíng)者,主要是進(jìn)行品牌宣傳、新聞媒體、自助客服的公眾賬號(hào),運(yùn)營(yíng)初期,不需要特別多的功能,開(kāi)發(fā)模式系統(tǒng)升級(jí),故障等特殊情況

2、開(kāi)發(fā)者模式:直接使用接口代碼實(shí)現(xiàn)用戶的交流

4.微信公眾平臺(tái)前期準(zhǔn)備:

注冊(cè)公眾平臺(tái),擁有線上服務(wù)器

5.認(rèn)識(shí)一下編輯模式:

原理:

微信公眾號(hào)完整開(kāi)發(fā)的示例分析

5.1消息群發(fā):

微信公眾號(hào)完整開(kāi)發(fā)的示例分析

選擇對(duì)象選擇素材進(jìn)行群發(fā):

微信公眾號(hào)完整開(kāi)發(fā)的示例分析

5.2:自定義菜單:

啟用自定義菜單,并開(kāi)啟:

微信公眾號(hào)完整開(kāi)發(fā)的示例分析

點(diǎn)擊查看,進(jìn)入設(shè)置界面:

微信公眾號(hào)完整開(kāi)發(fā)的示例分析

微信公眾號(hào)完整開(kāi)發(fā)的示例分析

5.3自動(dòng)回復(fù):

微信公眾號(hào)完整開(kāi)發(fā)的示例分析

上述講述的主要是編輯模式的使用,我想很多人應(yīng)該都會(huì)使用,其實(shí)和我們平常在論壇編輯文章和帖子差不多。

6.開(kāi)發(fā)者模式

原理:

微信公眾號(hào)完整開(kāi)發(fā)的示例分析

6.1第一步我們要開(kāi)啟開(kāi)發(fā)者模式:

注意:在開(kāi)啟開(kāi)發(fā)者模式之后編輯模式中部分功能不能正常使用。即開(kāi)發(fā)者模式跟編輯模式存在沖突。進(jìn)入設(shè)置界面:

微信公眾號(hào)完整開(kāi)發(fā)的示例分析

修改配置:

微信公眾號(hào)完整開(kāi)發(fā)的示例分析

設(shè)置結(jié)果如下圖:填寫上你的服務(wù)器文件地址,token,點(diǎn)擊提交,驗(yàn)證即可。如果提交并驗(yàn)證通過(guò),就進(jìn)入到開(kāi)發(fā)者模式

微信公眾號(hào)完整開(kāi)發(fā)的示例分析

微信公眾號(hào)完整開(kāi)發(fā)的示例分析

6.2我線上的驗(yàn)證代碼如下:
public function valid(){
//獲取隨機(jī)字符串
$echoStr = input("echostr");
if($echoStr){
// 驗(yàn)證接口的有效性,由于接口有效性的驗(yàn)證必定會(huì)傳遞echostr 參數(shù)
if($this ->checkSignature()){
echo $echoStr;
exit;
}
}else{
$this->responseMsg();
}
}
protected function checkSignature()
{
// 微信加密簽名
$signature = input("signature");
$timestamp = input("timestamp");//時(shí)間戳
$nonce =input("nonce");//隨機(jī)數(shù)
$token = "weixin";  //token值,必須和你設(shè)置的一樣
$tmpArr =array($token,$timestamp,$nonce);
sort($tmpArr,SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr =sha1($tmpStr);
if($tmpStr == $signature){
return true;
}else{
return false;
}
}

關(guān)于上述代碼中的變量來(lái)源,微信都有詳細(xì)的說(shuō)明,我搭建的公眾號(hào)使用的是PHP7.0版本,TP5.0框架。在這里說(shuō)明一下。

上述代碼只會(huì)執(zhí)行一次,開(kāi)啟開(kāi)發(fā)者模式之后,就不會(huì)在執(zhí)行,只會(huì)執(zhí)行上述代碼中的

responseMsg

方法。

我們先上傳一段測(cè)試代碼試試,回復(fù)文本消息,是否有回復(fù),代碼如下:

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;
}
}

結(jié)果如下:

微信公眾號(hào)完整開(kāi)發(fā)的示例分析,由于微信的網(wǎng)頁(yè)授權(quán)的限制,所以我們可以申請(qǐng)測(cè)試賬號(hào),我這里使用的就是測(cè)試賬號(hào)。上述的開(kāi)啟開(kāi)發(fā)者模式是一樣的。只需要去申請(qǐng)一個(gè)測(cè)試賬號(hào)就好。申請(qǐng)的地方:

微信公眾號(hào)完整開(kāi)發(fā)的示例分析

如果出現(xiàn)上述的代碼,說(shuō)明我們已經(jīng)測(cè)試成功。接下來(lái),我們開(kāi)始獲取access_token的值,這個(gè)參數(shù)對(duì)于我們來(lái)說(shuō)很重要。因?yàn)?/p>

access_token是公眾號(hào)的全局唯一接口調(diào)用憑據(jù),公眾號(hào)調(diào)用各接口時(shí)都需使用access_token。開(kāi)發(fā)者需要進(jìn)行妥善保存。access_token的存儲(chǔ)至少要保留512個(gè)字符空間。access_token的有效期目前為2個(gè)小時(shí),需定時(shí)刷新,重復(fù)獲取將導(dǎo)致上次獲取的access_token失效。access_token是身份認(rèn)證 其他接口基本上都需要使用該值進(jìn)行驗(yàn)證。

7.access_token獲?。海梢栽诒镜販y(cè)試)

7.1查看接口說(shuō)明:

微信公眾號(hào)完整開(kāi)發(fā)的示例分析

獲取access_token方式一:

微信公眾號(hào)完整開(kāi)發(fā)的示例分析

結(jié)果如下:

微信公眾號(hào)完整開(kāi)發(fā)的示例分析

獲取access_token方式二:

微信公眾號(hào)完整開(kāi)發(fā)的示例分析

結(jié)果如下:

微信公眾號(hào)完整開(kāi)發(fā)的示例分析

我們開(kāi)始對(duì)上述的代碼進(jìn)行封裝,因?yàn)閍ccess_token,每天只能調(diào)用2000次,所以我們要緩存起來(lái),這樣才能達(dá)到復(fù)用的效果,

7.2:curl封裝發(fā)送請(qǐng)求和獲取access_token封裝:

// 獲取請(qǐng)求的地址的方法

i

f(!function_exists("http_curl")){
function http_curl($url,$data =array(),$method ="get",$returnType ="json")
{
//1.開(kāi)啟會(huì)話
$ch = curl_init();
//2.設(shè)置參數(shù)
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);
//執(zhí)行會(huì)話
$json = curl_exec($ch);
curl_close($ch);
if($returnType == "json"){
return json_decode($json,true);
}
return $json;
}
}
if(!function_exists('get_access_token')){
function get_access_token()
{
$appid = "wx1ba8f59d9e2c0be0"; //微信的appid
$secret ="9e65155599fb9ec047455e197ff6e121"; //微信的開(kāi)發(fā)者密鑰
// 讀取緩存中的內(nèi)容
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['access_token'];
$obj->set($appid,$value,7000);
}
return $value;
}
}

上述代碼就是我對(duì)這兩個(gè)方法的封裝,其中我們用到了緩存技術(shù):緩存的方法如下:

// memcache操作類

class MyMemcache{
public $conn;
public $isMemcache =true;
public function __construct($host="127.0.0.1",$port='11211')
{
//  建立連接
if(class_exists('MyMemcache')){
$obj =new \Memcache();
}else{
$this ->isMemcache =false;
$obj =new \Memcached();
}
$obj ->addServer($host,$port);
$this ->conn =$obj;
}
//獲取數(shù)據(jù)    
public function get($key)
{
return $this->conn->get($key);
}
//設(shè)置數(shù)據(jù)
public function set($key,$value,$expire=0)
{
if($this->isMemcache){
$this->conn->set($key,$value,0,$expire);
}else{
// Memcached擴(kuò)展的操作方式
$this->conn->set($key,$value,$expire);
}
}
}

結(jié)合上述的三個(gè)方法,我們就可以實(shí)現(xiàn)獲取access_token的值,并保存在緩存系統(tǒng),7000s去重新獲取一次。

上述的步驟完成,我們就算是對(duì)微信公眾號(hào)的開(kāi)發(fā)的基本準(zhǔn)備全部準(zhǔn)備完畢,接下來(lái)就開(kāi)始對(duì)著微信開(kāi)發(fā)者文檔進(jìn)行開(kāi)發(fā)和數(shù)據(jù)的替換了。第一節(jié)先講述到這里.....

相關(guān)文章推薦:
1.微信公眾號(hào)開(kāi)發(fā)完整教程二
2.微信公眾號(hào)開(kāi)發(fā)完整教程三
3.微信公眾號(hào)開(kāi)發(fā)完整教程四
相關(guān)視頻推薦:
1.php微信接口開(kāi)發(fā)實(shí)戰(zhàn)項(xiàng)目視頻教程 聊天機(jī)器人+微信支付
2.開(kāi)發(fā)微信小程序視頻教程

關(guān)于“微信公眾號(hào)完整開(kāi)發(fā)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

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

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

AI