php微信公眾號開發入門


1 公眾號准備

首先申請一個公眾號申請公眾號網頁

由於一般的個人訂閱號開放的功能有限,作為學習者,我們並不推薦使用這種賬號的開發者模式進行開發,而是另外申請一個測試號進行開發學習,測試號開放的功能基本可以滿足我們的學習需求。

默認的測試號登陸進去是這樣子的

1557630532073

2 服務器准備

微信開發需要一台具有公網IP的服務器,通常可以使用各種雲平台的服務器:如騰訊雲,阿里雲等,大多數都是收費的,如果僅僅是體驗一下,可以使用免費的新浪雲sae服務器

2.1 新浪sae服務器的申請和使用(僅支持PHP)


2.1.1 創建應用

打開官網https://www.sinacloud.com

注冊或登錄,點擊控制台->雲應用SAE,點擊創建應用

在這里插入圖片描述

選擇空間(運行環境選擇標准環境,其他的需要付費)

1557631423864

2.1.2 代碼管理

在應用列表選擇管理

1557631557419

選擇運行環境管理,代碼管理,創建新版本

1557631631251

新建完成后可以直接在線編輯代碼上傳代碼包

1557631778171

2.1.3 訪問測試

創建新版本時默認是沒有代碼的,故直接訪問結果是404

1557631939657

這時可以通過在線編輯或者上傳代碼包的方式增加代碼,比如我在線編輯一個index.html

1557632250769

保存之后再訪問

1557632300259

由於還沒實名認證,瀏覽器給出了風險提示,但是我們的代碼已經生效了

實名認證可以到新浪雲用戶中心進行操作

2.1.4 使用git進行代碼控制

在新浪雲創建新運用后,新浪雲默認為我們創建了一個代碼倉庫,地址:https://git.sinacloud.com/newapp,將newapp換成你的二級域名即可,我們可以將這個代碼庫克隆下來

示例:

git clone https://git.sinacloud.com/chzchat
cd chzchat

1557633173992

這樣我們就可以在這個目錄下進行開發,開發完成后使用git命令就可以將代碼推送到代碼庫,代碼庫是和服務器關聯的,這個操作等同於上傳代碼包,但是更方便,關於git的使用可以參考廖雪峰老師的教程

2.2 騰訊雲15天免費雲服務器

2.2.1 領取免費服務器

領取地址,首先需要實名認證,這里我選擇的操作系統是Ubuntu14

1557635187878

開通后會在控制台的通知那里收到一條信息,里面有操作系統的初始密碼,我們可以選擇重置密碼來設置新密碼

1557635439503

2.2.2 登陸服務器

  • 在瀏覽器端登陸服務器

    1557635543670

    選擇登陸操作,需要微信授權,選擇標准登陸模式

    用戶名默認為ubuntu,登陸密碼為初始密碼或重置后的密碼,成功登陸

    1557635696386

  • 使用xshell登陸

    新建連接

    1557635914858

    雙擊新建立的連接,按提示輸入用戶名和密碼即可成功登陸

    1557636061627

  • 使用xftp登陸

    使用xftp可以在兩台計算機之間快速傳輸文件,連接方式選擇sftp,其他操作和xshell基本一致

    1557636163427

    傳輸失敗的原因可能是Linux的目錄沒有寫入權限,這時我們可以使用xshell先設置好目錄權限

    chmod 777 目錄名

2.2.3 配置開發環境

  • 配置apache2+php5+mysql

    sudo apt-get update
    sudo apt-get install apache2
    sudo apt-get install php5
    sudo apt-get install mysql-server mysql-client

    測試apache2是否安裝成功

    瀏覽器訪問服務器公網IP

    1557636853694

    測試php是否安裝成功

    sudo vim /var/www/html/phpinfo.php

    phpinfo.php內容

    <?php phpinfo();

    保存退出編輯,訪問phpinfo.php

    1557636891090

    測試mysql是否安裝成功

    #連接數據庫 mysql -uroot -p #輸入密碼

    1557637001250

  • 其他環境配置請自行百度

3 公眾號與服務器關聯

3.1 微信入口文件

在開發目錄下新建微信入口文件wx_entrance.php

<?php  define('TOKEN','chz'); $signature=$_GET['signature']; $timestamp=$_GET['timestamp']; $nonce=$_GET['nonce']; $echostr=$_GET['echostr'];  $tmpArr=array(TOKEN,$timestamp,$nonce); sort($tmpArr,SORT_STRING); // 拼接字符串 sha1加密 $tmpStr=join($tmpArr); $tmpStr=sha1($tmpStr);  if ($tmpStr==$signature) {  echo $echostr; }else{  echo "error";  exit; } 

3.2 接口配置信息

上傳代碼到服務器,配置微信測試號接口配置信息

 

URL填:http://你的服務器公網IP(或域名)/微信入口文件名

Token填微信入口文件中定義的TOKEN,如果信息匹配且服務器器已經實名驗證,則提交后提示配置成功

4 微信開發小demo——微信消息的接入和消息回復

修改微信入口文件的代碼為

<?php  // 加密簽名 $signature=$_GET['signature']; // 時間戳 $timestamp=$_GET['timestamp']; // 隨機出 $nonce=$_GET['nonce']; // 隨機字符串 $echostr=$_GET['echostr']; // TOKEN define('TOKEN','chz'); // 字典序排序 $tmpArr=array(TOKEN,$timestamp,$nonce); sort($tmpArr,SORT_STRING); // 拼接字符串 sha1加密 $tmpStr=join($tmpArr); $tmpStr=sha1($tmpStr); // 加密簽名的比較 if ($tmpStr==$signature) {  echo $echostr; }else{  echo "error";  exit; }  // 接受xml數據 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];  if (!$postStr) {  echo "post data error";  exit; }  $postObj=simplexml_load_string($postStr,'SimpleXMLElement', LIBXML_NOCDATA ); $MsgType=$postObj->MsgType;  switch ($MsgType) {  case 'text':  $Content=$postObj->Content;  switch ($Content) {  case 'hello':  $xml='<xml>  <ToUserName><![CDATA[%s]]></ToUserName>  <FromUserName><![CDATA[%s]]></FromUserName>  <CreateTime>%d</CreateTime>  <MsgType><![CDATA[text]]></MsgType>  <Content><![CDATA[%s]]></Content>  </xml>';  echo sprintf($xml,$postObj->FromUserName,$postObj->ToUserName,time(),'歡迎關注');   break;   default:  $xml='<xml>  <ToUserName><![CDATA[%s]]></ToUserName>  <FromUserName><![CDATA[%s]]></FromUserName>  <CreateTime>%d</CreateTime>  <MsgType><![CDATA[text]]></MsgType>  <Content><![CDATA[%s]]></Content>  </xml>';  echo sprintf($xml,$postObj->FromUserName,$postObj->ToUserName,time(),$postObj->Content);  break;  }   break;  case 'image':  $xml=' <xml>  <ToUserName><![CDATA[%s]]></ToUserName>  <FromUserName><![CDATA[%s]]></FromUserName>  <CreateTime>%d</CreateTime>  <MsgType><![CDATA[image]]></MsgType>  <Image>  <MediaId><![CDATA[%s]]></MediaId>  </Image>  </xml>';  echo sprintf($xml,$postObj->FromUserName,$postObj->ToUserName,time(),$postObj->MediaId);  break;  default:  # code...  break; }

這時我們可以到公眾號中發送消息來驗證代碼

發送"hello"會回復"歡迎關注"

發送其他文字會原樣返回

1557640111713


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM