欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

微信公众平台开发实例(琴岛学院校园之声) PHP开发 代码挂载SAE

程序员文章站 2024-02-17 20:18:16
...

欢迎关注我的微信 公众 账号“ APP每日推荐 ” 推荐一些精彩手机应用,互联网行业资讯~ !--题外话 :做这样一个系列的原因在于,这个微信 公众 平台 算的上是我解除编程一来 开发 的第一个有实际用途的东西,在这之中有很多体会,不敢说讲给大家听,只是同大

欢迎关注我的微信公众账号“APP每日推荐

微信公众平台开发实例(琴岛学院校园之声) PHP开发 代码挂载SAE

推荐一些精彩手机应用,互联网行业资讯~




最终制作效果请见:http://blog.csdn.net/c123853648/article/details/11095043

之前我们做了一系列的准备工作,这期开始我们正式进入编码工作。

首先我们需要在代码中修改一个地方,上次在验证的时候我们添加了这样一行代码

$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();

现在验证已经完成我们需要这样修改一下,修改为
$wechatObj = new wechatCallbackapiTest();
//$wechatObj->valid();
$wechatObj->responseMsg();

下面是官方提供的demo
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)){
                
              	$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                $fromUsername = $postObj->FromUserName;
                $toUsername = $postObj->ToUserName;
                $keyword = trim($postObj->Content);
                $time = time();
                $textTpl = "%s0";             
				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()
	{
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];	
        		
		$token = TOKEN;
		$tmpArr = array($token, $timestamp, $nonce);
		sort($tmpArr);
		$tmpStr = implode( $tmpArr );
		$tmpStr = sha1( $tmpStr );
		
		if( $tmpStr == $signature ){
			return true;
		}else{
			return false;
		}
	}
}

?>
前23行和61行之后的开发时并没有太多关注,这里我就不做分析了,日后研究了再写吧。

我们从responseMsg()这个方法开始说吧。

$postStr变量接受用户提交的信息(xml格式),之后通过调用simplexml_load_string() 函数把 XML 字符串载入对象中。

微信公众平台开发实例(琴岛学院校园之声) PHP开发 代码挂载SAE

在得到了$postObj这个变量后,通过

 这种方式获取到用户传来的各种数据,并存储在相应的变量中相应的信息格式参照消息接口指南:

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

$textTpl这个变量用于存储各种回复信息类型的结构,可以在消息接口指南中查到,这里可以根据自己的需求添加不同的信息类型结构的变量

$contentStr这个变量对应着回复文本信息的文本内容

sprintf函数的作用可以说是将需要回复的信息,添加到$textTpl定义的“结构”中,springf函数使用方法如下:

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
微信公众平台开发实例(琴岛学院校园之声) PHP开发 代码挂载SAE

在后面的开发过程中,基本上是根据【获取用户发送的内容】->【对内容的处理】->【通过编写相关方法,将内容在数据库中做相关操作】->【返回数据库操作的结果】->【填充$textTpl“结构”中的变量】->【输出结果】

微信公众平台开发实例(琴岛学院校园之声) PHP开发 代码挂载SAE

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。