백엔드 개발 PHP 튜토리얼 微信公众平台开发(八) 自定义菜单功能开发_PHP教程

微信公众平台开发(八) 自定义菜单功能开发_PHP教程

Jul 20, 2016 am 11:15 AM
내부 베타 기능 플랫폼 개발하다 위챗 성공 제공하다 적용하다 ~의 사용자 정의 메뉴 신청 자격

微信公众平台服务号以及之前成功申请内测资格的订阅号都具有自定义菜单的功能。开发者可利用该功能为公众账号的会话界面底部增加自定义菜单,用户点击菜单中的选项,可以调出相应的回复信息或网页链接。自定义菜单接口将为公众账号的信息展示空间提供更多可能性。本文将针对自定义菜单做简单的开发应用,

开发者获取使用凭证后,可以使用该凭证对公众账号的自定义菜单进行创建、查询和删除等操作。 自定义菜单接口可实现以下类型按钮:

click(点击事件):

view(访问网页):

创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后,再次关注,则可以看到创建后的效果。

文档地址:http://mp.weixin.qq.com/wiki/index.php?title=%E8%87%AA%E5%AE%9A%E4%B9%89%E8%8F%9C%E5%8D%95%E6%8E%A5%E5%8F%A3

3.1 获取appid 和appsecret

在 微信公众平台 > 高级功能 > 开发模式中找到appid 和appsecret。

 

3.2 使用appid 和appsecret 向微信凭证获取接口请求access_token

请求地址:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

请求参数说明:

获取access_token填写client_credential

第三方用户唯一凭证

第三方用户唯一凭证密钥,既appsecret

返回说明:

正确的Json返回结果:

1

{"access_token":"ACCESS_TOKEN","expires_in":7200}

로그인 후 복사

返回参数说明:

access_token:获取到的凭证

expires_in:凭证有效时间,单位:秒

3.3 具体实现

a. 打印出格式

1

2

3

4

5

6

7

8

9

10

11

12

<?<span php

 

</span><span $APPID</span>="wxdxxxxxxxxxxxxxxx"<span ;

</span><span $APPSECRET</span>="96xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"<span ;

 

</span><span $TOKEN_URL</span>="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".<span $APPID</span>."&secret=".<span $APPSECRET</span><span ;

 

</span><span $json</span>=<span file_get_contents</span>(<span $TOKEN_URL</span><span );

</span><span $result</span>=json_decode(<span $json</span>,<span true</span><span );

</span><span print_r</span>(<span $result</span><span );

 

</span>?>

로그인 후 복사

结果如下:

b. 获取access_token

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?<span php

 

</span><span $APPID</span>="wxdxxxxxxxxxxxxxxx"<span ;

</span><span $APPSECRET</span>="96xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"<span ;

 

</span><span $TOKEN_URL</span>="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".<span $APPID</span>."&secret=".<span $APPSECRET</span><span ;

 

</span><span $json</span>=<span file_get_contents</span>(<span $TOKEN_URL</span><span );

</span><span $result</span>=json_decode(<span $json</span>,<span true</span><span );

 

</span><span $ACC_TOKEN</span>=<span $result</span>['access_token'<span ];

 

</span><span echo</span> <span $ACC_TOKEN</span><span ;

 

</span>?>

로그인 후 복사

注:access_token对应于公众号是全局唯一的票据,重复获取将导致上次获取的access_token失效。

方法:通过POST一个特定结构体,实现在微信客户端创建自定义菜单。

请求地址:https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

