ホームページ >WeChat アプレット >WeChatの開発 >WeChatパブリックプラットフォームはQRコードを開発し、メニューを作成します

WeChatパブリックプラットフォームはQRコードを開発し、メニューを作成します

高洛峰
高洛峰オリジナル
2017-03-01 10:04:322297ブラウズ

1. QR コード

1. 一時的な QR コードには有効期限があり、QR コードの生成後最大 7 日間 (つまり 604800 秒) に設定できますが、それよりも長い有効期限を生成することもできます。一時的な QR コードは主に、QR コードを永続的に保存する必要のないアカウント バインディングなどのビジネス シナリオで使用されます。 2. 永続的な QR コードには有効期限がありませんが、数は少ないです (現在最大 100,000)。永続的な QR コードは、主にアカウント バインドやユーザー ソース統計などのシナリオで使用されます。永久 QR コードの最大値は 100000 です (現在、パラメータは 1 ~ 100000 のみをサポートしています)。

次のコードは、永続的な QR コードを取得する例です:


/**
     * 获取永久二维码需要的ticket
     * @param $access_token access_token
     * @param $sceneId 场景值id
     * @return bool|mixed
     */
    public function getQrticket($access_token, $sceneId)
    {$url = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=' . $access_token;
        $raw = array(
                'action_name' => 'QR_LIMIT_SCENE',
                'action_info' => array(
                        'scene' => array(
                                'scene_id' => $sceneId
                        )
                )
        );
        $json = json_encode($raw);
        $res = $this->rawpost($url, $json);
        if ($res === false) {
            return false;
        }
        $qrres = json_decode($res, true);
        if (isset($qrres['errcode'])) {
            return false;
        }
        return $qrres;
    }


返される JSON は以下のようになります:


微信公众平台开发二维码、创建菜单

この JSON 内の URL は QR コードですコンテンツ、次のステップは URL を QR コードに変換することです。上級者であれば、私は怠惰でオンラインで QR コードを作成しただけです。

WeChat で QR コードをスキャンしてフォローすると、さまざまなリマインダー メッセージがプッシュされます。以下はコードの一部です:

if (isset($msgObj->EventKey) && preg_match('/qrscene_(.*)/', $msgObj->EventKey, $scene)) {
                //扫码关注
                switch ($scene[1]) {
                    case AppConst::SCENE_ALCOHOL:
                        $pushData['Title'] = '标题';
                        break;
                }
                $pushData['PicUrl'] = 'http://mmbiz.qpic.cn';
                $pushData['Description'] = '描述!';
                $pushData['Url'] = 'http://mp.weixin.qq.com';
                $msg = $weixin->createRawTuWenMsg($fromUserName, $openId, array($pushData));
                
            }

2. メニューを作成します

1. カスタム メニューには最大 3 つの第 1 レベルのメニューを含めることができ、各第 1 レベルのメニューには最大 5 つの第 2 レベルのメニューを含めることができます。

2. 第 1 レベルのメニューには最大 4 文字、第 2 レベルのメニューには最大 7 文字の中国語を含めることができます。余分な部分は「...」に置き換えられます。

3. カスタム メニューを作成した後、WeChat クライアントのキャッシュにより、それが表示されるまでに 24 時間かかります。

テストするときは、公開アカウントのフォローを解除して再度フォローしてみると、作成後の効果を確認できます。クリックするとオンライン ドキュメントが表示されます。

カスタム メニュー インターフェイスでは、複数のタイプのボタンを実装できます。ここでは、次の 2 つのタイプを紹介します:

1. クリック: クリック プッシュ イベント

ユーザーがクリック タイプ ボタンをクリックした後、WeChat サーバーはメッセージをプッシュします。メッセージ インターフェイスを介して入力します。イベント構造を開発者に提供し (メッセージ インターフェイス ガイドを参照)、開発者がボタンに入力したキー値を入力します。開発者は、カスタマイズされたキー値を介してユーザーと対話できます。 2. 表示: ジャンプ URL

