關鍵字:微信公眾平台開發入門
作者:貝創工作室
原文: http://www.cnblogs.com/imaker/p/5491433.html
背景知識:微信公眾平台的開發需要有一定的PHP基礎知識,PHP是一種HTML內嵌式的語言,廣泛用於網站開發。微信服務器和開發者的服務器間有兩種數據傳輸方式,分別是XML和JSON。其中XML主要用在接受發送普通消息和事件推送中,而用戶管理、創建自定義菜單和高級群發等則需要用到JOSN格式數據。
在這篇微信公眾平台開發教程中,你可以跟着教程一起在整體上感性了解微信公眾平台的開發框架,可以幫助你更好的去入手。
我們將使用微信公眾賬號西安校園創客空間作為講解的例子,二維碼見底部。
這個入門教程將引導你學會完成如下任務:
- 申請新浪雲計算並創建平台應用
- 申請虛擬主機及為微信平台搭建環境
- 進入微信公眾平台開發模式與接入服務器
- 接口的調用與常用功能的實現
第一節
申請新浪雲計算並創建平台應用
-
創建新浪雲計算SAE應用引擎
申請新浪雲賬號
如果我們使用SAE新浪雲計算平台作為服務器資源,並且申請PHP環境+MySQL數據庫作為程序運行環境。
則申請地址為:直接點擊上述網址,可以看到右上角微博登錄的鏈接。
點擊進入之后,使用新浪微博賬號進行登錄
登錄之后,按照提示注冊個人信息即可。
創建新應用
回到首頁,在菜單頂部選擇 控制台 ,再選擇 雲應用SAE
-
進入SAE應用列表
-
點擊下側的創建新應用,這時會彈出提示, 禁止放置違法違規內容,點擊繼續創建,彈出如下窗口。
選擇一個未使用的appid,如果老是已經被使用不知道該什么好,就填寫你的QQ號或者手機號吧。
填寫二級域名AppID、應用名稱、驗證碼,開發語言選擇PHP5.3,全部應用和框架下面選擇第一個【PHP 空應用】。然后點擊左下方的創建應用
應用創建成功。並自動跳轉到應用列表中,可以看到已經有剛才創建的西安校園創客空間這個應用。
創建版本
點擊剛才創建的應用名稱,進入應用主頁。
點擊左側的應用管理下面的代碼管理,
在代碼管理中,選擇使用SVN托管的方式。
跳轉到代碼管理
點擊右側的“創建版本”
我創建的是520,但是版本號默認為1,輸入后點擊創建,會彈出安全登錄,需要輸入安全密碼,如果不知道或者忘記了,就點里面的找回密碼,重新設置一下就行了。
驗證通過之后,如下所示
到這里,就成功創建了一個域名URL為 http://1.xaxymaker.applinzi.com/ 的應用了,記住你的這個URL,后面開發模式接入時將會用到。
上傳代碼
下述代碼是一個微信接口文件,看不懂沒有關系,你把代碼拿去直接用就行了,后面你可能慢慢會明白!
-
1 <?php 2 //判斷用戶發送消息類型 貝創工作室 CopyRight 2016 3 4 5 define("TOKEN", "weixin"); 6 // $conn=mysql_connect('localhost','job','G2yI2zFR'); // 使用數據表 a_news 7 // mysql_select_db('sqljob',$conn); 8 // mysql_query("SET NAMES 'UTF8'"); 9 // mysql_query("SET CHARACTER SET UTF8"); 10 // mysql_query("SET CHARACTER_SET_RESULTS=UTF8'"); 11 12 $wechatObj = new wechatCallbackapiTest(); 13 if (!isset($_GET['echostr'])) { 14 // $wechatObj->responseMsg(); 15 $wechatObj->responseMsg(); 16 // $test->jianyan(); 17 }else{ 18 $wechatObj->valid(); 19 } 20 21 class wechatCallbackapiTest 22 { 23 public $fromUsername=''; 24 public $toUsername=''; 25 public function valid() 26 { 27 $echoStr = $_GET["echostr"]; 28 if($this->checkSignature()){ 29 echo $echoStr; 30 exit; 31 } 32 } 33 34 private function checkSignature() 35 { 36 $signature = $_GET["signature"]; 37 $timestamp = $_GET["timestamp"]; 38 $nonce = $_GET["nonce"]; 39 $token = TOKEN; 40 $tmpArr = array($token, $timestamp, $nonce); 41 sort($tmpArr, SORT_STRING); 42 $tmpStr = implode($tmpArr); 43 $tmpStr = sha1($tmpStr); 44 45 if($tmpStr == $signature){ 46 return true; 47 }else{ 48 return false; 49 } 50 } 51 52 public function responseMsg(){ 53 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 54 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); 55 $fromUsername = $postObj->FromUserName; 56 $toUsername = $postObj->ToUserName; 57 $type = $postObj->MsgType; 58 $event=$postObj->Event; 59 $Event_Key=$postObj->EventKey; 60 $mid=$postObj->MediaId; 61 $link=$postObj->Url; 62 63 $latitude = $postObj->Location_X; 64 $longitude = $postObj->Location_Y; 65 $keyword = trim($postObj->Content); 66 $time = time(); 67 $textTpl = "<xml> 68 <ToUserName><![CDATA[%s]]></ToUserName> 69 <FromUserName><![CDATA[%s]]></FromUserName> 70 <CreateTime>%s</CreateTime> 71 <MsgType><![CDATA[text]]></MsgType> 72 <Content><![CDATA[%s]]></Content> 73 </xml>"; 74 if($keyword!=''){ $contentStr=$keyword;} 75 elseif($type=="image"){$contentStr="您發送的是圖片消息,消息的MediaId是".$mid;} 76 elseif($type=="voice"){$contentStr="您發送的是語音消息,消息的MediaId是".$mid;} 77 elseif($type=="video"){$contentStr="您發送的是視頻消息,消息的MediaId是".$mid;} 78 elseif($type=="location"){$contentStr="您發送的是地理位置消息,您的地理位置是:經度".$latitude."維度:".$longitude;} 79 elseif($type=="link"){$contentStr="您發送的是鏈接消息,消息鏈接為".$link;} 80 elseif($type=="event" && $event=="subscribe"){$contentStr="歡迎關注西安校園創客空間的微信公眾賬號,帶你進入奇妙有趣的微信公眾號開發之旅";} 81 elseif($type="event" && $event=="unsubscribe"){$contentStr="期待您再次關注西安校園創客空間微信公眾賬號。";} 82 else{echo "";} 83 84 $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $contentStr); 85 echo $resultStr; 86 87 } 88 89 } 90 91 92 ?>
我們將使用上述代碼與微信公眾平台對接。
- 將上述代碼用專業的軟件存為utf-8格式的index.php文件后再使用WinRAR壓縮為index.zip,或者關注西安校園創客空間微信公眾號免費獲取為您打包好的豐富微信公眾平台開發代碼與開發教程。( 直接下載我們已經壓縮好的上述代碼的zip文件 下載 )
-
回到SAE的代碼管理界面中。
再選擇“上傳代碼包”,點擊上傳文件,選擇剛才的index.zip文件,點擊上傳,上傳成功后中間是一個綠色的橫條,如下所示
如果沒有綠色的橫條,表示上傳失敗,需要重試。可以考慮在Chrome瀏覽器下重試一下。
點擊編輯代碼按鈕,
有時候需要輸入自己的安全密碼,如果不記得了就點擊“找回密碼”。
安全驗證成功后繼續之前的操作。
我們可以看到index.php已經上傳成功,雙擊可以查看編輯里面的代碼
新浪雲應用的創建就成功了。
充值(本步驟可選擇性進行)
新浪雲SAE實行的是配額免費+超額付費的方式,相關標准請查看SAE價格體系介紹。初期對於大部分用戶來說免費配額已夠用,如果您將來使用量比較大建議預先至少充值100元獲得10000雲豆,以免超額后應用被禁用而影響業務。
第二節 申請虛擬主機及為微信平台搭建環境
- 申請虛擬主機
這里我使用的是雲邦互聯的虛擬空間為大家作以演示,首先,打開網站如下圖:
然后在右上角按照提示注冊即可,選擇使用1G的免費空間。
2、開通空間之后打開控制面板,就可以看到主機信息了。
3、接下來我們用 8uftp 登陸虛擬空間。
4、登錄之后,用 8uftp 將 index.php 文件上傳到虛擬空間的根目錄中的web文件夾下,如下:
至此,你使用虛擬空間為微信公眾平台搭建服務器就成功了,后續只要將實現相應功能的代碼通過8uftp上傳上去即可。
第三節 啟用開發模式與接入服務器
微信公眾平台開發模式
高級功能
微信公眾平台地址:https://mp.weixin.qq.com
登錄微信公眾平台后台,在左側列表中最下方,找到“ 基本配置 ”,點擊進入
進入服務器配置填寫框。
點擊“修改配置”按鈕,則出現下圖。
此處的URL為上篇中介紹的雲應用的域名,而Token在index.php中定義為weixin。EncodingAESKey則不用填,點擊“隨機生成”讓自動生成一個,消息加解密方式選擇“明文模式”,然后點擊“提交”按鈕。
在彈出的提示框中,點擊“確定”
配置修改后如圖所示,再點擊“啟用”按鈕
詢問“是否確定開啟服務器配置”,點擊“確定”
如果提示“token驗證失敗”,可以先重次幾次,微信服務器有時候不穩定。注:如果使用新浪SAE可能要求進行實名認證,請先上傳身份證進行實名認證並通過審核后再試!
如果還是失敗,請先用微信調試器測試一下url和token是否正確。(直接在百度搜索 會有好多免費的哦)
-
-
成功啟用后如上圖。
這使的你是否有一股興奮與驚喜,你已經成功的啟用微信開發模式。
-
第四節 接口的調用與常用功能的實現
示例1:API調用之百度翻譯
申請百度翻譯API接口
下面介紹如何使用百度翻譯 API 制作擁有翻譯功能的公眾賬號。
1、首先,登陸申請成為百度開發者,申請鏈接地址為 http://developer.baidu.com/ 。申請成為開發者之后,登陸該網站,在管理控制台的下拉菜單中選擇開發者服務管理,如下圖所示。
-
我們通過調用百度翻譯的API可以實現英文翻譯中文,中文翻譯英文,中文翻譯日文,日文翻譯中文。目前百度AIP支持這三種語言的翻譯
-
首先進入百度翻譯的網頁,網站如下箭頭所示
-
進入后點擊“使用指南”
-
進入使用智能頁面后,網下瀏覽頁面,在頁面中間部分,即可看到百度翻譯的API接口
-
根據上面的接口,我們可以構建接口代碼:
http://openapi.baidu.com/public/2.0/bmt/translate?client_id=uA6zT1kh5O1UXvTrUuFjFHiK&q={$keyword}&from=auto&to=auto
“9peNkh97N6B9GGj9zBke9tGQ”這一串為自己的百度密鑰,在百度的應用中心單擊基本信息可以看到
-
關鍵代碼為:
case "text";
$tranurl="http://openapi.baidu.com/public/2.0/bmt/translate?client_id=uA6zT1kh5O1UXvTrUuFjFHiK&q={$keyword}&from=auto&to=auto";//百度翻譯地址
$transtr=file_get_contents($tranurl);//讀入文件
$transon=json_decode($transtr);//json解析
//print_r($transon);
$contentStr = $transon->trans_result[0]->dst;//讀取翻譯內容
break;
-
登錄手機微信,最后實現的結果如下:
所用代碼如下:
1 <?php 2 // 百度翻譯 貝創工作室 CopyRight 2016 3 define("TOKEN", "weixin"); 4 $wechatObj = new wechatCallbackapiTest(); 5 if (!isset($_GET['echostr'])) { 6 $wechatObj->responseMsg(); 7 }else{ 8 $wechatObj->valid(); 9 } 10 11 class wechatCallbackapiTest 12 { 13 public $fromUsername=''; 14 public $toUsername=''; 15 public function valid() 16 { 17 $echoStr = $_GET["echostr"]; 18 if($this->checkSignature()){ 19 echo $echoStr; 20 exit; 21 } 22 } 23 24 private function checkSignature() 25 { 26 $signature = $_GET["signature"]; 27 $timestamp = $_GET["timestamp"]; 28 $nonce = $_GET["nonce"]; 29 $token = TOKEN; 30 $tmpArr = array($token, $timestamp, $nonce); 31 sort($tmpArr, SORT_STRING); 32 $tmpStr = implode($tmpArr); 33 $tmpStr = sha1($tmpStr); 34 35 if($tmpStr == $signature){ 36 return true; 37 }else{ 38 return false; 39 } 40 } 41 42 public function responseMsg(){ 43 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 44 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); 45 $fromUsername = $postObj->FromUserName; 46 $toUsername = $postObj->ToUserName; 47 $type = $postObj->MsgType; 48 $event=$postObj->Event; 49 $Event_Key=$postObj->EventKey; 50 $mid=$postObj->MediaId; 51 $link=$postObj->Url; 52 53 $latitude = $postObj->Location_X; 54 $longitude = $postObj->Location_Y; 55 $keyword = trim($postObj->Content); 56 $time = time(); 57 $textTpl = "<xml> 58 <ToUserName><![CDATA[%s]]></ToUserName> 59 <FromUserName><![CDATA[%s]]></FromUserName> 60 <CreateTime>%s</CreateTime> 61 <MsgType><![CDATA[text]]></MsgType> 62 <Content><![CDATA[%s]]></Content> 63 </xml>"; 64 if($keyword!=''){ 65 $id="R90FXoW4OPtCbLkD9Aiaihz0"; 66 $url="http://openapi.baidu.com/public/2.0/bmt/translate?client_id=$id&q=$keyword&from=auto&to=auto"; 67 $res=file_get_contents($url); 68 $res=json_decode($res,true); 69 $contentStr=$res['trans_result'][0]['dst']; 70 } $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $contentStr); 71 echo $resultStr; 72 } 73 } 74 ?>
示例2:API調用之小黃雞
1、注冊simsimi 賬號
URL: http://developer.simsimi.com/signUp
2、 激活賬號
3、 獲取API Key
4、 具體實現
調用小黃雞API 實現
調用simsim($keyword) 函數處理,將其中的“Your API Key” 換成申請到的API Key。
//小黃雞 貝創工作室 CopyRight 2016 public function simsim($keyword){ $key="41250a68-3cb5-43c8-9aa2-d7b3caf519b1"; $url_simsimi="http://sandbox.api.simsimi.com/request.p?key=".$key."&lc=ch&ft=0.0&text=".$keyword; $json=file_get_contents($url_simsimi); // 把整個文件讀入一個字符串中 $result=json_decode($json,true); // 對JSON 格式的字符串進行編碼 //$errorCode=$result['result']; // 調試用 $response=$result['response']; // 回復的消息 if(!empty($response)){ return $response; }else{ $ran=rand(1,5); switch($ran){ case 1: return "小雞雞今天累了,明天再陪你聊天吧。"; break; case 2: return "小雞雞睡覺嘍~~"; break; case 3: return "呼呼~~呼呼~~"; break; case 4: return "你話好多啊,不跟你聊了"; break; case 5: return "感謝您關注西安校園創客空間"."\n"."微信號:xaxymaker"."\n"; break; default: return "感謝您關注西安校園創客空間"."\n"."微信號:xaxymaker"."\n"; break; } } }
同時,微信公眾號還可以實現 天氣查詢 火車查詢 快遞查詢 會員卡、優惠券、大轉盤、微網站、3G相冊之類的。微菜單,微網站,微會員,微團購,微調研,微相冊,微推送,微統計,微支付,微客服,等等功能。
以上便是簡單的微信公眾平台基本教程,如果你用心感悟了,感覺你有所收獲了,一切始於實踐,請按照教程入手,開啟你的微信開發之旅吧!! 如果還有什么不懂的,請掃一掃公眾號二維碼關注,回復“代碼”、“微信教程” ... 全部視頻教程 代碼資料 等着你!!!
感謝你的閱讀,請用心感悟!希望可以幫到初學的您!!分享也是一種快樂!!!請接力。。。
相關教程:(在公眾號中回復數字“ 1 ”即可查看)
微信公眾平台開發入門:[1]開發原理
微信公眾平台開發入門:[2]消息數據接收格式
微信公眾平台開發入門:[3]消息數據發送格式
微信公眾平台開發入門:[4]事件消息類型
微信公眾平台開發入門:[5]開發天氣預報功能
微信公眾平台開發入門:[6]聊天機器人可開發
微信公眾平台開發入門:[7]微信上做人臉識別
微信公眾平台開發入門:[8]開發地圖導航
微信公眾平台開發入門:[9]彩票查詢
微信公眾平台開發入門:[10]開發微信周公解夢
~等等
版權聲明:本博客內容版權為貝創工作室博客與博客園共有,若您需要引用、轉載,需要注明來源及原文鏈接,如涉及大面積轉載,請來信告知,獲取授權。