微信公众平台开发环境配置

1.引言:最近两天玩了一把微信公众平台开发,在此把环境配置过程记录一下,期间遇到一些曲折,主要是BAE和SAE主机的问题,折腾了一天最后实在不行用自己实验室的主机作为服务器,唉,免费的东西就是不稳定,如果想要长期玩微信的话,最好买些好的空间。

2.参考资料:

A.微信消息接口指南:http://mp.weixin.qq.com/wiki/index.php?title=%E6%B6%88%E6%81%AF%E6%8E%A5%E5%8F%A3%E6%8C%87%E5%8D%97

B.方倍工作室的一些教程:http://www.cnblogs.com/txw1958/

3.环境配置:

3.1 如果想配置BAE和SAE作为主机,

  BAE配置可以参考:http://www.cnblogs.com/txw1958/p/wechat-tutorial.html

  SAE配置可以参考:http://coolwb.com/2460.html

3.2 自己主机的话,简单些:直接把文件放到主机服务器的网站根目录进行访问即可: http://www.example.com/weixin/

4. 微信公众账号申请:

    公众账号有两个模式:编辑模式和开发模式。编辑模式下可以设置简单的消息自动回复和关键字自动回复,但功能太局限;由于我是想尝试开发模式的,所以开启开发者模式,在此之前,先把编辑模式关闭,再开启。

    开发者模式开启之后,即可配置接口参数。如下图所示:URL处填写你主机的地址,TOKEN填写要验证的Token值,可以自己设定,但必须同所需验证的index.php中的token一致。 token验证成功后会提示"提交成功", 并且显示您已成为开发者;如果验证不成功,则要检查是否是你程序写的有问题,还是你所填主机的地址无法成功访问问题,网上有一篇相关说明是关于Token验证不成功的情形下去跟踪微信IP地址的方法(链接地址:方倍工作室),以检查是哪类问题.

(备注:我在配置过程中,虽然能验证成功,但用微信给公众账号发消息,就是无法按照设定返回给我的普通微信消息(不是公众账号),最后没办法换成自己实验室现有的一台主机作为服务器,域名用一个买过的域名作为URL

 

5. 功能测试

    验证成功后,上述Index.php中的相关验证口令即没用了,可以将其内容替换成自己想要处理的内容。微信目前开通给开发者的接口有限,只能处理文本、声音和图文三类消息。根据官网消息接口说明制定相应的功能。

6. 附录代码

6.1 接口验证代码

 1 <?php
 2 define("TOKEN", "weixin"); //TOKEN值,此处填写你所设定的Token
 3 $wechatObj = new wechat();
 4 $wechatObj->valid();
 5 class wechat {
 6     public function valid() {
 7         $echoStr = $_GET["echostr"];
 8         if($this->checkSignature()){
 9             echo $echoStr;
10             exit;
11         }
12     }
13 
14     private function checkSignature() {
15         $signature = $_GET["signature"];
16         $timestamp = $_GET["timestamp"];
17         $nonce = $_GET["nonce"];
18         $token = TOKEN;
19         $tmpArr = array($token, $timestamp, $nonce);
20         sort($tmpArr);
21         $tmpStr = implode( $tmpArr );
22         $tmpStr = sha1( $tmpStr );
23         if( $tmpStr == $signature ) {
24             return true;
25         } else {
26             return false;
27         }
28     }
29 }
30 ?>

6.2 功能测试代码

 1 <?php
 2 $wechatObj = new wechat();
 3 $wechatObj->responseMsg();
 4 class wechat {
 5     public function responseMsg() {
 6 
 7         //---------- 接 收 数 据 ---------- //
 8 
 9         $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //获取POST数据
10 
11         //用SimpleXML解析POST过来的XML数据
12         $postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);
13 
14         $fromUsername = $postObj->FromUserName; //获取发送方帐号(OpenID)
15         $toUsername = $postObj->ToUserName; //获取接收方账号
16         $keyword = trim($postObj->Content); //获取消息内容
17         $time = time(); //获取当前时间戳
18 
19 
20         //---------- 返 回 数 据 ---------- //
21 
22         //返回消息模板
23         $textTpl = "<xml>
24         <ToUserName><![CDATA[%s]]></ToUserName>
25         <FromUserName><![CDATA[%s]]></FromUserName>
26         <CreateTime>%s</CreateTime>
27         <MsgType><![CDATA[%s]]></MsgType>
28         <Content><![CDATA[%s]]></Content>
29         <FuncFlag>0</FuncFlag>
30         </xml>";
31 
32         $msgType = "text"; //消息类型
33         $contentStr = 'welcome my account'; //返回消息内容
34 
35         //格式化消息模板
36         $resultStr = sprintf($textTpl,$fromUsername,$toUsername,
37         $time,$msgType,$contentStr);
38         echo $resultStr; //输出结果
39     }
40 }
41 ?>

 

 

posted @ 2013-07-03 21:34  ballwql  阅读(7515)  评论(0编辑  收藏  举报