基于linux系统下云服务器对微信公众号的搭建(PHP代码实现)

基于linux系统下云服务器对微信公众号的搭建(PHP代码实现)

一、首先配置云服务器

1. 我选用的是百度云服务器(百度智能云官网也可以找到体验的百度云服务器),相关配置,通过Xshell和Xftp实现连接和文件传输,这里我就不详细说了,感兴趣的朋友可以自行搜索。

2.我选用的是linux centOS系统,因为要实现PHP代码对微信公众号号的搭建,这里需要配置一些PHP环境。

划重点

(1)通过yum安装:

yum -y install httpd php-fpm php-mysql

重点是一定要安装xml,通过以下命令yum -y install php-xml,否则仅能实现微信公众号配置成功,不能实现后续的功能。

(2)打开或关闭以上功能:

service httpd start/stop

service php-fpm start/stop

service mysqld start/stop

二、微信公众号接口配置

1.在微信公众平台申请一个公众号,因个人是不能申请公众号,可以选用测试号,界面如下:

2.接口配置修改是接下来的重点,URL是你的百度云服务器的网页地址,我先把php代码放上来,然后再告诉大家怎么办。

<?php
/**
  * wechat php test
  */

//define your token
header("Content-type:text/html;charset=utf-8");
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();
//$wechatObj->responseMsg();

class wechatCallbackapiTest
{
	public function valid()
    {
        $echoStr = $_GET["echostr"];

        //valid signature , option
        if($this->checkSignature()){
			ob_clean();
        	echo $echoStr;
        	exit;
        }
    }

    public function responseMsg()
    {
		//get post data, May be due to the different environments
		$postStr =file_get_contents("php://input");

      	//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 = "<xml>
							<ToUserName><![CDATA[%s]]></ToUserName>
							<FromUserName><![CDATA[%s]]></FromUserName>
							<CreateTime>%s</CreateTime>
							<MsgType><![CDATA[%s]]></MsgType>
							<Content><![CDATA[%s]]></Content>
							</xml>";          
				if(!empty( $keyword ))
                {
              		$msgType = "text";
                	$contentStr = "welcome";
                	$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 ){
           // header('content-type:text');
			return true;
		}else{
			return false;
		}
	}
}
?>

3.在编辑器里新建一个文件,将以上代码复制并粘贴,命名为api.php,一会再告诉大家将文件放在哪里。

4.以上代码有两处关键:

(1)“define("TOKEN", "weixin")”,其中的token也就是公众号接口配置信息里的Token,一定要相同。

(2)//$wechatObj->responseMsg();在接口配置信息前要先把该段注释掉,当已经配置成功后,要把$wechatObj->valid()注释掉,//$wechatObj->responseMsg()取消注释。

5.当已经安装httpd后,找到/var/www/html该文件,将api.php放置在该文件下,URL输入:域名/api.php,点击配置,要多试几下,配置成功后,就不用每次都要配置了。

三、总结

以上内容亲测有用,相比于BAE系统的实现更为简单和便宜,仅需要一个服务器即可,不用再额外购买BAE系统。

猜你喜欢

转载自blog.csdn.net/Crazydoubao/article/details/115344383