好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > PHP實現微信公眾號驗證Token的示例代碼

PHP實現微信公眾號驗證Token的示例代碼

熱門標簽:青島語音外呼系統招商 山西回撥外呼系統 昭通辦理400電話 百應電話機器人服務 河南電銷卡外呼系統哪家強 揚州地圖標注app 騰訊外呼管理系統 山西探意電話機器人 岳陽外呼型呼叫中心系統在哪里
  • 難度水平:初中級
  • 適用人群:對微信公眾號開發有認知跟實踐的童鞋
  • 閱讀時間:8分鐘

緣起

很久之前做過一次公眾號的開發,當時就遇到了一個驗證的小坑,但是由于時間緊任務急處理完了也就沒在意,可誰知最近剛剛上馬一個新的公眾號項目又遇到了同樣的小坑,痛定思痛決定奮筆疾書留下痕跡,省的以后再次忘記了。😁

開始驗證

首先來一張勝過千言萬語的圖,說明我們要驗證的目標:

然后開始掃坑。先掃個盲,微信驗證的目的就是你來證明你的服務器地址的有效性,所以帶著這個目的我們來看看下面這些問題:

  • URL地址怎么寫
  • 純PHP的代碼怎么寫
  • Laravel的代碼怎么寫
  • 常見的坑是什么

URL地址怎么寫

這個地址可以是路由地址也可以是文件地址:

路由地址形式:
https://mydomain.com/wx,
https://mydomain.com/auth/wx,
https://mydomain.com/utility/wx

文件地址形式:
https://mydomain.com/mywechat...
https://mydomain.com/auth/myw...
https://mydomain.com/utility/...

敲黑板,劃重點:
無論哪種形式都可以,重點是可以直接通過GET或者POST訪問到

純PHP的代碼怎么寫

通常來說純代碼就是非框架的php代碼驗證方式,廢話少說,直接上酸菜:

/*這個是你自定義的令牌,圖片里面Token的位置*/
define("TOKEN", "這個是你自定義的令牌");
/*初始化當前的類*/
$wechatObj = new wechatCallbackapiTest();
/*開始驗證程序*/
$wechatObj->valid();
/**
 * Class WXApiVerify
 */
class WXApiVerify
{
  /**
   * 檢測函數輸出
   */
  public function valid()
  {
    $echoStr = $_GET['echostr'];
    if($this->checkSignature()){
      echo $echoStr; #坑點,看下面的常見坑介紹
      exit; #一定要停止php運行,避免產生不必要的字串符
    }
  }

  /**
   * 前面檢測
   * @return bool
   */
  private function checkSignature()
  {
    #注意: 這里可以不用檢驗$_GET參數的有效性,因為微信一定會傳相關的參數給你的服務器的,你直接開啟驗證模式即可。
    $signature = $_GET['signature'];
    $timestamp = $_GET['imestamp'];
    $nonce = $_GET['nonce'];
    $token = TOKEN;
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr, SORT_STRING);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );
    if( $tmpStr === $signature ){
      return true;
    }else{
      return false;
    }
  }
}

Laravel的代碼怎么寫

首先,強勢插個口播(在使用過TP5,CodeIgniter, CakePHP, Yii, Slim之后,我認為Laravel是目前來說最好的PHP框架,不接受其他任何意見。)
其次,驗證代碼上面是跟純PHP大同小異的,唯一的區別是在你處理POST請求的時候一定要讓Laravel不要檢測CSFR Token,否則會出現錯誤。

首先,設置路由:

Route::any('wx', [
  'uses' => 'WeChatApp@checkSignature'
]);
#坑點,看下面的常見坑介紹

其次,取消Laravel的CSFR檢查:

#去到你的Middlewarel里面找到VerifyCsrfToken.php然后插入下面代碼:
protected $except = [
    'wx', #注意這個是你在第一步設置的路由路徑,不接受單獨的文件路徑,太Low逼了
  ];

最后,上酸菜:

