検索
ホームページWeChat アプレットミニプログラム開発ミニプログラムカスタマーサービス機能を有効にする方法

ミニプログラムカスタマーサービス機能を有効にする方法

Mar 13, 2020 pm 01:26 PM
顧客サービスアプレットオンにする微信

ミニプログラムカスタマーサービス機能を有効にする方法

ミニ プログラムのカスタマー サービス機能を有効にする方法

カスタマイズされたミニ プログラムのカスタマー サービス機能を有効にするには、次の 2 つの手順を実行します。必須、

ステップ 1: 独自の WeChat プラットフォームでメッセージ プッシュ機能を有効にする

詳細は公式 Wiki https://developers.weixin にあります。 .qq.com/miniprogram/introduction/custom.html#メッセージ プッシュ構成を入力します

ステップ 2: 独自のバックエンドを完成させます

前提条件:サーバーにはWeChatからアクセスできます。

プロセス: ユーザーがイベントを開始した後、データ パケットを WeChat サーバーに送信します。メッセージ プッシュ サービスを有効にすると (最初のステップ)、WeChat サーバーはデータを処理して転送します。形式は xml または json で、WeChat バックエンドでの選択によって異なります。ここで選択した json は、WeChat がインターフェイスをアクティブに呼び出してデータ パケットを返します。ユーザーからの特定のメッセージに応答したい場合は、データを WeChat サーバーに送信するためのインターフェイスです。応答パケットには、顧客サービスの openid が含まれています。詳細については、コードを参照してください。

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

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

           $data = array(
                               "touser"=>$fromUsername,
                               "msgtype"=>"link",
                                "link"=>[
                                    "title"=>&#39;this is title&#39;,
                                    "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(&#39;aaa&#39;);
            }
        }else{
            echo "";
            exit;
        }
    }
  
    public function get_accessToken(){
        if(cache(&#39;access_token&#39;)){
            return cache(&#39;access_token&#39;);
        }
        /* 不在有效期,重新发送请求,获取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(&#39;access_token&#39;,$res[&#39;access_token&#39;],7100);
                return cache(&#39;access_token&#39;);
            }else{
                return &#39;api return error&#39;;
            }
        }
    }
    /**
     * @Author   callmelx
     * @DateTime 2018-10-06
     * @return   [type]     [description]
     */
    public function curl_post($url,$data=&#39;&#39;){
        $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 &#39;Errno&#39;.curl_error($curl);//捕抓异常
        }
        curl_close($curl);
        if($output == 0){
            echo &#39;success&#39;;exit;
        }
    }
}

注意する必要がある落とし穴がいくつかあります。トークンの検証が常に失敗する場合:

1. サーバーのトークン 現在のトークンと同じかどうか。

2.コードに全く問題がなく、トークンにも全く問題がないにもかかわらずエラーが発生する場合は、サーバーの ## の権限を確認することをお勧めします。 # file . TP フレームワークを使用している場合は、ランタイムが 777 に設定されているかどうかを確認してください。755 に設定すると、動作しない可能性があります。

推奨学習:

小規模プログラム開発

以上がミニプログラムカスタマーサービス機能を有効にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター