前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Laravel学习记录--微信开发(day2)

Laravel学习记录--微信开发(day2)

作者头像
切图仔
发布2022-09-14 14:45:48
6810
发布2022-09-14 14:45:48
举报
文章被收录于专栏:生如夏花绚烂

回复音乐信息

参数

是否必须

说明

ToUserName

接收方帐号(收-到的OpenID)

FromUserName

开发者微信号

CreateTime

消息创建时间 (整型)

MsgType

消息类型,音乐为music

Title

音乐标题

Description

音乐描述

MusicURL

音乐链接

HQMusicUrl

高质量音乐链接,WIFI环境优先使用该链接播放音乐

ThumbMediaId

缩略图的媒体id,通过素材管理中的接口上传多媒体文件,得到的id

代码语言:javascript
复制
 $musicModel = "<xml>
                 <ToUserName><![CDATA[%s]]></ToUserName>
                 <FromUserName><![CDATA[%s]]></FromUserName>
                 <CreateTime>%s</CreateTime>
                 <MsgType><![CDATA[%s]]></MsgType>
                 <Music>
                 <Title><![CDATA[%s]]></Title>
                 <Description><![CDATA[%s]]></Description>
                 <MusicUrl><![CDATA[%s]]></MusicUrl>
                 <HQMusicUrl><![CDATA[%s]]></HQMusicUrl>
                 </Music>
                 </xml>";
 $toUserName = $txtObj->FromUserName;//接受方等于发送此消息的用户名
 $fromUserName = $txtObj->ToUserName;//发送方等用户发送消息的ToUserName
 $time = time(); 
 