#在你對應的Controller里面加入以下函數
  public function checkSignature( Request $request ) {
    $input = $request->all();
    # 一定要抓取4個參數
    $echoStr  = $input[ "echostr" ];
    $signature = $input[ "signature" ];
    $timestamp = $input[ "timestamp" ];
    $nonce   = $input[ "nonce" ];
    # 微信官方驗證方式
    $token = env( 'TOKEN' ); #或者用config()函數
    $tmpArr = [ $token, $timestamp, $nonce ];
    sort( $tmpArr, SORT_STRING );
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );
    
    # 打印返回結果
    if( $tmpStr == $signature ){
      return response($echoStr);
    } else{
      return response();
    }
  }

常見的坑是什么

文檔坑。有些人看過官方文檔之后直接就上代碼了,缺忽略了里面的一個參數echostr 隨機字符串 而這個恰恰是驗證服務器的關鍵點,你要打印這個返回給微信才能通過驗證。但是官方文檔說的不夠重點。

Laravel路由坑。一定要設置請求為any這樣包括(GET跟POST)

Laravel還有一個測試的坑,就是如果你的APP_DEBUG=false如果不是false的話可能會造成拋出多余的字串導致驗證失敗。

要學會使用微信官方測試工具 https://mp.weixin.qq.com/debug/ 選擇消息接口測試文本消息接口就行。其他的可以看圖說話

微信UI的坑。在你通過上面的測試后,并不真正代表你啟用了服務器。而是在你保存后要點擊啟用,然后看到紅色 停用 才真正的是真正的啟用了。

白名單坑。你一定要去到微信的安全中心設置你的服務器的白名單.否則之后的開發工作會有阻礙。

公眾號設置坑。你一定要去微信的公眾號設置里面加入你的:

  • 業務域名
  • JS接口安全域名
  • 網頁授權域名

結語

微信開發有挑戰,細心最關鍵。遇到問題不要慌,來看哥文章。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • php微信公眾號開發模式詳解
  • php實現微信公眾號創建自定義菜單功能的實例代碼
  • PHP實現的微信公眾號掃碼模擬登錄功能示例
  • 微信公眾平臺開發教程③ PHP實現微信公眾號支付功能圖文詳解
  • php微信公眾號開發之快遞查詢
  • php微信公眾號開發之校園圖書館
  • php微信公眾號開發之歡迎老朋友
  • php微信公眾號開發之關鍵詞回復
  • php微信公眾號開發之圖片回復
  • 基于PHP的微信公眾號的開發流程詳解

標簽:黃南 南陽 婁底 湛江 銅川 鎮江 宜賓 寶雞

巨人網絡通訊聲明:本文標題《PHP實現微信公眾號驗證Token的示例代碼》,本文關鍵詞  PHP,實現,微信,公眾,號,驗證,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP實現微信公眾號驗證Token的示例代碼》相關的同類信息!
  • 本頁收集關于PHP實現微信公眾號驗證Token的示例代碼的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: WWW.COM.含羞草| 26uuu国产欧美综合A片| 午夜性a一级毛片| 亚洲国产精品网站久久| 麻豆说电影| 古风一女N男到处做高H | 两个人看的www在线| 在线观看扣喷水漂亮美女| 日本无码亚洲精品无码网站老牛| 肉欲-经典-K82 69x1195.cc| 欧美一区二区三区电影在线观看| 黑人巨大性xxx| 欧美精品久久久久A片丝袜| 亚洲日本欧美产综合在线| 亚洲国产精品成人综合久久久| 365天电影在线播放免费观看| 亚洲人成色777777精品音频 | 宋雨琦丝袜脚玩我下面好爽| 国产精品美女久久久久网| 暗卫把王爷做爽翻h| 国产偷抇XXXXX乱老年女人| 久久免费成人| 肉铺团| 高H校园不许穿内裤h调教| 中文字幕视频一区二区| 台湾白嫩bbwbbw| 美女被扒开屁股进去网站视频 | 直男体育生打??GAY2022| 日本靠逼片| 灵璧县| 午夜精品久久久久久影院游戏| 日本xxxxx视频| 天天躁天天狠天天透| 久久Av无码精品人妻系列希咲彩 | 古装无遮挡一级毛片| 国产精品无圣光在线一区| sases性欧美| 黄色片a级| 寡妇村的淫事| 丰满大乳???国产精品| 精品奶水区一区二区三区在线观看 |