微信公众号开发——服务器配置

本文介绍了如何配置云服务器并使用宝塔服务进行域名绑定,以实现微信公众号的自动回复功能。通过创建PHP类`wechatCallbackapiTest`,设置`TOKEN`并验证微信签名,实现了接收并响应用户消息的功能。当接收到用户输入时,程序会返回预设的欢迎语。此配置对于搭建微信公众号的互动平台具有基础指导意义。
摘要由CSDN通过智能技术生成

一、前提

1、购买一台云服务器

域名解析
在这里插入图片描述
这里用的宝塔服务
创建域名 绑定到指定的目录
在这里插入图片描述
在这里插入图片描述
wx.php 代码如下

<?php    
/**   
  * wechat php test   
  */    
    
//define your token    
define("TOKEN", "weixin");    
$wechatObj = new wechatCallbackapiTest();    
$wechatObj->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 = "<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(!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;    
        }    
    }    
}    
   
?>    

其中

define("TOKEN", "weixin");   

第7行是用户定义的“token”,需要与下面将会提及的令牌(Token)相同。

在这里插入图片描述

填写完毕后,提交即可完成服务器配置的启用。

自动回复功能代码如下

<?php
// $wechatObj = new wechat();
// $wechatObj->valid();
class wechat {


    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)) {
            libxml_disable_entity_loader(true);
            $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 (!empty($keyword)) {
                $msgType = "text";
                $contentStr = "测试蛋白质维生素和矿物质等及水发酵的作用下对人体产生的作用!";
                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                echo $resultStr;
            } else {
                echo "Input something...";
            }
        } else {
            echo "";
            exit;
        }
        
    } 

}

$wechatObj = new wechat();
$wechatObj->responseMsg();

这只是冰山一角

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值