>  기사  >  백엔드 개발  >  PHP WeChat 개발: 사용자 정의 메뉴를 구현하는 방법

PHP WeChat 개발: 사용자 정의 메뉴를 구현하는 방법

PHPz
PHPz원래의
2023-05-13 13:31:361634검색

WeChat 공식 계정의 급속한 발전으로 점점 더 많은 회사가 WeChat 공식 계정을 마케팅 및 사용자 서비스에 사용하기 시작했습니다. WeChat 공개 계정 개발에서 사용자 정의 메뉴는 매우 중요한 기능입니다. 이 기사에서는 PHP WeChat 개발에서 사용자 정의 메뉴를 구현하는 방법을 소개합니다.

1. 전제 조건

시작하기 전에 다음 사항을 준비해야 합니다.

1. WeChat 공식 계정의 appid 및 appsecret.

2. WeChat 공식 계정이 WeChat Pay에 연결되었으며 JSAPI 결제 권한이 활성화되었습니다. (맞춤 메뉴에는 JSAPI 결제가 필요합니다.)

2. 메뉴 만들기

메뉴 만들기를 시작하기 전에 위챗 맞춤 메뉴의 규칙을 이해해야 합니다.

1. 사용자 정의 메뉴에는 최대 3개의 1단계 메뉴가 포함될 수 있으며, 각 1단계 메뉴에는 최대 5개의 2단계 메뉴가 포함될 수 있습니다.

2. 메뉴 제어권한은 공용 계정이며, 메뉴 생성, 조회, 삭제 등의 작업은 인터페이스를 통해 구현 가능합니다.

3 메뉴의 응답 동작 유형에는 클릭(푸시 이벤트 클릭), 보기(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단계 메뉴, 메뉴 유형, 이름, 메뉴 버튼 구조가 정의되어 있습니다. 키, 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.