ユーザーが表示タイプ ボタンをクリックすると、WeChat クライアントは開発者がボタンに入力した Web ページ URL を開きます。これを Web ページ認証インターフェイスと組み合わせて、ユーザーの基本情報を取得できます。ユーザーの基本情報を取得するための情報。

public function actionCreatemenu()
    {
        $token = $this->get('token');
        $innerWeixinKey = WEIXIN_INNER_KEY;
        $trueToken = md5('menu' . $innerWeixinKey . 'menu');
        if ($token != $trueToken) {
            $this->innerOutput(1, '无法通过请求认证');
        }
        $weixin = new Weixin();
        //请注意菜单中的中文一定要采用某种方编码
        $menu = array(
            'button' => array(
                    array(
                        'name' => $this->encodeZH('菜单一'),
                        'sub_button' => array(
                            array(
                                'type' => 'view',
                                'name' => $this->encodeZH('子菜单一'),
                                'key' => 'MENU_GENE_INDEX',
                                'url' => 'http://mp.weixin.qq.com/'
                            ),
                            array(
                                'type' => 'view',
                                'name' => $this->encodeZH('趣味文章'),
                                'key' => 'MENU_ARTICLE',
                                'url' => 'http://mp.weixin.qq.com'
                            ),
                            array(
                                'type' => 'view',
                                'name' => $this->encodeZH('产品预告'),
                                'key' => 'MENU_PRODUCT',
                                'url' => 'http://mp.weixin.qq.com/'
                            )
                        )
                    ),
                    array(
                        'name' => $this->encodeZH('产品流程'),
                        'sub_button' => array(
                            array(
                                'type' => 'view',
                                'name' => $this->encodeZH('武松打虎'),
                                'key' => 'MENU_GAME',
                                'url' => 'xxxx'
                            ),
                            array(
                                'type' => 'view',
                                'name' => $this->encodeZH('产品详情'),
                                'key' => 'MENU_PRODUCT_DETAIL',
                                'url' => 'http://mp.weixin.qq.com/'
                            )
                        )
                    )
                )
        );
    
        $menuMsg = $this->decodeZHMsg(json_encode($menu));
        
        $accessMongo = new WeixinAccessToken();
        $access_token = $accessMongo->getAccessToken();
        if (!$access_token) {
            $this->innerOutput(2, '无法获取access_token');
        }
        $weixin = new Weixin();
        $res = $weixin->customMenu($menuMsg, $access_token);
        if (!$res) {
            $this->innerOutput(3, '菜单创建失败');
        }
        $this->innerOutput(0, '菜单创建成功');
    }

1. コードの先頭で WEIXIN_INNER_KEY を使用して簡単な検証を行うことができます

2. 開始組織メニューの構造には名前、タイプなどが必要です

3.通常のトークン、ここで WeChat を参照できます。 パブリック プラットフォームは、access_token とそれらを取得するためのログを開発します。

4. 上記のコードには、エンコードに使用される encodeZH と decodeZHMsg という 2 つのメソッドがあることに注意してください。

/**
     * 针对中文字符串编码
     * @param $name
     * @return string
     */
    private function encodeZH($name)
    {
        return '[@' . base64_encode($name) . '@]';
    }
/**
     * 针对消息中存在中文编码过的串进行解码
     * @param $msg
     * @return mixed
     */
    private function decodeZHMsg($msg)
    {
        return preg_replace_callback('/\[\@(.+?)\@\]/', function ($match) {
            return base64_decode($match[1]);
        }, $msg);
    }

デモのダウンロード:

github アドレス: https://github.com/pwstrick/weixin_demo

CSDN アドレス: http://download.csdn.net/detail/loneleaf1/9045731

その他 WeChat パブリック プラットフォーム開発QR コードやメニュー作成に関する関連記事は、PHP 中国語 Web サイトに注目してください。

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