Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Contoh untuk menerangkan cara melaksanakan fungsi maklumat tolak WeChat dalam PHP

Contoh untuk menerangkan cara melaksanakan fungsi maklumat tolak WeChat dalam PHP

PHPz
PHPzasal
2023-04-12 14:44:402156semak imbas

Dengan perkembangan Internet yang berterusan, WeChat telah menjadi salah satu alat yang sangat diperlukan dalam kehidupan orang ramai. Banyak tapak web dan aplikasi perlu menghantar maklumat kepada WeChat pengguna dalam masa nyata, dan PHP, sebagai bahasa pengaturcaraan bahagian pelayan yang popular, boleh merealisasikan fungsi menolak maklumat kepada pengguna melalui akaun awam WeChat. Jadi, hari ini kami akan memperkenalkan cara menggunakan PHP untuk menolak maklumat ke WeChat.

Pertama sekali, kami perlu mendapatkan akaun pembangun, kata laluan, AppID, AppSecret dan maklumat lain akaun rasmi WeChat. Kemudian, sediakan mod pembangun pada platform awam WeChat dan dapatkan konfigurasi pelayan, token dan parameter lain.

Seterusnya, kita boleh mula menulis kod PHP. Pertama, kita perlu mencipta perkhidmatan web akaun awam WeChat yang boleh menerima mesej dan membalas. Anda boleh menggunakan rangka kerja PHP seperti Laravel atau Yii untuk membinanya. Jika anda tidak mempunyai pengalaman menggunakan rangka kerja, anda juga boleh terus menggunakan perpustakaan curl PHP untuk pembangunan.

Dalam kod PHP, kami perlu menetapkan parameter seperti alamat antara muka dan token akaun rasmi WeChat supaya kami boleh menerima pengesahan dan tolakan maklumat daripada pelayan WeChat. Anda boleh menyediakan fungsi panggil balik bersatu untuk menerima dan memproses maklumat daripada pengguna. Sebagai contoh, coretan kod berikut:

$wechatObj = new wechatCallbackapi();
if (!isset($_GET['echostr'])) {
    $wechatObj->responseMsg();
} else {
    $wechatObj->valid();
}
class wechatCallbackapi
{
    public function valid()
    {   
        $echoStr = $_GET["echostr"];
        if ($this->checkSignature()) {
            echo $echoStr;
            exit;
        }
    }
    private function checkSignature()
    {
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];
        $token = 'your_token';
        $tmpArr = [$token, $timestamp, $nonce];
        sort($tmpArr, SORT_STRING);
        $tmpStr = implode($tmpArr);
        $tmpStr = sha1($tmpStr);
        if ($tmpStr == $signature) {
            return true;
        } else {
            return false;
        }
    }
    public function responseMsg()
    {
        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
        $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
        switch ($postObj->MsgType) {
            case 'text':
                $content = "收到您的信息,谢谢!";
                $resultStr = $this->textMsg($postObj, $content);
                echo $resultStr;       
                break;
            default:
                echo "";
                break;
        }
    }
    public function textMsg($object, $content)
    {
        $time = time();
        $textTpl = '<xml>
            <ToUserName><![CDATA[%s]]></ToUserName>
            <FromUserName><![CDATA[%s]]></FromUserName>
            <CreateTime>%s</CreateTime>
            <MsgType><![CDATA[text]]></MsgType>
            <Content><![CDATA[%s]]></Content>
            <FuncFlag>0</FuncFlag>
            </xml>';
        $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, $time, $content);
        return $resultStr;
    }
}

Dalam kod di atas, checkSignature() digunakan untuk mengesahkan antara muka, responseMsg() digunakan untuk membalas maklumat yang dihantar oleh pengguna dan textMsg( ) digunakan untuk membalas maklumat pengguna . Dalam contoh ini kami hanya membalas mesej ringkas, sebenarnya kami boleh melanjutkan ini seperti yang diperlukan untuk menggunakan pangkalan data untuk menyimpan mesej dan mengembalikannya kepada pengguna.

Akhir sekali, kami perlu menggunakan antara muka API yang disediakan oleh platform terbuka akaun awam WeChat untuk menolak maklumat. Ambil maklumat teks menolak sebagai contoh Dalam kod PHP, kita hanya perlu membina tatasusunan data seperti berikut, dan kemudian gunakan curl untuk menghantar permintaan POST ke pelayan WeChat:

$data = [
    'touser' => $openid,
    'msgtype' => 'text',
    'text' => ['content' => '你好,欢迎使用我们的微信公众号服务!']
];
$url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=' . $access_token;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data, JSON_UNESCAPED_UNICODE));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$ret = curl_exec($ch);
curl_close($ch);

Sudah tentu, ini hanyalah salah satu daripadanya Sebagai contoh mudah, platform awam WeChat menyediakan antara muka API yang kaya yang boleh dibangunkan menggunakan PHP untuk melaksanakan fungsi yang lebih kompleks.

Untuk meringkaskan, PHP boleh melaksanakan fungsi menolak maklumat ke akaun awam WeChat Kami perlu menyediakan akaun pembangun dan parameter antara muka yang sepadan pada platform awam WeChat, dan menggunakan PHP untuk menulis kod untuk melaksanakan balasan. dan tolak maklumat dan gunakan antara muka API yang disediakan oleh platform awam WeChat untuk menolak maklumat. Jika anda ingin mengetahui lebih lanjut tentang pembangunan akaun awam WeChat, anda boleh membaca lebih lanjut mengenai bahagian dokumen rasmi WeChat yang berkaitan untuk menguasai lebih banyak pengetahuan dan meningkatkan tahap pembangunan anda.

Atas ialah kandungan terperinci Contoh untuk menerangkan cara melaksanakan fungsi maklumat tolak WeChat dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn