基于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系统。