微信快速开发框架(六)-- 微信快速开发框架(WXPP QuickFramework)V2.0版本上线--源码已更新至github

简介: 4月28日,已增加多媒体上传及下载API,对应MediaUploadRequest和MediaGetRequest ---------------------------------------------------------------------------- 4月24日,感谢@八二制造的提醒,修复了自定义菜单查询返回的错误,现已修正。

4月28日,已增加多媒体上传及下载API,对应MediaUploadRequest和MediaGetRequest

----------------------------------------------------------------------------

4月24日,感谢@八二制造的提醒,修复了自定义菜单查询返回的错误,现已修正。

-----------------------------------------------------------------------------

4月21日,框架类库已更新至NuGet,在NuGet中搜索JCSoft或者Weixin就能查到,感谢大家的支持,后续会把Outh2验证加上

NuGet控制台使用方法:

PM> Install-Package JCSoft.WX.Framework

----------------------------------------------------

用了一个多星期的时间,把微信快速开发框架进行了改进,之前1.0版本针对的是普通订阅号,V2.0版本将会对微信所有接口都进行支持。楼主开发的目的也是想让大家能够快速建立起微信公众平台(WXPP),据说现在开发个微信公众平台月薪可以达到10K,如果您觉得好,也可以捐助楼主一下,哈哈。

好久没被首推了,现在怎么申请首推啊?

此次更新的内容:

1、去除了Model类库,合并到WX.Framework类库

2、增加了对高级接口的支持

3、增加了API调用方式

4、支持获取AccessToken

5、增加了测试代码

6、增加群发功能,包括群发后时间的响应。

这次更新的内容较多,我会一一来演示给大家看的,目前还未支持上传和下载媒体文件,对于微信文档中说的Post/Form方式不太了解,示例也用了CURL,这个更不了解了。

微信公众平台类型

如果您刚解除微信公众平台,可以参考【建立微信公众平台测试账号】,目前微信公众平台账号类型分为:订阅号,服务号,账号类型的不同,所支持的接口也不相同:

image

之前1.0版本仅仅支持订阅号未认证的情况。1.0版本的使用可以参考:【体验微信公众平台快速开发框架】和【利用快速开发框架,快速搭建微信浏览博客园首页文章

通过实现IMessageRole.MessageRole(MiddleMessage message)和IMessageHandler.HandlerRequestMessage(MiddleMessage message),自定义规则和返回数据。在此不再重复表述。

V2.0支持自定义菜单及高级接口

V2.0已经基本支持自定义菜单及高级接口,自定义菜单和高级接口采用API方式与微信服务器端交互。

IApiClient:Api接口类

DefaultApiClient:实现了IApiClient的Execute方法

ApiResponse:微信服务端返回的数据,这个是个抽象类,所有继承的Response在WX.Model.Responses命名空间内

ApiRequest<ApiResponse>:发送到微信服务器短的数据,也是个抽象类,所有与之相关的Request都在WX.Model.Requests命名空间内

ApiRequest<ApiResponse>与ApiResponse是一一对应的关系。

ApiAccessTokenManager:因为自定义菜单及高级接口都需要AccessToken,所以写了一个TokenManager,使用的是单例模式,如果您想使用此类,您必须在配置文件中提供:wxappid和wxappsecret的值,也可以通过ApiAccessTokenManager.Instance.SetAppIdentity(appid, appsecret)初始设置。

示例一:获取AccessToken

上述已经说明,在自定义菜单和高级接口中,都需要提供AccessToken,AccessToken的获取方式可以查看微信平台文档

自定义获取AccessToken方式:

         var appid = new AppIdentication("appid", "appsecret");
            var request = new AccessTokenRequest(appid);
            IApiClient client = new DefaultApiClient();
            var response = client.Execute(request);
            if (response.IsError)
            {
                Console.WriteLine("get token is error");
            }
            else
            {
                Console.WriteLine(response.Access_Token);
            }

使用ApiAccessTokenManager获取AccessToken:

ApiAccessTokenManager.Instance.GetCurrentToken();

使用ApiAccessTokenManager的话,必须先设置AppId和AppSecret,有2种方式:

1、配置文件方式:

<configuration>
  <appSettings>
    <add key="wxappid" value="123"/>
    <add key="wxappsecret" value="123"/>
  </appSettings>
</configuration>

2、代码方式:

ApiAccessTokenManager.Instance.SetAppIdentity("123", "123");

要注意下,GetCurrentToken()使用前,您必须配置好您的Appid和AppSecret。

ApiAccessTokenManager还提供了过期管理,一般Token的有效时间为7200秒,ApiAccessTokenManager可以自动刷新Token。

创建自定义菜单

普通的订阅号只要认证以后,就支持了自定义菜单,目前认证费为300元,接口详细文档请点击查看

我们先看下实现后的效果:

image

接下来,我们看下实现代码:

var request = new MenuCreateRequest
            {
                AccessToken = ApiAccessTokenManager.Instance.GetCurrentToken(),
                Buttons = new List<ClickButton>
                {
                    new ClickButton{
                        Name = "博客",
                        Url = "http://inday.cnblogs.com",
                        Type = ClickButtonType.view
                    },

                    new ClickButton{
                        Name = "文章",
                        SubButton = new List<ClickButton>{
                            new ClickButton{
                                Name = "推荐",
                                Url = "http://www.cnblogs.com",
                                Type = ClickButtonType.view
                            },
                            new ClickButton {
                                Name = "精华",
                                Url = "http://www.cnblogs.com/pick/",
                                Type = ClickButtonType.view
                            }
                        }
                    },

                    new ClickButton{
                        Name = "新闻",
                        Url="http://www.cnblogs.com/news/",
                        Type = ClickButtonType.view
                    },
                }
            };
            var response = m_client.Execute(request);
            if (response.IsError)
            {
                Console.WriteLine(response);
            }
            else
            {
                Assert.Equal(false, response.IsError);
                Assert.Equal("ok", response.ErrorMessage);
            }

简单吧,你只要提供一个MenuCreateRequest的实例,通过IApiClient.Execute执行就可以了。

我在Api.Requests和Api.Responses中的命名规则是根据微信服务器路径的规则。比如创建自定义菜单的url为:image

所以我的Request就是MenuCreateRequest,对应的Response就是MenuCreateResponse。

如果想看测试想过,请微信扫描一下我的测试公众账号:QQ截图20131211120953

获取所有关注用户

接下来我们看下如何获取所有关注用户,此为高级接口,需要服务号+认证,详情点击查看文档

var request = new UserGetRequest
            {
                AccessToken = ApiAccessTokenManager.Instance.GetCurrentToken(),
                NextOpenId = ""
            };
            var response = m_client.Execute(request);
            if (!response.IsError)
            {
                foreach (var user in response.Data.OpenIds)
                {
                    Console.WriteLine(user);
                }
            }

默认每次提取10000个关注用户,我在Xunit测试下,测试结果如下:

image

OpenId为对于某一公众账号的唯一标示,我们可以指定NextOpenId指定提取此ID后10000个关注用户,比如:

var request = new UserGetRequest
            {
                AccessToken = ApiAccessTokenManager.Instance.GetCurrentToken(),
                NextOpenId = "oI1_vjreLbQfGy79Thnsh4ziJZNo"
            };

结果:

image

Api接口对应文档

篇幅有限,不可能一一介绍,大家可以参考微信开发文档,使用申请测试账号进行测试,快速开发框架对应的Api如下表所示。

功能

ApiRequest

ApiResponse

自定义菜单创建接口

MenuCreateRequest

MenuCreateResponse

自定义菜单查询接口

MenuGetRequest

MenuGetResponse

自定义菜单删除接口

MenuDeleteRequest

MenuDeleteResponse

创建分组

GroupsCreateRequest

GroupsCreateResponse

查询所有分组

GroupsGetRequest

GroupsGetResponse

查询用户所在分组

GroupsGetIdRequest

GroupsGetIdResponse

修改分组名

GroupsUpdateRequest

GroupsUpdateResponse

移动用户分组

GroupsMembersUpdateRequest

GroupsMembersUpdateResponse

获取用户基本信息

UserInfoRequest

UserInfoResponse

获取关注者列表

UserGetRequest

UserGetResponse

创建二维码Ticket

QrcodeCreateRequest

QrcodeCreateResponse

上传图文消息素材

MediaUploadNewsRequest

MediaUploadNewsResponse

根据分组进行群发

MessageMassSendAllRequest

MessageMassSendAllResponse

根据OpenId列表进行发送

MessageMassSendRequest

MessageMassSendResponse

删除群发

MessageMassDeleteRequest

MessageMassDeleteResponse

写在最后

经过一段时间的更新代码,对于微信快速开发框架也算告一段落,后续可能会比较忙碌点,如果出现bug,请大家与我取得联系,我会第一时间去更新代码,过段时间也会提供到腾讯公众论坛去,看看能否被推荐。

在项目中,我加入了测试项目,其中Really开头的为真实测试,需要Appid和AppSecret,Mock开头的为虚拟的,只测试了输出和返回的验证,可能不太严谨,但因为时间有限所以未做详细的测试。

在ApiRequest类中,都有Validate()的方法,目前还未完善,只有简单的对于AccessToken的验证,后续会与微信公众开发平台标准进行更新。

目前源代码完全公开在Github中,开源协议还未想好,等有空再说吧。