<span {

 "button":[

 {

       "name":"公共查询",

       "sub_button":[

        {

           "type":"click",

           "name":"天气查询",

           "key":"tianQi"

        },

        {

           "type":"click",

           "name":"公交查询",

           "key":"gongJiao"

        },

        {

           "type":"click",

           "name":"翻译",

           "key":"fanYi"

        }]

  },

  {

       "name":"苏州本地",

       "sub_button":[

        {

           "type":"click",

           "name":"爱上苏州",

           "key":"loveSuzhou"

        },

        {

           "type":"click",

           "name":"苏州景点",

           "key":"suzhouScenic"

        },

        {

           "type":"click",

           "name":"苏州美食",

           "key":"suzhouFood"

        },

        {

           "type":"click",

           "name":"住在苏州",

           "key":"liveSuzhou"

        }]

   },

   {

       "type":"click",

       "name":"联系我们",

       "key":"lianxiUs"

   }]

}</span>

로그인 후 복사

示例说明:

菜单结构及说明:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<span {

 "button":[             //button定义该结构为一个菜单

  {

       "name":"分支主菜单名",  

       "sub_button":[    //sub_button定义子菜单

        {

           "type":"click",  //按钮类型

           "name":"分支子菜单名1",  //菜单名称

           "key":"loveSuzhou"  //菜单key值

        },

        {

           "type":"click",

           "name":"分支子菜单名2",

           "key":"liveSuzhou"

        }]

   },    //菜单之间用 , 分隔

   {

       "type":"click",

       "name":"独立菜单",

       "key":"lianxiUs"

   }]

}</span>

로그인 후 복사

返回说明:

正确的Json返回结果:

1

{"errcode":0,"errmsg":"ok"}

로그인 후 복사

提交菜单:

通过curl 提交以上的菜单数据,代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<span $MENU_URL</span>="https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".<span $ACC_TOKEN</span><span ;

 

</span><span $ch</span> =<span  curl_init();

 

curl_setopt(</span><span $ch</span>, CURLOPT_URL, <span $MENU_URL</span><span );

curl_setopt(</span><span $ch</span>, CURLOPT_CUSTOMREQUEST, "POST"<span );

curl_setopt(</span><span $ch</span>, CURLOPT_SSL_VERIFYPEER, <span FALSE</span><span );

curl_setopt(</span><span $ch</span>, CURLOPT_SSL_VERIFYHOST, <span FALSE</span><span );

