您的位置:首页 > 移动开发 > 微信开发

php开发日记之微信开发模式

2015-10-16 19:37 609 查看
学php最大的热情就是在大一的时候接触微信公众平台,第一次玩的时候还是编辑模式,慢慢深入就接触到开发模式了,今天写开发模式的接入,这是微信开发的最基础的。
1.首先呢,你必须要有服务器,不管是新浪云sae,百度云bae,阿里云ace都可以,或者是虚拟空间,云主机都是可以的,那我当然是使用的阿里云的云主机作为开发服务器,依旧是appserv集成环境,有独立ip
2.打开微信公众平台,点击开发者中心,我们需要做的就是将服务器配置这地方连接好,下面说怎么配置
3.找到开发者文档,点击左边开发者必读,找到php示例代码下载,解压,将所得到的wx_sample.php文件上传到服务器的www文件夹下面,我下面的代码是基于官方的修改

<?php
define("TOKEN", "weixin");//定义常量TOKEN为weixin,也就是后台填写的token
$wechatObj = new wechatCallbackapiTest();//实例化类对象
if(isset($_GET['echostr'])){//判断GET请求中是否有echostr对象
$wechatObj->valid();
}else{
$wechatObj->responseMsg();
}

class wechatCallbackapiTest//定义类,并实现三种方法
{
public function valid()
{
$echoStr = $_GET["echostr"];
if($this->checkSignature()){//调用checkSignatuure方法
echo $echoStr;
exit;
}
}
private function checkSignature()//检查签名
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];

$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);//token,时间戳,随机数
sort($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}

public function responseMsg()
{

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//接收原始消息

if (!empty($postStr)){
$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 =="?")
{
$msgType = "text";
$contentStr = date("Y-m-d H:i:s",time());
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;//这几句是封装回复的xml数据包

}else {
echo "";
exit;
}
}
}
}

?>
这代码的意思是,在微信平台回复?,将自动回复当前时间给发送者。代码解释就直接标注在代码上了。
4.将微信后台URL这一栏填写服务器IP地址(或者域名)/wx_sample.php,token一栏填写weixin即可,点击提交,即可提交成功,如果提交失败,可能是服务器响应太慢,重新提交,或者换一台延迟第一点的服务器。

5.至于加密方式可以随便选一个暂时,毕竟这个代码只是用来测试的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php 微信 阿里云