ホームページ  >  記事  >  バックエンド開発  >  PHP WeChat 開発: カスタム メニューを実装する方法

PHP WeChat 開発: カスタム メニューを実装する方法

PHPz
PHPzオリジナル
2023-05-13 13:31:361583ブラウズ

WeChat 公式アカウントの急速な発展に伴い、マーケティングやユーザー サービスに WeChat 公式アカウントを使用し始めている企業が増えています。 WeChat パブリック アカウントの開発において、カスタム メニューは非常に重要な機能です。この記事では、PHP WeChat開発でカスタムメニューを実装する方法を紹介します。

1. 前提条件

開始する前に、次のものを準備する必要があります:

1. WeChat 公式アカウントの appid と appsecret。

2. WeChat 公式アカウントは WeChat Pay にバインドされており、JSAPI 支払い権限が有効になっています。 (カスタム メニューには JSAPI 支払いが必要です)

2. メニューの作成

メニューの作成を開始する前に、WeChat カスタム メニューのルールを理解する必要があります。

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

2. メニューの制御権限はパブリックアカウントであり、メニューの作成、問い合わせ、削除などの操作はインターフェースを通じて実現できます。

3. メニューの応答アクション タイプには、click (クリック プッシュ イベント)、view (ジャンプ URL)、scancode_push (スキャン コード プッシュ イベント)、scancode_waitmsg (スキャン コード プッシュ イベントおよびポップアップ「メッセージ受信」) が含まれます。プロンプト ボックス)、pic_sysphoto (写真を撮って写真を送信するためにシステムをポップアップします)、pic_photo_or_album (写真を撮るか、写真を送信するためにアルバムをポップアップします)、pic_weixin (WeChat アルバム送信者をポップアップします)、location_select (地理的位置セレクターをポップアップします) )、media_id (メッセージの送信)、view_limited (画像およびテキスト メッセージの URL にジャンプ)。

次に、カスタム メニューの作成を開始します。まず、対応するメニュー構造を定義する必要があります。サンプル コードは次のとおりです:

class MenuButton{
    public $type;//菜单类型
    public $name;//菜单名称
    public $key;//菜单key
    public $url;//菜单url
    public $sub_button;//二级菜单数组

    public function __construct($name,$type,$key=null,$url=null,$sub_button=null){
        $this->name = $name;
        $this->type = $type;
        $this->key = $key;
        $this->url = $url;
        if(!empty($sub_button)){
            $this->sub_button = $sub_button;
        }
    }

    public function toArray(){
        $arr = array();
        if(count($this->sub_button) > 0){
            foreach($this->sub_button as $button){
                array_push($arr,$button->toArray());
            }
        }
        $data = array();
        $data['name'] = urlencode($this->name);
        switch($this->type){
            case 'click':
                $data['type'] = $this->type;
                $data['key'] = $this->key;
                break;
            case 'view':
                $data['type'] = $this->type;
                $data['url'] = $this->url;
                break;
            case 'scancode_push':
            case 'scancode_waitmsg':
            case 'pic_sysphoto':
            case 'pic_photo_or_album':
            case 'pic_weixin':
            case 'location_select':
                $data['type'] = $this->type;
                $data['key'] = $this->key;
                break;
            case 'media_id':
            case 'view_limited':
                $data['type'] = $this->type;
                $data['media_id'] = $this->key;
                break;
        }
        if(count($arr) > 0){
            $data['sub_button'] = $arr;
        }
        return $data;
    }
}

これは、第 1 レベルのメニューと第 2 レベルのメニューを含む MenuButton 構造を定義し、メニュー タイプも含みます、名前、キー、URL など。 MenuButton オブジェクトをインスタンス化するときに、対応するパラメーターを渡すことができます。

次に、MenuButton 構造を通じてカスタム メニューを作成します。サンプル コードは次のとおりです:

function create_menu($access_token){
    $menu = array();
    $menu[] = new MenuButton('一级菜单1','click','click1');
    $menu[] = new MenuButton('一级菜单2','view',null,'http://www.baidu.com');
    $menu[] = new MenuButton('一级菜单3',null,null,null,array(
        new MenuButton('二级菜单1','scancode_push','scancode_push1'),
        new MenuButton('二级菜单2','scancode_waitmsg','scancode_waitmsg1'),
        new MenuButton('二级菜单3','pic_sysphoto','pic_sysphoto1'),
        new MenuButton('二级菜单4','pic_photo_or_album','pic_photo_or_album1')
    ));
    $data = array();
    $data['button'] = array();
    foreach($menu as $button){
        array_push($data['button'],$button->toArray());
    }
    $url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token='.$access_token;
    $result = curl_post($url,urldecode(json_encode($data)));
    return $result;
}

ここでは、MenuButton のインスタンス (第 1 レベルのメニューと第 2 レベルのメニュー) を作成します。レベル メニューはレイヤーごとに定義され、最終的に、対応するインターフェイスを通じてメニューが正常に作成されます。

3. メニューのクエリ

メニューの作成に加えて、インターフェイスを使用して、作成されたメニューをクエリすることもできます。サンプル コードは次のとおりです。

function menu_query($access_token){
    $url = 'https://api.weixin.qq.com/cgi-bin/menu/get?access_token='.$access_token;
    $result = curl_get($url);
    return $result;
}

ここでは、作成されたメニューをクエリするために menu_get インターフェイスが使用されます。

4. メニューの削除

既存のメニューを削除する必要がある場合は、対応するインターフェイスを通じて操作することもできます。サンプルコードは以下のとおりです:

function menu_delete($access_token){
    $url = 'https://api.weixin.qq.com/cgi-bin/menu/delete?access_token='.$access_token;
    $result = curl_get($url);
    return $result;
}

5. まとめ

この記事では、PHP WeChat 開発におけるカスタム メニューの作成、クエリ、削除の方法を紹介します。同時に、カスタムメニューのルールにも注意し、ルールに従ってメニューを定義および作成する必要があります。カスタマイズされたメニューは、企業がユーザーに適切にサービスを提供し、ユーザー エクスペリエンスを向上させるのに役立ちます。

以上がPHP WeChat 開発: カスタム メニューを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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