網站備案審覈實在太慢了, 並且程序太複雜,就簡單學習測試下也不必整個備案空間。 而後就用了之前申請的sina sae空間+域名 配置了微信公衆號我的測試沙箱環境。 php
而後是手機微信掃碼受權後,就有以下界面 html
這一步能夠參照微信接入說明 ,該頁提供一個php的實例下載,很簡單基本上修改一下自定義的TOKEN就行了,而後把驗證頁面放到本身的服務器上。
api
這裏我提供我作的一個例子: 安全
準備資源:
服務器
域名+空間(個人是sae空間+萬網域名)、僅做驗證的php文件
微信
域名指向的空間根目錄我建立了一個index.php dom
index.php
post
<?php /** * wechat php test */ //define your token define("TOKEN", "weixin_freddon");//只用改這一個TOKEN、任意名稱,好比weixin_freddon $wechatObj = new wechatCallbackapiTest(); $wechatObj->valid(); class wechatCallbackapiTest { public function valid() { $echoStr = $_GET["echostr"]; //valid signature , option if($this->checkSignature()){ echo $echoStr; exit; } } public function responseMsg() { //get post data, May be due to the different environments $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //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; } } private function checkSignature() { // you must define TOKEN by yourself if (!defined("TOKEN")) { throw new Exception('TOKEN is not defined!'); } $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); // use SORT_STRING rule sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } } } ?>
而後填寫配置信息Token (必定要與上面的index.php中的token一致)、URL(index.php的地址)
學習
而後提交就能夠了 測試
若是提示失敗,請檢查Token與URL【若是是本身的域名和空間,請備案; 百度sae、新浪sae的須要本身申請並且認證經過(就是本身拍一個手握證件照上傳,很簡單的 最短2天就o了),這一步必須必】
這一步其實也很簡單的,可是不少人在這一步浪費很長時間,
填這個域名是必定不要帶protocol的,好比說 http://www.sagosoft.com/ 這樣是不對的,這是URL不是域名
域名應該是相似 www.sagosoft.com這樣的 【不然在微信js-sdk接入時會提示invalid url domain】
域名填微信受權回調頁面域名,若是是同一個域名跟上面的接口配置URL填同樣便可
轉載請註明:內容來自 http://my.oschina.net/freddon/blog/513449