Heim WeChat-Applet Mini-Programmentwicklung So aktivieren Sie die Kundendienstfunktion des Miniprogramms

So aktivieren Sie die Kundendienstfunktion des Miniprogramms

Mar 13, 2020 pm 01:26 PM
客服 小程序 开启 微信

So aktivieren Sie die Kundendienstfunktion des Miniprogramms

So aktivieren Sie die Kundendienstfunktion des Miniprogramms

Das Aktivieren der Kundendienstfunktion des benutzerdefinierten Miniprogramms erfordert zwei Schritte:

Schritt eins: Aktivieren Sie die Nachrichten-Push-Funktion auf Ihrer eigenen WeChat-Plattform

Die Details finden Sie im offiziellen Wiki https://developers.weixin.qq .com/miniprogram/introduction/custom.html#%E5%A1%AB%E5%86%99%E6%B6%88%E6%81%AF%E6%8E%A8%E9%80%81%E9% 85%8D%E7 %BD%AE

Schritt 2: Vervollständigen Sie Ihr eigenes Backend

Voraussetzung: Ihr Server ist über WeChat erreichbar.

Prozess: Nachdem der Benutzer ein Ereignis initiiert hat, sendet er ein Datenpaket an den WeChat-Server (erster Schritt), der WeChat-Server verarbeitet und leitet die Daten weiter Das Format ist xml oder json, abhängig von Ihrer Wahl im WeChat-Backend. WeChat sendet das Datenpaket an Sie zurück, indem es Ihre Schnittstelle aktiv aufruft. Wenn Sie auf eine bestimmte Nachricht des Benutzers antworten möchten, benötigen Sie eine Schnittstelle zum Senden Ihrer Daten an den WeChat-Server. Das Antwortpaket enthält die OpenID des Kundendienstes.

<?php
header('Content-type:text');
define("TOKEN", "mytoken");

class Mini extends Controller{
    private $appid = '';
    private $secret = '';
    public function check(){     //校验服务器地址URL
        if (isset($_GET['echostr'])) {
            $this->valid();
        }else{
            $this->responseMsg();
        }
    }
    public function valid()
    {
        $echoStr = $_GET["echostr"];
        if($this->checkSignature()){
            header('content-type:text');
            echo $echoStr;
            exit;
        }else{
            echo $echoStr.'+++'.TOKEN;
            exit;
        }
    }
    private function checkSignature()
    {
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];
    
        $token = TOKEN;
        $tmpArr = array($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 = file_get_contents('php://input');//因为我的环境是php7
        if (!empty($postStr) && is_string($postStr)){
            $postArr = json_decode($postStr,true);
            if(!empty($postArr['MsgType']) && $postArr['MsgType'] == 'text'){   //文本消息
                $fromUsername = $postArr['FromUserName'];   //发送者openid
                $toUserName = $postArr['ToUserName'];       //小程序id
                $textTpl = array(
                    "ToUserName"=>$fromUsername,
                    "FromUserName"=>$toUserName,
                    "CreateTime"=>time(),
                    "MsgType"=>"transfer_customer_service",
                );
                exit(json_encode($textTpl));
            }elseif(!empty($postArr['MsgType']) && $postArr['MsgType'] == 'image'){ //图文消息
                $fromUsername = $postArr['FromUserName'];   //发送者openid
                $toUserName = $postArr['ToUserName'];       //小程序id
                $textTpl = array(
                    "ToUserName"=>$fromUsername,
                    "FromUserName"=>$toUserName,
                    "CreateTime"=>time(),
                    "MsgType"=>"transfer_customer_service",
                );
                exit(json_encode($textTpl));
            }elseif($postArr['MsgType'] == 'event' && $postArr['Event']=='user_enter_tempsession'){ 
                $fromUsername = $postArr['FromUserName'];  

           $data = array(
                               "touser"=>$fromUsername,
                               "msgtype"=>"link",
                                "link"=>[
                                    "title"=>'this is title',
                                    "description"=> "Is Really A Happy Day",
                                    "url":=>"URL",
                                    "thumb_url"=>"THUMB_URL"
                                ]
                           );
          $json = json_encode($data,JSON_UNESCAPED_UNICODE); 
                $access_token = $this->get_accessToken();
                $url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$access_token;
                //将数据返给微信服务器进行转发。
                $this->curl_post($url,$json);
                
            }else{
                exit('aaa');
            }
        }else{
            echo "";
            exit;
        }
    }
  
