http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%8E%A8%E8%8D%90/37371.shtmlphp
http://httpd.apache.org/docs/2.4/platform/windows.html#winsvchtml
http://www.w3school.com.cn/php/index.aspapache
http://www.kokojia.com/course-3553.htmlwindows
微信開發教程 視頻api
http://study.163.com/course/courseMain.htm?courseId=1003067001#/courseDetail?tab=1微信
http://study.163.com/course/courseMain.htm?courseId=1003868040#/courseDetail?tab=1微信開發
通信AES加密ide
https://www.cryptopp.com/wiki/Advanced_Encryption_Standard
https://www.cryptopp.com/wiki/TripleDES#Sample_Programspost
微信加密sample
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1434696670this
微信php代碼示例
1 <?php 2 /** 3 * wechat php test 4 */ 5 6 //define your token 7 define("TOKEN", "weixin"); 8 $wechatObj = new wechatCallbackapiTest(); 9 $wechatObj->valid(); 10 11 class wechatCallbackapiTest 12 { 13 public function valid() 14 { 15 $echoStr = $_GET["echostr"]; 16 17 //valid signature , option 18 if($this->checkSignature()){ 19 echo $echoStr; 20 exit; 21 } 22 } 23 24 public function responseMsg() 25 { 26 //get post data, May be due to the different environments 27 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 28 29 //extract post data 30 if (!empty($postStr)){ 31 32 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); 33 $fromUsername = $postObj->FromUserName; 34 $toUsername = $postObj->ToUserName; 35 $keyword = trim($postObj->Content); 36 $time = time(); 37 $textTpl = "<xml> 38 <ToUserName><![CDATA[%s]]></ToUserName> 39 <FromUserName><![CDATA[%s]]></FromUserName> 40 <CreateTime>%s</CreateTime> 41 <MsgType><![CDATA[%s]]></MsgType> 42 <Content><![CDATA[%s]]></Content> 43 <FuncFlag>0</FuncFlag> 44 </xml>"; 45 if(!empty( $keyword )) 46 { 47 $msgType = "text"; 48 $contentStr = "Welcome to wechat world!"; 49 $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); 50 echo $resultStr; 51 }else{ 52 echo "Input something..."; 53 } 54 55 }else { 56 echo ""; 57 exit; 58 } 59 } 60 61 private function checkSignature() 62 { 63 $signature = $_GET["signature"]; 64 $timestamp = $_GET["timestamp"]; 65 $nonce = $_GET["nonce"]; 66 67 $token = TOKEN; 68 $tmpArr = array($token, $timestamp, $nonce); 69 sort($tmpArr); 70 $tmpStr = implode( $tmpArr ); 71 $tmpStr = sha1( $tmpStr ); 72 73 if( $tmpStr == $signature ){ 74 return true; 75 }else{ 76 return false; 77 } 78 } 79 } 80 81 ?>