微信开发之微信快速开发框架(WXPP QuickFramework)
凌雪 2018-12-17 来源 :网络 阅读 1444 评论 0

摘要:本文将带你了解微信开发微信快速开发框架(六)-- 微信快速开发框架(WXPP QuickFramework)V2.0版本上线--源码已更新至github,希望本文对大家学微信有所帮助。

本文将带你了解微信开发微信快速开发框架(六)-- 微信快速开发框架(WXPP QuickFramework)V2.0版本上线--源码已更新至github,希望本文对大家学微信有所帮助。



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,这个更不了解了。

微信公众平台类型

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

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

ApiRequest与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、配置文件方式:


   
   
     
   

2、代码方式:

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

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

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

创建自定义菜单

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

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

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

var request = new MenuCreateRequest            {                AccessToken = ApiAccessTokenManager.Instance.GetCurrentToken(),                Buttons = new   List                  {                    new   ClickButton{                          Name = "博客",                        Url =   "//inday.cnblogs.com",                        Type =   ClickButtonType.view                      },                    new   ClickButton{                          Name = "文章",                        SubButton = new   List{                            new   ClickButton{                                  Name = "推荐",                                Url =   "//www.cnblogs.com",                                Type =   ClickButtonType.view                            },                            new ClickButton   {                                Name =   "精华",                                  Url = "//www.cnblogs.com/pick/",                                Type =   ClickButtonType.view                              }                        }                    },                    new ClickButton{                        Name =   "新闻",                          Url="//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为:

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

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

获取所有关注用户

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

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测试下,测试结果如下:

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

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

结果:

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的验证,后续会与微信公众开发平台标准进行更新。


    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之微信频道!


本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程