Delphi 微信公众号控件开发:
- Delphi微信公众号控件开发:
- 一、公共属性定义
- 1. AppID(开发者ID)
- 2. AppSecret(开发者密码)
- 3. Token(令牌)
- 4. BaseURL(Web服务访问基地址)
- 5. BaseRootDir(本地Web文件实际路径)
- 6. EncodingType(消息加解密方式)
- 7. EncodingAESKey(消息加密KEY)
- 8. dvToken(设备管理用Token)
- 9. dvEncodingAESKey(设备管理用)
- 10.dvURL(设备管理用)
- 11.NeedLog(是否需要打日志)
- 二、自定义数据结构
- 三、 事件类型定义
- 1. 错误事件:TOnZZZ_Error
- 2. 收到文本消息事件:TOnA01_Text
- 3. 收到图片消息:TOnA02_Image
- 4. 收到语音信息:TOnA03_Voice
- 5. 收到视频信息:TOnA04_Video
- 6. 收到短视频信息:TOnA05_ShortVideo
- 7. 用户主动上报的位置信息:TOnA06_Location
- 8. 收到链接消息:TOnA07_Link
- 9. 关注公众号事件:OnB01_subscribe
- 10. 取消关注公众号事件:OnB02_Unsubscribe
- 11. 首次关注带参数二维码:OnB03_subscribeWithParamFirst
- 12. 扫描带参数已关注二维码:OnB04_subscribeWithParam
- 13. 自动上报的位置信息:TOnB05_Location_Event
- 14. 点击菜单拉取消息时的事件推送:TOnC01_ClickMenu
- 15. 点击菜单跳转链接时的事件:TOnC02_View_Event
- 16. 扫码推事件的事件推送:TOnC03_Scancode_push
- 17. 扫码推事件且弹出“消息接收中”:TOnC04_Scancode_waitmsg
- 18. 弹出系统拍照发图的事件:TOnC05_Pic_sysphoto
- 19. 弹出拍照或者相册发图的事件:TOnC06_Pic_photo_or_album
- 20. 弹出微信相册发图器的事件:TOnC07_Pic_weixin
- 21. 弹出地理位置选择器的事件:TOnC08_Location_select
- 22. 点击菜单跳转小程序的事件:TOnC09_view_miniprogram
- 23. 模板消息发送完成事件:TOnE01_template_sendjob_finishi
- 24. 服务器配置成功事件:TOnX01_ServerConfigSuccess
- 25. 资质认证成功(此时立即获得接口权限):TOnZ01_qualification_verify_success
- 26. 资质认证失败事件:TOnZ02_qualification_verify_fail
- 27. 名称认证成功事件(即命名成功):TOnZ03_naming_verify_success
- 28. 名称认证失败(这时虽然客户端不打勾,但仍有接口权限):TOnZ04_naming_verify_fail
- 29. 年审通知事件:TOnZ05_annual_renew
- 30. 认证过期失效通知事件:TOnZ06_verify_expired
Delphi微信公众号控件开发:
参考:微信开发者文档
微信公众号目前已经非常普及,架构功能强大,使用非常方便,和微信完美的结合。但是,无论是一个企业还是个人,如果想建设一个微信公众号,还是需要一定的专业技能的,基于此,我们开发一款通用的微信公众号控件,该控件完成所有的和微信平台接口难题,开发者使用这个控件只需要简单的设置几个参数,调用相关的方法,响应对应的事件即可立即实现一个微信公众号平台。
一、公共属性定义
1. AppID(开发者ID)
开发者ID是公众号开发识别码,配合开发者密码可调用公众号的接口能力。
2. AppSecret(开发者密码)
开发者密码是校验公众号开发者身份的密码,具有极高的安全性。以上这两个参数位于微信公众平台【开发-基本设置】中的公众号开发信息。
3. Token(令牌)
这个参数在微信公众平台【开发-基本设置】中的服务器配置中有设置。
4. BaseURL(Web服务访问基地址)
对于微信公众号,微信平台是需要公众号提供一个Web后台服务的,本控件内置Web服务,这个参数就是用来设置在服务器上面Web的基本地址。例如:
BaseURL | http://localhost:80/wxh |
---|
其中 http://localhost:80 时必须固定,因为这个是在Web服务器上提供的,所以需要使用本地路径,关于端口80,这个也是微信平台要求的,必须是80端口。后面的 wxh 则表示路径,不同的公众号可以有不同的路径,就是说同一台服务器上可以运行多个微信公众号,只要这个路径不同就可以。这个参数与 BaseRootDir 参数配合使用。
5. BaseRootDir(本地Web文件实际路径)
对于公众号平台,这个就是本地文件存放的目录,就是 wwwroot 目录。假如:
参数名 | 参数内容 |
---|---|
BaseURL | http://localhost:80/wxh |
BaseRootDir | C:\Users\Administrator\Desktop\WWWROOT |
微信平台的 服务器地址(URL) http://sensorwx.a365b.com/wxh, 则如果用户在浏览器请求 http://sensorwx.a365b.com/wxh/index.html,微信控件会到 BaseRootDir 指定的目录下取这个文件index.html。也就是在 C:\Users\Administrator\Desktop\WWWROOT\index.html。
6. EncodingType(消息加解密方式)
类型 | 含义 |
---|---|
etPlainText | 明文模式 |
etCipherText | 密文模式 |
etMixText | 混合模式 |
目前只支持 明文模式 。
7. EncodingAESKey(消息加密KEY)
这个参数只有在 EncodingType 设置为非 etPlainText 时才作为加解密Key使用。
8. dvToken(设备管理用Token)
9. dvEncodingAESKey(设备管理用)
10.dvURL(设备管理用)
11.NeedLog(是否需要打日志)
控制是否需要控件运行时打印日志,True表示需要打印日志,False不需要。默认是True。
二、自定义数据结构
1. 用户基本信息记录
//定义用户基本信息
TFans_Info = record
SubScribe : Byte; //用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号,拉取不到其余信息。
OpenID : String; //用户的标识,对当前公众号唯一
NickName : String; //用户的昵称
Sex : Byte; //用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
City : String; //用户所在城市
Province : String; //用户所在省份
country : String; //用户所在国家
Language : String; //用户的语言,简体中文为zh_CN
HeadImgUrl : String; //用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。
SubScribeTime: TDateTime; //用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间
Remark : String; //公众号运营者对粉丝的备注,公众号运营者可在微信公众平台用户管理界面对粉丝添加备注
groupid : string; //用户所在的分组ID
unionid : string; //只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。
//新增加
tagid_list : string; //用户被打上的标签ID列表
subscribe_scene : string; // {返回用户关注的渠道来源,
// ADD_SCENE_SEARCH 公众号搜索,
// ADD_SCENE_ACCOUNT_MIGRATION 公众号迁移,
// ADD_SCENE_PROFILE_CARD 名片分享,
// ADD_SCENE_QR_CODE 扫描二维码,
// ADD_SCENE_PROFILE_ LINK 图文页内名称点击,
// ADD_SCENE_PROFILE_ITEM 图文页右上角菜单,
// ADD_SCENE_PAID 支付后关注,
// ADD_SCENE_OTHERS 其他}
qr_scene : string; //二维码扫码场景(开发者自定义)
qr_scene_str : string; //二维码扫码场景描述(开发者自定义)
privilege : string;
refresh_token: string; //刷新授权的token
access_token : string; //授权获取基本信息的token
expires_in : TDatetime; //token 的有效期截止时间
scope : string;
end;
TFans_InfoArr = array of TFans_Info; //当前用户列表
2. 图文消息记录结构
TNews = record
Title : String; //图文消息标题
thumb_media_id : string; //图文消息的封面图片素材id(必须是永久mediaID)
show_cover_pic : string; //是否显示封面,0为false,即不显示,1为true,即显示
author : string; //作者
digest : string; //图文消息的摘要,仅有单图文消息才有摘要,多图文此处为空
content : string; //图文消息的具体内容,支持HTML标签,必须少于2万字符,小于1M,且此处会去除JS
Url : String; //点击图文消息跳转链接
content_source_url : string;//图文消息的原文地址,即点击“阅读原文”后的URL
update_time : string; //这篇图文消息素材的最后更新时间
name : string; //文件名称
Description : String; //图文消息描述
PicUrl : String; //图片链接,支持JPG、PNG格式,较好的效果为大图360*200,小图200*200
end;
3. 永久图文消息获取记录结构
//永久图文消息获取记录 定义开始********************
Tnews_item = record
Title : String; //图文消息标题
thumb_media_id : string; //图文消息的封面图片素材id(必须是永久mediaID)
show_cover_pic : string; //是否显示封面,0为false,即不显示,1为true,即显示
author : string; //作者
digest : string; //图文消息的摘要,仅有单图文消息才有摘要,多图文此处为空
content : string; //图文消息的具体内容,支持HTML标签,必须少于2万字符,小于1M,且此处会去除JS
Url : String; //点击图文消息跳转链接
content_source_url : string;//图文消息的原文地址,即点击“阅读原文”后的URL
thumb_url : string;
need_open_comment : string;
only_fans_can_comment : string;
end;
TContent = record
create_time : TDateTime;
update_time : TDateTime;
news_item : TArray<Tnews_item>;
end;
TItem = record
media_id : string;
content : TContent;
update_time : TDateTime;
end;
TWXNews = record
Item : TArray<TItem>;
total_count : integer;
item_count : integer;
end;
//永久图文消息获取记录 定义结束********************
4. 获取(增加)永久 图片、语音、视频 消息定义
//获取永久 图片、语音、视频 消息定义开始 *************************************
TImage_Voice_Video_Item = record
media_id : string;
name : string;
update_time: TDatetime;
url : string;
end;
TImage_Voice_Video = record
Item : TArray<TImage_Voice_Video_Item>;
total_count : integer;
item_count : integer;
end;
//获取永久 图片、语音、视频 消息定义结束 *************************************
//增加永久 图文消息 定义开始
TNews_articles = TArray<Tnews_item>;
//增加永久 图文消息 定义结束
5. 模板消息结构定义
//模板消息 列表 定义 开始********************************
Ttemplate_Item = record
template_id : string; //模板id
title : string; //标题
primary_industry : string; //所属行业
deputy_industry : string; //所属副业
content : string; //模板内容
example : string; //模板样例
End;
//模板消息 列表 定义 结束********************************
//发送模板消息结构定义开始 ************************
Tminiprogram = record
appid : string;
pagepath : string;
end;
Ttemplate_message = record
touser : string;
template_id : string;
url : string;
miniprogram : Tminiprogram; //小程序定义
data : string;
end;
//发送模板消息结构定义结束 ************************
6. 其它结构定义
TMenu = record
id : string;
content : string;
end;
//通过openid获取用户在当前devicetype下绑定的deviceid列表
TDeviceList = record
devicetype : string;
deviceid : string;
end;
TArrDeviceList = array of TDeviceList;
//消息加密方式
TEncodeingType = (etPlainText,etCipherText,etMixText); //明文、密文、混合
三、 事件类型定义
1. 错误事件:TOnZZZ_Error
发生错误时会触发这个事件。
procedure(errcode,errmsg : string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
errcode | 错误代码,一般是数字 |
errmsg | 错误描述,是比较详细的描述错误位置,状态等 |
2. 收到文本消息事件:TOnA01_Text
当后台收到关注者(用户,粉丝)发来的文本消息的时候触发这个事件,可以在这个事件中根据关注者发送的文本消息进行自动回复。【公众号文档-接受普通消息】
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime,Text,bizmsgmenuid : string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的事件,格式为:YYYY-MM-DD hh:mm:ss |
Text | 收到的具体文本消息内容 |
bizmsgmenuid | 如果不为空,表示的是收到调查消息菜单的ID,正常情况下为空。具体参见微信开发者文档【[客服消息]中的 发送菜单消息。 |
菜单消息前端界面表现如下:
3. 收到图片消息:TOnA02_Image
如果用户发送图片,就会触发这个事件,可以在这个事件中处理相关业务。【公众号文档-接受普通消息】
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime,PicUrl,MediaId,MsgId : string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的事件,格式为:YYYY-MM-DD hh:mm:ss |
PicUrl | 图像存放的Url地址 |
MediaId | 图片的媒体ID,可以通过这个ID把图像在发送回去给关注者。 |
MsgId | 消息ID,目前无需使用 |
如果关注者给后台发送一张照片,后台在发送回来,界面和程序如下:
4. 收到语音信息:TOnA03_Voice
用户给公众号发送语音消息的时候,会触发这个事件,可以在此事件中处理相关逻辑。【公众号文档-接受普通消息】
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime,MediaId,Format,MsgID : string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的事件,格式为:YYYY-MM-DD hh:mm:ss |
PicUrl | 图像存放的Url地址 |
MediaId | 图片的媒体ID,可以通过这个ID把图像在发送回去给关注者。 |
Format | 表示语音的格式。语音格式,如amr,speex等 |
MsgId | 消息ID,目前无需使用 |
5. 收到视频信息:TOnA04_Video
用户给公众号平台发送视频的时候,会触发这个事件。
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime,MediaId,ThumbMediaId,MsgID : string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的事件,格式为:YYYY-MM-DD hh:mm:ss |
PicUrl | 图像存放的Url地址 |
MediaId | 图片的媒体ID,可以通过这个ID把图像在发送回去给关注者。 |
ThumbMediaId | 视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。 |
MsgId | 消息ID,目前无需使用 |
6. 收到短视频信息:TOnA05_ShortVideo
公众号平台收到短视频消息时触发这个事件。参数和 TOnVideo 一致。
7. 用户主动上报的位置信息:TOnA06_Location
用户在微信平台主动上报位置信息时触发这个事件。
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime,Location_X,Location_Y,Scale,Label1,MsgId : string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的事件,格式为:YYYY-MM-DD hh:mm:ss |
Location_X | 地理位置纬度 |
Location_Y | 地理位置经度 |
Scale | 地图缩放大小 |
Label1 | 地理位置信息 |
MsgId | 消息ID,64位整型,暂不需要。 |
8. 收到链接消息:TOnA07_Link
用户点击链接后触发这个事件。【公众号文档-接受普通消息】
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime,Title,Description,Url,MsgId : string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的事件,格式为:YYYY-MM-DD hh:mm:ss |
Title | 消息标题 |
Description | 消息描述 |
Url | 消息链接 |
MsgId | 消息ID,64位整型,暂不需要。 |
9. 关注公众号事件:OnB01_subscribe
用户通过扫描二维码或者其他方式对公众号关注成功后,触发这个事件。
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime : string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的时间,格式为:YYYY-MM-DD hh:mm:ss |
10. 取消关注公众号事件:OnB02_Unsubscribe
用户取消公众号的关注以后,会触发这个事件。
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime : string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的时间,格式为:YYYY-MM-DD hh:mm:ss |
11. 首次关注带参数二维码:OnB03_subscribeWithParamFirst
通过扫描带参数的二维码关注公众号时,会触发这个事件。
参见:【微信官方文档 - 消息管理 - 接受事件推送 - 扫描带参数二维码事件】
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime,EventKey,ticket : string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的时间,格式为:YYYY-MM-DD hh:mm:ss |
EventKey | 事件KEY值,qrscene_为前缀,后面为二维码的参数值 |
ticket | 二维码的ticket,可用来换取二维码图片 |
12. 扫描带参数已关注二维码:OnB04_subscribeWithParam
用户扫描已经关注过的公众号的带参数的二维码,触发这个事件。这个事件和 11 中的事件了类似,只是触发接口不同而已。
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime,EventKey,ticket : string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的时间,格式为:YYYY-MM-DD hh:mm:ss |
EventKey | 事件KEY值,qrscene_为前缀,后面为二维码的参数值 |
ticket | 二维码的ticket,可用来换取二维码图片 |
13. 自动上报的位置信息:TOnB05_Location_Event
用户允许上报位置信息后,会自动上报位置信息到公众号平台。上报时触发这个事件。【公众号文档-接受事件推送】
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime,Latitude,Longitude,Precision : string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的时间,格式为:YYYY-MM-DD hh:mm:ss |
Latitude | 地理位置纬度 |
Longitude | 地理位置经度 |
Precision | 地理位置精度 |
获取到用户位置的经度,纬度数据以后,可以通过百度,或者腾讯的 逆地址解析(坐标位描述) 进行解析,得到具体的位置描述信息。
14. 点击菜单拉取消息时的事件推送:TOnC01_ClickMenu
用户点击公众号下面的菜单时会触发这个事件。
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime,EventKey : string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的时间,格式为:YYYY-MM-DD hh:mm:ss |
EventKey | 事件KEY值,与自定义菜单接口中KEY值对应 |
15. 点击菜单跳转链接时的事件:TOnC02_View_Event
点击菜单中的链接时触发这个事件。
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime,EventKey,MenuID : string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的时间,格式为:YYYY-MM-DD hh:mm:ss |
EventKey | 事件KEY值,设置的跳转URL |
MenuID | 指菜单ID,如果是个性化菜单,则可以通过这个字段,知道是哪个规则的菜单被点击了。 |
16. 扫码推事件的事件推送:TOnC03_Scancode_push
扫描条码等信息会触发这个事件。扫描成功会返回扫描的结果 ScanResult
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime,EventKey,ScanType,ScanResult: string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的时间,格式为:YYYY-MM-DD hh:mm:ss |
EventKey | 事件KEY值,由开发者在创建菜单时设定 |
ScanType | 扫描类型,一般是qrcode |
ScanResult | 扫描结果,即二维码对应的字符串信息 |
17. 扫码推事件且弹出“消息接收中”:TOnC04_Scancode_waitmsg
扫码推事件且弹出“消息接收中”提示框的事件推送。和上面命令是一样的,就是多了一个提示信息。
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime,EventKey,ScanType,ScanResult: string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的时间,格式为:YYYY-MM-DD hh:mm:ss |
EventKey | 事件KEY值,由开发者在创建菜单时设定 |
ScanType | 扫描类型,一般是qrcode |
ScanResult | 扫描结果,即二维码对应的字符串信息 |
18. 弹出系统拍照发图的事件:TOnC05_Pic_sysphoto
弹出系统照相事件。
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime,EventKey,Count,PicList,PicMd5Sum: string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的时间,格式为:YYYY-MM-DD hh:mm:ss |
EventKey | 事件KEY值,由开发者在创建菜单时设定 |
count | 发送的图片数量 |
PicList | 图片列表 |
PicMd5Sum | 图片的MD5值,开发者若需要,可用于验证接收到图片 |
19. 弹出拍照或者相册发图的事件:TOnC06_Pic_photo_or_album
弹出照片或者选择照片的菜单事件。
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime,EventKey,Count,PicList,PicMd5Sum: string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的时间,格式为:YYYY-MM-DD hh:mm:ss |
EventKey | 事件KEY值,由开发者在创建菜单时设定 |
count | 发送的图片数量 |
PicList | 图片列表 |
PicMd5Sum | 图片的MD5值,开发者若需要,可用于验证接收到图片 |
20. 弹出微信相册发图器的事件:TOnC07_Pic_weixin
弹出相测选择照片事件。
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime,EventKey,Count,PicList,PicMd5Sum: string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的时间,格式为:YYYY-MM-DD hh:mm:ss |
EventKey | 事件KEY值,由开发者在创建菜单时设定 |
count | 发送的图片数量 |
PicList | 图片列表 |
PicMd5Sum | 图片的MD5值,开发者若需要,可用于验证接收到图片 |
21. 弹出地理位置选择器的事件:TOnC08_Location_select
选择地理位置事件,是从菜单中触发的。
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime,EventKey,Location_X,Location_Y,Scale,Label1,Poiname : string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的时间,格式为:YYYY-MM-DD hh:mm:ss |
EventKey | 事件KEY值,由开发者在创建菜单时设定 |
Location_X | X坐标信息 |
Location_Y | Y坐标信息 |
Label1 | 地理位置的字符串信息 |
Poiname | 朋友圈POI的名字,可能为空 |
22. 点击菜单跳转小程序的事件:TOnC09_view_miniprogram
在菜单中点击小程序跳转事件。
procedure(AResponseInfo: THttpServerResponse; ToUserName,FromUserName,CreateTime,EventKey,MenuID: string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
AResponseInfo | 表示收到消息当时的Http对象,可以使用这个对象立即进行消息回复 |
ToUserName | 表示是谁发来的消息,关注者的OpenID,这个是站在服务器后台的角度命名的。 |
FromUserName | 表示的是公众号的ID |
CreateTime | 表示的是消息收到的时间,格式为:YYYY-MM-DD hh:mm:ss |
EventKey | 事件KEY值,跳转的小程序路径 |
MenuID | 菜单ID,如果是个性化菜单,则可以通过这个字段,知道是哪个规则的菜单被点击了 |
23. 模板消息发送完成事件:TOnE01_template_sendjob_finishi
当给用户发送完成模板消息后触发这个事件。
参见:【消息管理 - 模板消息接口 - 事件推送】
procedure(MsgID, Status : string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
MsgID | 消息id |
Status | 发送状态: (成功,拒收)。 |
24. 服务器配置成功事件:TOnX01_ServerConfigSuccess
微信服务器第三方后台配置成功会触发这个事件。具体就是下图中如果配置成功,就会触发这个事件!在微信公众号管理后台中的【开发 - 基本配置】中。
25. 资质认证成功(此时立即获得接口权限):TOnZ01_qualification_verify_success
资质认证成功后,公众号就获得了认证相关接口权限,资质认证成功一定发生在名称认证成功之前,
名称认证成功后,公众号才在微信客户端中获得打勾认证标识。
procedure(Next_Onqualification_verify_Time : TDateTime) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
Next_Onqualification_verify_Time | 需这个事件之前进行认证 |
26. 资质认证失败事件:TOnZ02_qualification_verify_fail
资质认证失败,触发这个事件!
procedure(FailTime : TDateTime; FailReason : string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
FailTime | 认证失败的时间 |
FailReason | 认证失败的原因说明。 |
27. 名称认证成功事件(即命名成功):TOnZ03_naming_verify_success
procedure(Next_Onqualification_verify_Time : TDateTime) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
Next_Onqualification_verify_Time | 在这个时间之后认证过期 |
28. 名称认证失败(这时虽然客户端不打勾,但仍有接口权限):TOnZ04_naming_verify_fail
名称认证失败事件!
procedure(FailTime : TDateTime; FailReason : string) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
FailTime | 认证失败的时间 |
FailReason | 认证失败的原因 |
29. 年审通知事件:TOnZ05_annual_renew
公众号快要年审的时候,腾讯会推送提醒年审事件!
procedure(Next_Onqualification_verify_Time : TDateTime) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
Next_Onqualification_verify_Time | 在这个时间之后认证过期,这个时间之前要进行认证。 |
30. 认证过期失效通知事件:TOnZ06_verify_expired
认证过期之后,腾旭会推送提醒事件。
procedure(ExpiredTime : TDateTime) of object;
参数说明:
参数名称 | 参数说明 |
---|---|
ExpiredTime | 已于改时间认证过期,请重新发起认证 |
来源:CSDN
作者:sensor_WU
链接:https://blog.csdn.net/sensor_WU/article/details/103478519