看成爲小白,來開發微信的時候,只依據官方文檔來開發是很痛苦的,怎麼配置,怎麼編寫代碼文件,怎麼讓映射到外網訪問,問題不少,比較痛苦。
下面內容來解決這些痛點,有不懂的問題,能夠在下面留言評論哦。
會出一系列的【微信服務號開發】詳細文章,敬請關注!php
接入微信公衆平臺開發,開發者須要按照以下步驟完成:git
一、填寫服務器配置
二、驗證服務器地址的有效性
三、依據接口文檔實現業務邏輯web
登陸微信公衆平臺官網後,在公衆平臺官網的開發-基本設置頁面,勾選協議成爲開發者,點擊「修改配置」按鈕,填寫服務器地址(URL)、Token和EncodingAESKey,其中URL是開發者用來接收微信消息和事件的接口URL。Token可由開發者能夠任意填寫,用做生成簽名(該Token會和接口URL中包含的Token進行比對,從而驗證安全性)。EncodingAESKey由開發者手動填寫或隨機生成,將用做消息體加解密密鑰。安全
同時,開發者可選擇消息加解密方式:明文模式、兼容模式和安全模式。模式的選擇與服務器配置在提交後都會當即生效,請開發者謹慎填寫及選擇。加解密方式的默認狀態爲明文模式,選擇兼容模式和安全模式須要提早配置好相關加解密代碼,詳情請參考消息體簽名及加解密部分的文檔。bash
http://mp.weixin.qq.com/debug...服務器
http://stark.ngrok.wdevelop.c...
stark微信
此處填寫一個外網能夠訪問的接口,必須是80端口,就是url後面不能跟其餘自定義端口。
當咱們點擊底下提交按鈕的時候,微信會像這接口發送一個get請求微信開發
開發者經過檢驗signature對請求進行校驗(下面有校驗方式)。若確認這次GET請求來自微信服務器,請原樣返回echostr參數內容,則接入生效,成爲開發者成功,不然接入失敗。加密/校驗流程以下:微信公衆平臺
1)將token、timestamp、nonce三個參數進行字典序排序dom
2)將三個參數字符串拼接成一個字符串進行sha1加密
3)開發者得到加密後的字符串可與signature對比,標識該請求來源於微信
token 隨便填寫,可是要和代碼中的token保持一致
咱們建立一個wx.php 文件,最後把這個文件外網映射出去,可讓微信訪問。
$token = 'stark'; //這的token 和 上面填寫的保持一致
<?php function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = 'stark'; //這的token 和 上面填寫的保持一致 $tmpArr = array($token,$timestamp, $nonce); // 1)將token、timestamp、nonce三個參數進行字典序排序 sort($tmpArr, SORT_STRING); // 2)將三個參數字符串拼接成一個字符串進行sha1加密 $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); // 3)開發者得到加密後的字符串可與signature對比,標識該請求來源於微信 if( $signature == $tmpStr ){ //成功後輸出一個隨機字符串 echo $_GET['echostr']; return true; }else{ echo 'faild'; return false; } } checkSignature();
使用ngrok
下面提供ngrok服務文件
加入qq羣號碼:205366897 下載ngrok服務
把下載的ngrok文件解壓,進入文件裏面
安裝shift 右鍵 會出現 在此處打開命令行(就是打開了cmd 必定要在 在cmd 裏面執行 不能使用 git bash)
在打開的窗口裏面輸入 :
ngrok -config=ngrok.cfg -subdomain stark 80
若是出現這個錯誤,說明這個子域名 被別人佔用
若是出現這個圖片,證實 開啓成功
其中 stark 是子域名,只能惟一,你要改爲本身定義的,若是別人使用了這個域名你就不能使用了
這樣就把本地的80端口映射到外網
映射以前,必須在本地啓動一個80端口
咱們使用xampp 工具作本地的web服務器啓動,本身去下載。
若是顯示配置失敗,證實這個接口配置失敗
若是出現如下配置,證實配置成功