最初看到的教程是在这个网站上看到的http://www.cnblogs.com/txw1958/p/wechat-tutorial.html,包括他们出的书
虽然微信公众平台也提供了开发手册https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183&token=&lang=zh_CN,但是有些东西毕竟没有这个详细。
我也是从一无所知开始学的,就连PHP也是现学的,原因是听说院学生会有个微信平台部,觉得能学到东西,然而发现,这些还得自己一点点的摸索。
一.首先是建一个微信公众号,这个网上有教程。
二.至于域名和空间在上面第一个网站中有提到免费的,然后直接在上面修改就可以了。
我这里直接拿已有的用,ftp对应的工作软件是FileZilla Client 。
三.其次主要是按照开发手册上的接入指南来,这一块搞了好久,下面好好讲讲
登入公众平台,在其中基本配置中,选择启用(修改配置),在这里面要填一个URL,那么这个URL到底是什么呢?
这里要提到的是对于一个域名,有一个ftp目录与之对应,这个ftp目录中存放的就是显示的界面代码文件。
比如www.derd.dsdeg.com 对应着ftp目录var/www/test. 那么我们就把写好的php文件(如wechat.php)放在var/www/test目录下,然后在浏览器中访问WWW.derd.dsdeg.com/wechat.php,就会出现(执行)PHP代码。
那么我们想让微信用户关注我们的微信公众号或者向我们发送消息等,而我们要求返回执行PHP文件的代码时,我们就需要将该代码对应的地址设为填入的URL。
比如,让用户发送数据,wechat.php去检测,并进行响应,那么我们就要将URL设为WWW.derd.dsdeg.com/wechat.php,而wechat.php中在执行具体的行为
具体代码如下,当用户输入?时,会输出当前的时间
<?php
header("Content-type: text/html; charset=utf-8");
define("TOKEN","molu");
$wechatObj=new wechatTest();
/*当用户向公众号发送消息的时候,微信公众号会带上一些参数来访问设置的URL
* 其中echostr是当验证的时候才会带的参数,这些都可以通过GET来获取*/
if(isset($_GET['echostr'])){
$wechatObj->valid();
}else{
$wechatObj->responseMsg();
}
class wechatTest{
//验证签名
public function valid(){
$echoStr=$_GET['echostr'];
$signature=$_GET['signature'];
$timestamp=$_GET['timestamp'];
$nonce=$_GET['nonce'];
$token=TOKEN;
$array=array($timestamp,$nonce,$token);
//排序
sort($array);
//将排序好的数组拼接为字符串
$tmpstr=implode('', $array);
//用sha1加密
$tmpstr=sha1($tmpstr);
if($tmpstr==$signature){
echo $echoStr;
exit;
}
}
//响应消息
public function responseMsg(){
//获取POST到URL上的XML数据包
$postStr=$GLOBALS["HTTP_RAW_POST_DATA"];
if(!empty($postStr)){
//将数据载入对象SimpleXMLElement中,第三个参数表示将CDATA合并为文本节点
$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($keyword=="?"||$keyword=='?'){
$msgType="text";
$content=date("Y-m-d H:i:s",time());
$result=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$content);
echo $result;
}else{
echo "";
}
}
}
}
?>
最后讲一点,编写PHP的IDE别忘了设置为UTF-8,不然微信中执行的时候不能识别中文
7612

被折叠的 条评论
为什么被折叠?



