基於PHP在微信公眾號上運行的H5牛牛游戲,放在wamp的www目錄下,用谷歌瀏覽器打開項目(會提示請在微信客戶端中打開),
因為這個H5游戲接入了微信的接口,就必須在微信客戶端上運行才達到預期的調試效果,那怎么辦呢?
有兩個辦法:
① 在電腦安裝Windows的微信客戶端。
② 用花生殼的內網穿透(利用外網訪問本地地址localhost)+手機微信客戶端。
接下來就和大家分享一下搭建H5微信公眾號游戲和配置環境的各種坑。
工具
花生殼(www.oray.com)
首先必須注冊一個賬號,然后點擊內網穿透,新建個映射如下圖
映射類型 : 網站80端口
選擇域名 : 這個是注冊的時候花生殼送你的(我注冊的時候好像要交6塊什么什么費,不記得了)
應用名稱 : web
內網主機 : 127.0.0.1
內網端口 : 80
最后確定,至此,你wamp里面www文件夾下的項目就可以被你剛剛花生殼給你的域名訪問了,前提是你安裝了wamp后輸入localhost能正常打開。
最后測試一下,
把 localhost/index.php 換成 花生殼給你的域名/index.php。是一樣的效果的。
以上就是花生殼穿透內網步驟。
wampserver(我的版本是2.5)
:這東西必須安裝完是綠色,瀏覽器輸入localhost能正常打開哦,安裝方法這里不多闡述,自己百度一下。
微信公眾號測試號(https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login)
appid和appscret是本來就配給你的,這兩個東西是用來配置你游戲里面的參數的,可先不管
URL:http://剛剛花生殼的域名/wx_sample.php
liweijian(這個隨便填,我先填這個了)
把wx_sample.php放在www文件夾下,附上代碼,自己新建個php文件復制進去,最后點提交(顯示配置成功才行)
<?php
/**
* wechat php test
*/
//define your token
define("TOKEN", "liweijian"); $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=simplexmlloadstring(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; } } } ?>
域名:花生殼域名(不要加http)
至此,微信公眾號測試號已經配置完
你需要測試的微信人員,掃一掃加入就好了,如果沒加入的話,就會訪問不到項目里面的微信接口
這里按修改
這里輸入花生殼的域名 ,不加http
下一步就是登錄你的公眾號了,記住是你的,不是這個測試號。
點擊開發者工具
配置剛剛加入掃碼那兩個微信測試
最后配置一下白名單,不懂的填什么的話,把有關IP都寫上去把
接下來,關於php的一系列報錯,我們下來配置一些東西
wamp配置ssl
下載openssl安裝程序,安裝完以后可以從根目錄把libeay32.dll和ssleay32.dll copy到C:\wamp\bin\apache\apachex.x.xx\bin下.
apache需要有ssl_module.mo,php需要安裝php_openssl.(百度即可)
一、設置環境變量
1、管理員權限運行CMD,cd C:\wamp\bin\apache\Apache2.4.9\conf
2、set OPENSSL_CONF=..\conf\openssl.cnf
二、生成server.key
cd C:\wamp\bin\apache\Apache2.4.9\bin
openssl genrsa 1024>server.key
三、生成server.csr
openssl req -new -key server.key > server.csr
需要用戶輸入國家代碼之類的信息:CN—GD—DG—Relay2—OA—417930908@qq.com
注意:其中的Common Name只能輸入域名(花生殼域名)或IP
Common Name 必須和 httpd.conf 中 server name 必須一致, 否則 apache 不能啟動(啟動 apache 時錯誤提示為: server RSA certificate CommonName (CN) `Kedou’ does NOT match server name!? )
最后的密碼和公司名稱可以為空
四、生成server.crt
openssl req -x509 -days 365 -key server.key -in server.csr > server.crt
在bin 目錄下,找到
server.crt
server.csr
server.key
三個文件,將此三個文件復制到Apache的conf目錄下
五、配置:C:\wamp\bin\apache\Apache2.4.9\conf\httpd.conf,取消注釋:
Include conf/extra/httpd-ssl.conf
LoadModule ssl_module modules/mod_ssl.so
修改:
“
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
”中的Deny from all為Allow from all,另外幾處Deny from all不用改
我的版本中並不需要更改Deny from all這塊
六、配置:C:\wamp\bin\apache\Apache2.4.9\conf\extra\httpd-ssl.conf
“SSLCertificateKeyFile…..”這行改成SSLCertificateKeyFile “C:/wamp/bin/apache/apache2.4.9/conf/server.key”
SSLSessionCache這行改成SSLSessionCache “shmcb:c:/wamp/bin/apache/apache2.4.9/logs/ssl_scache(512000)”
找到這塊內容
修改DocumentRoot 為DocumentRoot “C:/wamp/www/”
ServerName 花生殼域名:80
ErrorLog “c:/wamp/bin/apache/apache2.4.9/logs/error.log”
TransferLog “c:/wamp/bin/apache/apache2.4.9/logs/access.log”
SSLEngine on
SSLCertificateFile “C:/wamp/bin/apache/apache2.4.9/conf/server.crt”
SSLCertificateKeyFile “C:/wamp/bin/apache/apache2.4.9/conf/server.key”
七、重啟wampserver。瀏覽器輸入:https://192.168.1.4/index.php
確保你www目錄下有index.php文件
成功后顯示
搭建過程中遇到的問題,看一個程序員的水平主要是看他解決問題的能力,哈哈,小吹一下
我也是第一次搭建https服務器,結果按照網上配置以后,apache怎么都啟動不起來,查看錯誤日志唄
cmd命令行切換到C:\wamp\bin\apache\apache2.4.9\bin目錄
輸入httpd -t命令 錯誤如下:
1.Syntax error on line 92 of C:/Apache24/conf/extra/httpd-ssl.conf:
SSLSessionCache: ‘shmcb’ session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?
解決方法:在httpd.conf中找到下面這句話#
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
取消注釋(刪掉前面的”#”)
補充一個錯誤 打開conf/extra/httpd-ssl.conf
拉到最下面 搜索CustomLog
修改參數 為"c:/wamp/bin/apache/apache2.4.9/logs/ssl_request.log" \