最近参加了某个公司的应聘,未成功,人家就看了简历就否了,没办法,人老珠黄,文凭才中专,经验多有何用呢,呵呵!有好公司觉得在下还可以,可以与我私聊,不过本人有言在先,本人简历写得很烂(懒得更新,那么多项目谁记得清楚呢),无文凭(如果中专也算的话。。。),英文不会说只会看(目前关键就是在学英文),不过本人除了会开发外,还会根据工作的性质,技术结合工作来,相信物有所值滴。还有要笔试基础的就免了,实在没脑子去背这么多,不是专业的面试狂,只是想改善家庭生活而已。

相关文章
|
4月前
|
机器人 数据安全/隐私保护 Python
企业微信自动回复软件,企业微信自动回复机器人,python框架分享
企业微信机器人包含完整的消息处理流程,支持文本消息自动回复、事件处理、消息加密解密等功能
|
4月前
|
Rust 安全 前端开发
Github 轻松斩获30k+ Star,桌面应用开发太丝滑啦,Tauri框架能重塑桌面App开发?别错过,抓紧上车
Tauri 是一个基于 Rust 的开源框架,用于构建轻量级、高性能、安全的跨平台桌面及移动应用。它利用系统 WebView 渲染前端界面,后端由 Rust 编写,具备出色的性能和安全性。相比 Electron,Tauri 应用体积更小、启动更快,且默认权限更安全。它支持 React、Vue、Svelte 等主流前端框架,并提供自动更新、CLI 工具链、资源注入优化等功能,适用于生产力工具、开发者工具、数据分析、AI 应用等多种场景。目前 Tauri 在 GitHub 上已获得超过 30,000 Star,社区活跃,是现代桌面应用开发的理想选择。
422 0
|
3月前
|
人工智能 自然语言处理 JavaScript
Github又一AI黑科技项目,打造全栈架构,只需一个统一框架?
Motia 是一款现代化后端框架,融合 API 接口、后台任务、事件系统与 AI Agent,支持 JavaScript、TypeScript、Python 多语言协同开发。它提供可视化 Workbench、自动观测追踪、零配置部署等功能,帮助开发者高效构建事件驱动的工作流,显著降低部署与运维成本,提升 AI 项目落地效率。
352 0
|
4月前
|
JSON 机器人 API
微信机器人自动回复插件,vx自动回复机器人脚本助手,python框架分享
这个微信机器人系统包含三个主要模块:主程序基于itchat实现微信消息监听和自动回复功能
|
4月前
|
前端开发 数据可视化 JavaScript
惊喜! Github 10k+ star 的国产流程图框架,LogicFlow 能解你的图编辑痛点?
LogicFlow 是一款高效、灵活的流程图编辑框架,支持可视化渲染、自定义节点、插件扩展及前端执行。适用于审批流、ER 图、低代码平台等多种场景,具备清晰架构与活跃社区,助力开发者快速实现专业流程图编辑与执行。
292 1
|
4月前
|
JSON 机器人 数据安全/隐私保护
微信自动聊天机器人, 微信自动回复机器人,python框架分享
这个微信机器人实现包含主程序、配置文件、工具函数和测试脚本四个模块。主程序使用itchat库
|
5月前
|
人工智能 监控 数据可视化
微信养号脚本插件,全自动化工具,【autojs实现框架】
这是一套微信养号自动化脚本,包含主脚本`wechat_auto.js`和配置文件`config.json`。脚本实现自动浏览朋友圈、订阅号新闻文章及指定公众号历史文章三大功能,支持自定义滚动次数、阅读时长与运行时间等参数。特点包括随机化操作、多种浏览模式交替及完善的日志记录。配套UI模块提供可视化控制界面,方便监控任务状态与调整参数。下载地址:https://www.pan38.com/share.php?code=n6cPZ,提取码:8888(仅供学习参考)。
|
9月前
|
人工智能 开发框架 机器人
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
AstrBot 是一个开源的多平台聊天机器人及开发框架,支持多种大语言模型和消息平台,具备多轮对话、语音转文字等功能。
5344 38
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
|
8月前
|
小程序 JavaScript 前端开发
微信小程序开发全流程:从注册到上线的完整指南
这篇文章详细记录了微信小程序的完整开发到最终上线的每一个步骤。适合对小程序开发感兴趣的个人开发者或希望了解完整流程的学习者,涵盖了云开发、事件绑定、生命周期管理、组件使用等关键内容。
3994 11
|
小程序 前端开发 JavaScript
微信小程序MINA框架
【6月更文挑战第4天】微信小程序MINA框架是一个专为小程序设计的框架,它主要分为两大部分:页面视图层(View)和AppService应用逻辑层。下面我将结合代码和图示来详细讲解MINA框架。
262 0

热门文章

最新文章