curl_setopt(</span><span $ch</span>, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'<span );

curl_setopt(</span><span $ch</span>, CURLOPT_FOLLOWLOCATION, 1<span );

curl_setopt(</span><span $ch</span>, CURLOPT_AUTOREFERER, 1<span );

curl_setopt(</span><span $ch</span>, CURLOPT_POSTFIELDS, <span $data</span><span );

curl_setopt(</span><span $ch</span>, CURLOPT_RETURNTRANSFER, <span true</span><span );

 

</span><span $info</span> = curl_exec(<span $ch</span><span );

 

</span><span if</span> (curl_errno(<span $ch</span><span )) {

    </span><span echo</span> 'Errno'.curl_error(<span $ch</span><span );

}

 

curl_close(</span><span $ch</span><span );

 

</span><span var_dump</span>(<span $info</span>);

로그인 후 복사

运行结果:

测试结果:

菜单创建成功。

查询当前使用的自定义菜单结构。

请求地址:https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN

curl 代码如下:

1

2

3

4

5

6

7

8

9

10

<span $MENU_URL</span>="https://api.weixin.qq.com/cgi-bin/menu/get?access_token=".<span $ACC_TOKEN</span><span ;

 

</span><span $cu</span> =<span  curl_init();

curl_setopt(</span><span $cu</span>, CURLOPT_URL, <span $MENU_URL</span><span );

curl_setopt(</span><span $cu</span>, CURLOPT_RETURNTRANSFER, 1<span );

</span><span $menu_json</span> = curl_exec(<span $cu</span><span );

</span><span $menu</span> = json_decode(<span $menu_json</span><span );

curl_close(</span><span $cu</span><span );

 

</span><span echo</span> <span $menu_json</span>;

로그인 후 복사

取消当前使用的自定义菜单。

请求地址:https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN

curl 代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<span $MENU_URL</span>="https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=".<span $ACC_TOKEN</span><span ;

 

</span><span $cu</span> =<span  curl_init();

curl_setopt(</span><span $cu</span>, CURLOPT_URL, <span $MENU_URL</span><span );

curl_setopt(</span><span $cu</span>, CURLOPT_RETURNTRANSFER, 1<span );

</span><span $info</span> = curl_exec(<span $cu</span><span );

</span><span $res</span> = json_decode(<span $info</span><span );

curl_close(</span><span $cu</span><span );

 

</span><span if</span>(<span $res</span>->errcode == "0"<span ){

    </span><span echo</span> "菜单删除成功"<span ;

}</span><span else</span><span {

    </span><span echo</span> "菜单删除失败"<span ;

}</span>

로그인 후 복사

运行结果:

测试结果:

菜单删除成功。

七、完整代码获取

请到QQ群213260412共享里下载使用。

八、关注

请关注 卓锦苏州 微信公众帐号,卓锦苏州 基于SAE 平台开发,针对于主流的微信功能进行开发测试。

您可以关注 卓锦苏州 公众帐号进行功能测试,以及获取新的应用开发。

1. 登录微信客户端,朋友们 -> 添加朋友 -> 搜号码 -> zhuojinsz,查找并关注。

2. 扫描二维码:

卓锦苏州菜单功能:

目前菜单具体功能还在开发之中,会陆续更新,敬请期待。。。

 


We Believe, Great People Share Knowledge...

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/440160.htmlTechArticle微信公众平台 服务号 以及 之前成功申请内测资格的订阅号 都具有自定义菜单的功能。开发者可利用该功能为公众账号的会话界面底部增加...
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

WeChat Moments에서 방문자를 볼 수 있나요? WeChat Moments에서 방문자를 볼 수 있나요? May 06, 2024 pm 01:30 PM

WeChat Moments에서 방문자를 볼 수 있나요?

'아이폰16이 위챗을 지원하지 않을 수도 있다'는 루머가 돌고 있으며, 중국 애플의 기술 컨설턴트는 앱 스토어 수수료에 대해 텐센트와 소통 중이라고 전했다. '아이폰16이 위챗을 지원하지 않을 수도 있다'는 루머가 돌고 있으며, 중국 애플의 기술 컨설턴트는 앱 스토어 수수료에 대해 텐센트와 소통 중이라고 전했다. Sep 02, 2024 pm 10:45 PM

'아이폰16이 위챗을 지원하지 않을 수도 있다'는 루머가 돌고 있으며, 중국 애플의 기술 컨설턴트는 앱 스토어 수수료에 대해 텐센트와 소통 중이라고 전했다.

DeepSeek 이미지 생성 자습서 DeepSeek 이미지 생성 자습서 Feb 19, 2025 pm 04:15 PM

DeepSeek 이미지 생성 자습서

WeChat 배경 이미지를 설정하는 방법 WeChat 배경 이미지를 설정하는 방법 Apr 26, 2024 am 11:01 AM

WeChat 배경 이미지를 설정하는 방법

WeChat에서 삭제된 채팅 기록을 복구하는 방법 WeChat에서 삭제된 채팅 기록을 복구하는 방법 May 06, 2024 pm 01:29 PM

WeChat에서 삭제된 채팅 기록을 복구하는 방법

WeChat Lingqiantong은 안전한가요? WeChat Lingqiantong은 안전한가요? Apr 29, 2024 am 10:23 AM

WeChat Lingqiantong은 안전한가요?

WeChat 채팅 기록을 다른 휴대폰으로 전송하는 방법 WeChat 채팅 기록을 다른 휴대폰으로 전송하는 방법 May 08, 2024 am 11:20 AM

WeChat 채팅 기록을 다른 휴대폰으로 전송하는 방법

WeChat 자동 공제를 끄는 방법 WeChat 자동 공제를 끄는 방법 Apr 25, 2024 am 11:19 AM

WeChat 자동 공제를 끄는 방법

See all articles