    public function get_accessToken(){
        if(cache('access_token')){
            return cache('access_token');
        }
        /* 不在有效期,重新发送请求,获取access_token */
        else{
            $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appid}&secret={$this->secret}";
            $result = curl_get_https($url);
            $res = json_decode($result,true);   //json字符串转数组
            if($res){
                cache('access_token',$res['access_token'],7100);
                return cache('access_token');
            }else{
                return 'api return error';
            }
        }
    }
    /**
     * @Author   callmelx
     * @DateTime 2018-10-06
     * @return   [type]     [description]
     */
    public function curl_post($url,$data=''){
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)){
            curl_setopt($curl, CURLOPT_POSTFIELDS,$data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        //curl_setopt($curl, CURLOPT_HTTPHEADER, $headers );
        $output = curl_exec($curl);
        if (curl_errno($curl)) {
            echo 'Errno'.curl_error($curl);//捕抓异常
        }
        curl_close($curl);
        if($output == 0){
            echo 'success';exit;
        }
    }
}
Nach dem Login kopieren

Es gibt ein paar Fallstricke, auf die Sie achten müssen:

1 das Token Ihres Servers Ob es mit dem aktuellen Token übereinstimmt.

2. Wenn Sie feststellen, dass es absolut kein Problem mit Ihrem Code und dem Token gibt, Sie aber trotzdem eine Fehlermeldung erhalten, dann empfehle ich Ihnen, die Berechtigungen der Datei Ihres Servers zu überprüfen, falls vorhanden ist ein Problem. Überprüfen Sie, ob Ihre Laufzeit auf 777 eingestellt ist. Wenn Sie sie auf 755 einstellen, funktioniert es möglicherweise immer noch nicht.

Empfohlenes Lernen: Mini-Programmentwicklung

Das obige ist der detaillierte Inhalt vonSo aktivieren Sie die Kundendienstfunktion des Miniprogramms. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So ändern Sie den Authentifizierungsausweis mit echtem Namen auf WeChat So ändern Sie den Authentifizierungsausweis mit echtem Namen auf WeChat Apr 24, 2024 am 10:58 AM

So ändern Sie den Authentifizierungsausweis mit echtem Namen auf WeChat

Kann ich Besucher in WeChat Moments sehen? Kann ich Besucher in WeChat Moments sehen? May 06, 2024 pm 01:30 PM

Kann ich Besucher in WeChat Moments sehen?

Woher weiß WeChat, dass die andere Partei es gelesen hat? Woher weiß WeChat, dass die andere Partei es gelesen hat? Apr 24, 2024 pm 01:45 PM

Woher weiß WeChat, dass die andere Partei es gelesen hat?

Es gibt Gerüchte, dass „das iPhone 16 WeChat möglicherweise nicht unterstützt', und Apples technischer Berater in China sagte, dass man mit Tencent über App-Store-Provisionen kommuniziert Es gibt Gerüchte, dass „das iPhone 16 WeChat möglicherweise nicht unterstützt', und Apples technischer Berater in China sagte, dass man mit Tencent über App-Store-Provisionen kommuniziert Sep 02, 2024 pm 10:45 PM

Es gibt Gerüchte, dass „das iPhone 16 WeChat möglicherweise nicht unterstützt', und Apples technischer Berater in China sagte, dass man mit Tencent über App-Store-Provisionen kommuniziert

So stellen Sie den gelöschten WeChat-Chat-Verlauf wieder her So stellen Sie den gelöschten WeChat-Chat-Verlauf wieder her Apr 24, 2024 am 11:36 AM

So stellen Sie den gelöschten WeChat-Chat-Verlauf wieder her

Wussten Sie, dass die Person, die Sie auf WeChat blockiert haben, wiederhergestellt wurde? Wussten Sie, dass die Person, die Sie auf WeChat blockiert haben, wiederhergestellt wurde? Apr 24, 2024 pm 01:34 PM

Wussten Sie, dass die Person, die Sie auf WeChat blockiert haben, wiederhergestellt wurde?

Deepseek Image Generation Tutorial Deepseek Image Generation Tutorial Feb 19, 2025 pm 04:15 PM

Deepseek Image Generation Tutorial

So legen Sie das WeChat-Hintergrundbild fest So legen Sie das WeChat-Hintergrundbild fest Apr 26, 2024 am 11:01 AM

So legen Sie das WeChat-Hintergrundbild fest

See all articles