```php
if($txtObj->Content == 'Music'){
            $msgType = 'music';
            $title = '告白气球';
            $descript = '用一首歌的时间想你';
            $musicUrl = $hqUrl = 'http://590c1c9e.nat123.cc/gbqq.mp3';

            $sendText = sprintf($musicModel,$toUserName,$fromUserName,$time,$msgType,$title,$descript,$musicUrl,$hqUrl);
            echo $sendText;
        }
在这里插入图片描述
在这里插入图片描述

回复图文消息

参数

是否必须

说明

ToUserName

接收方帐号(收到的OpenID)

FromUserName

开发者微信号

CreateTime

消息创建时间 (整型)

MsgType

消息类型,图文为news

ArticleCount

图文消息个数;当用户发送文本、图片、视频、图文、地理位置这五种消息时,开发者只能回复1条图文消息;其余场景最多可回复8条图文消息

Articles

图文消息信息,注意,如果图文数超过限制,则将只发限制内的条数

Title

图文消息标题

Description

图文消息描述

PicUrl

图片链接,支持JPG、PNG格式,较好的效果为大图360200,小图200200

Url

点击图文消息跳转链接

代码语言:javascript
复制
    $articleModel="<xml>
                   <ToUserName><![CDATA[%s]]></ToUserName>
                   <FromUserName><![CDATA[%s]]></FromUserName>
                   <CreateTime>%s</CreateTime>
                   <MsgType><![CDATA[%s]]></MsgType>
                   <ArticleCount>1</ArticleCount>
                   <Articles>
                   <item>
                   <Title><![CDATA[%s]]></Title>
                   <Description><![CDATA[%s]]></Description>
                   <PicUrl><![CDATA[%s]]></PicUrl>
                   <Url><![CDATA[%s]]></Url>
                  </item>
                  </Articles>
                  </xml>";
代码语言:javascript
复制
$toUserName = $txtObj->FromUserName;//接受方等于发送此消息的用户名
$fromUserName = $txtObj->ToUserName;//发送方等用户发送消息的ToUserName
$time = time();
if($txtObj->Content=='文章')){
            $msgType = 'news' ;
            $title = '“小三”插足了我的家庭,破坏了我的婚姻,我却不恨她';
            $dec = '郑梅因为前夫出轨和他离了婚,可是郑梅从发现前夫有小三到离婚,她的心里对小三始终恨不起来,反而是同情可怜她,甚至还有点感激她。郑梅的朋友都想不通她竟然能如此开明,还说她太傻了,怎么可以同情坏女人。';
            $imgUrl = 'https://590c1c9e.nat123.cc/2.jpg';

            $sendText = sprintf($articleModel,$toUserName,$fromUserName,$time,$msgType,$title,$des,$imgUrl,$url,$title2,$descript2,$imgUrl2,$url2);
            echo $sendText;
        }
在这里插入图片描述
在这里插入图片描述

自定义菜单

  1. 自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。
  2. 一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。
  3. 创建自定义菜单后,菜单的刷新策略是,在用户进入公众号会话页或公众号profile页时,如果发现上一次拉取菜单的请求在5分钟以前,就会拉取一下菜单,如果菜单有更新,就会刷新客户端的菜单。测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。

自定义菜单接口可实现多种类型按钮

  • click:点击推事件用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;
  • view:跳转URL用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的网页URL,可与网页授权获取用户基本信息接口结合,获得用户基本信息。
  • scancode_push:扫码推事件用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后显示扫描结果(如果是URL,将进入URL),且会将扫码的结果传给开发者,开发者可以下发消息。
  • scancode_waitmsg:扫码推事件且弹出“消息接收中”提示框用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后,将扫码的结果传给开发者,同时收起扫一扫工具,然后弹出“消息接收中”提示框,随后可能会收到开发者下发的消息。
  • pic_sysphoto:弹出系统拍照发图用户点击按钮后,微信客户端将调起系统相机,完成拍照操作后,会将拍摄的相片发送给开发者,并推送事件给开发者,同时收起系统相机,随后可能会收到开发者下发的消息。
  • pic_photo_or_album:弹出拍照或者相册发图用户点击按钮后,微信客户端将弹出选择器供用户选择“拍照”或者“从手机相册选择”。用户选择后即走其他两种流程。
  • pic_weixin:弹出微信相册发图器用户点击按钮后,微信客户端将调起微信相册,完成选择操作后,将选择的相片发送给开发者的服务器,并推送事件给开发者,同时收起相册,随后可能会收到开发者下发的消息。
  • location_select:弹出地理位置选择器用户点击按钮后,微信客户端将调起地理位置选择工具,完成选择操作后,将选择的地理位置发送给开发者的服务器,同时收起位置选择工具,随后可能会收到开发者下发的消息。
  • media_id:下发消息(除文本消息)用户点击media_id类型按钮后,微信服务器会将开发者填写的永久素材id对应的素材下发给用户,永久素材类型可以是图片、音频、视频、图文消息。请注意:永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。
  • view_limited:跳转图文消息URL用户点击view_limited类型按钮后,微信客户端将打开开发者在按钮中填写的永久素材id对应的图文消息URL,永久素材类型只支持图文消息。请注意:永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。​ 请注意,3到8的所有事件,仅支持微信iPhone5.4.1以上版本,和Android5.4以上版本的微信用户,旧版本微信用户点击后将没有回应,开发者也不能正常接收到事件推送。9和10,是专门给第三方平台旗下未微信认证(具体而言,是资质认证未通过)的订阅号准备的事件类型,它们是没有事件推送的,能力相对受限,其他类型的公众号不必使用。

接口调用请求说明 http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN 这里需要ACCESS_TOKEN才能调用接口

access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

Access_token的获取方法 接口调用 https请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 参数说明

参数

是否必须

说明

grant_type

获取access_token填写client_credential

appid

第三方用户唯一凭证

secret

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

返回值

正常情况返回json格式的数据

代码语言:javascript
复制
{"access_token":"ACCESS_TOKEN","expires_in":7200}

access_token:获取的ACCESS_TOKEN expires_in:ACCESS_TOKEN的有效期(秒)

错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):

代码语言:javascript
复制
{"errcode":40013,"errmsg":"invalid appid"}

返回码说明

返回码

说明

-1

系统繁忙,此时请开发者稍候再试

0

请求成功

40001

AppSecret错误或者AppSecret不属于这个公众号,请开发者确认AppSecret的正确性

40002

请确保grant_type字段值为client_credential

40164

调用接口的IP地址不在白名单中,请在接口IP白名单中进行设置。(小程序及小游戏调用不要求IP地址在白名单内。)

这里我们通过开发调试工具获取access_token

获取到access_token后我们就可以创建自定义菜单了,调用https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

接口或者使用开发工具调用

代码方式

代码语言:javascript
复制
$acUrl ='https://api.weixin.qq.com/cgi-bin/menu/create?access_token='.$ac;
    $curl = curl_init();
    //设置参数
    $data = '{
       "button":[
        {
            
            "name":"志愿四川",
            "sub_button":[
                {
                    "type":"view",
                    "name":"青春汇",
                    "url":"https://www.baidu.com"
                },
                {

                    "type":"view",
                    "name":"志愿四川",
                    "url":"https://www.baidu.com"
                }
            ]
        },
        {
             "type":"view",
             "name":"青创商城",
             "url":"https://www.baidu.com"

        },
        {
            "type":"click",
            "name":"今日歌曲",
            "key":"music"
        }
       ]

    }'
    curl_setopt($curl, CURLOPT_URL,$acUrl);
    curl_setopt($curl, CURLOPT_HEADER,0);//不返回header头
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//数据返回而不是输出
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);//使用ssl证书加密
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);//post提交
    //发送请求信息
    $data = curl_exec($curl);
    //关闭请求资源
    curl_close($curl);
    $arr = json_decode($data,true);//将返回的数据转换为php数组
    var_dump($arr);

开发者调试工具方式

在这里插入图片描述
在这里插入图片描述

自定义菜单参数说明

参数

是否必须

说明

button

一级菜单数组,个数应为1~3个

sub_button

二级菜单数组,个数应为1~5个

type

菜单的响应动作类型,view表示网页类型,click表示点击类型,miniprogram表示小程序类型

name

菜单标题,不超过16个字节,子菜单不超过60个字节

key

click等点击类型必须

菜单KEY值,用于消息接口推送,不超过128字节

url

view、miniprogram类型必须

网页 链接,用户点击菜单可打开链接,不超过1024字节。 type为miniprogram时,不支持小程序的老版本客户端将打开本url。

media_id

media_id类型和view_limited类型必须

调用新增永久素材接口返回的合法media_id

appid

miniprogram类型必须

小程序的appid(仅认证公众号可配置)

pagepath

miniprogram类型必须

小程序的页面路径

创建好菜单后我们就可以给菜单复于相应行为,这里以“今日歌曲”为例

参考开发文档 “自定义菜单”----“事件推送”

用户点击自定义菜单后,微信会把点击事件推送给开发者,请注意,点击菜单弹出子菜单,不会产生上报

代码语言:javascript
复制
$txt = file_get_contents('php://input');//获取post数据
$txtObj = simplexml_load_string($txt,'SimpleXMLElement',LIBXML_NOCDATA);//XML数据转换为对象
$toUserName = $txtObj->FromUserName;//接受方等于发送此消息的用户名
 $fromUserName = $txtObj->ToUserName;//发送方等用户发送消息的ToUserName
 $time = time();
 $musicModel = "<xml>
                 <ToUserName><![CDATA[%s]]></ToUserName>
                 <FromUserName><![CDATA[%s]]></FromUserName>
                 <CreateTime>%s</CreateTime>
                 <MsgType><![CDATA[%s]]></MsgType>
                 <Music>
                 <Title><![CDATA[%s]]></Title>
                 <Description><![CDATA[%s]]></Description>
                 <MusicUrl><![CDATA[%s]]></MusicUrl>
                 <HQMusicUrl><![CDATA[%s]]></HQMusicUrl>
                 </Music>
                 </xml>";
if($txtObj->MsgType == 'event'){
        //触发事件
        if($txtObj->Event == 'CLICK' && $txtObj->EventKey=='music'){
            //点击事件并且由“今日歌曲触发”
            $msgType = 'music';
            $title = '告白气球';
            $descript = '用一首歌的时间想你';
            $musicUrl = $hqUrl = 'http://590c1c9e.nat123.cc/gbqq.mp3';
            $sendText = sprintf($musicModel,$toUserName,$fromUserName,$time,$msgType,$title,$descript,$musicUrl,$hqUrl);
            echo $sendText;
        

        }
    }
在这里插入图片描述
在这里插入图片描述

点击事件被触发 返回给开发者xml数据包

代码语言:javascript
复制
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[FromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[CLICK]]></Event>
<EventKey><![CDATA[EVENTKEY]]></EventKey>
</xml>

参数说明

参数

描述

ToUserName

开发者 微信号

FromUserName

发送方帐号(一个OpenID)

CreateTime

消息创建时间 (整型)

MsgType

消息类型,event

Event

事件类型,CLICK

EventKey

事件KEY值,与自定义菜单接口中KEY值对应

跳转事件被触发

返回的xml数据包

代码语言:javascript
复制
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[FromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[VIEW]]></Event>
<EventKey><![CDATA[www.qq.com]]></EventKey>
<MenuId>MENUID</MenuId>
</xml>

参数说明

参数

描述

ToUserName

开发者 微信号

FromUserName

发送方帐号(一个OpenID)

CreateTime

消息创建时间 (整型)

MsgType

消息类型,event

Event

事件类型,VIEW

EventKey

事件KEY值,设置的跳转URL

MenuID

指菜单ID,如果是个性化菜单,则可以通过这个字段,知道是哪个规则的菜单被点击了。

还有其他的事件。按钮类型用到在来补充

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档