Home > Backend Development > PHP Tutorial > PHP development of WeChat public account: how to create interactive Q&A

PHP development of WeChat public account: how to create interactive Q&A

WBOY
Release: 2023-10-27 12:22:02
Original
954 people have browsed it

PHP development of WeChat public account: how to create interactive Q&A

Developing WeChat public accounts with PHP: How to create interactive Q&A, specific code examples are required

With the popularity of WeChat public accounts, more and more people are beginning to pay attention to how to Implement interactive Q&A function in the public account. This article will introduce how to use PHP to develop WeChat public accounts and provide specific code examples to help readers quickly implement interactive Q&A functions.

1. Set up a development environment
Before starting development, we need to set up a PHP development environment. First, you need to install a PHP runtime environment, such as XAMPP or WAMP. Then, you need to register a WeChat official account and obtain a developer ID and developer key.

2. Configure the server
In the development of WeChat public accounts, we need to configure the server so that it can interact with the WeChat server. The specific steps are as follows:

  1. Open the official website of WeChat public platform, enter the developer center, and select basic configuration.
  2. Fill in the URL configured by the server, such as http://yourdomain.com/weixin.php. This URL will be used to receive messages sent by the WeChat server.
  3. Get the developer ID and developer key and fill them in the appropriate positions.
  4. Set Token to a custom value, such as mytoken, to verify the legitimacy of the message.
  5. Click Submit and save the configuration.

3. Receive messages from the WeChat server
Next, we need to write code to receive messages sent by the WeChat server. In your PHP development environment, create a file named weixin.php and put the following code into it:

<?php
// 验证消息的合法性
$token = 'mytoken'; // 将Token设置为你在微信公众平台中配置的值
$signature = $_GET['signature'];
$timestamp = $_GET['timestamp'];
$nonce = $_GET['nonce'];
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
if ($tmpStr == $signature) {
    // 验证成功,接收消息
    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
    if (!empty($postStr)){
        $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
        $fromUserName = $postObj->FromUserName;
        $toUserName = $postObj->ToUserName;
        $msgType = $postObj->MsgType;
        
        // 处理不同类型的消息
        switch ($msgType) {
            case 'text':
                $content = $postObj->Content;
                // 在这里添加你的回复逻辑
                $responseText = '你发送的消息是:' . $content;
                
                // 返回响应消息
                $time = time();
                $textTpl = "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[text]]></MsgType>
                            <Content><![CDATA[%s]]></Content>
                            </xml>";
                $resultStr = sprintf($textTpl, $fromUserName, $toUserName, $time, $responseText);
                echo $resultStr;
                break;
            // 在这里添加处理其他类型消息的代码
            default:
                // 默认处理
                break;
        }
    }
} else {
    // 验证失败,返回错误信息
    echo "Invalid request";
}
?>
Copy after login

4. Implement the interactive question and answer function
In the above code, we simply Return the message sent by the user unchanged. Next, we will implement an interactive question and answer function. After the user sends a question, the official account replies with the corresponding answer.

In the reply logic part, we can use conditional statements to judge the questions sent by the user and return the corresponding answers. For example:

// 处理不同类型的消息
switch ($msgType) {
    case 'text':
        $content = $postObj->Content;
        if ($content == '你叫什么名字') {
            $responseText = '我叫小金';
        } elseif ($content == '你好') {
            $responseText = '你好,有什么可以帮助你的吗?';
        } else {
            $responseText = '我不明白你在说什么';
        }
        
        // 返回响应消息
        $time = time();
        $textTpl = "<xml>
                    <ToUserName><![CDATA[%s]]></ToUserName>
                    <FromUserName><![CDATA[%s]]></FromUserName>
                    <CreateTime>%s</CreateTime>
                    <MsgType><![CDATA[text]]></MsgType>
                    <Content><![CDATA[%s]]></Content>
                    </xml>";
        $resultStr = sprintf($textTpl, $fromUserName, $toUserName, $time, $responseText);
        echo $resultStr;
        break;        
    // 在这里添加处理其他类型消息的代码
    default:
        // 默认处理
        break;
}
Copy after login

Through this code, we can return different answers according to different questions of the user, realizing a simple interactive question and answer function.

Summary:
This article introduces how to use PHP to develop WeChat public accounts and provides specific code examples. By configuring the server and writing corresponding code, we can implement a simple interactive question and answer function. Readers can further expand and customize according to their own needs, making the WeChat public account more rich and interesting. Hope this article is helpful to everyone!

The above is the detailed content of PHP development of WeChat public account: how to create interactive Q&A. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template