开源库Magicodes.WeChat.SDK总体介绍

简介: 目录 1    概要    1 2    主要特点    2 3    架构图    8 3.1    构造器——WeChatSDKBuilder    8 3.2    函数管理器——WeChatFrameworkFuncsManager    9 3.

 

目录

1    概要    1

2    主要特点    2

3    架构图    8

3.1    构造器——WeChatSDKBuilder    8

3.2    函数管理器——WeChatFrameworkFuncsManager    9

3.2.1    获取Key——GetKey    11

3.2.2    获取公众号配置——Config_GetWeChatConfigByKey    12

3.2.3    其他    12

3.3    配置管理器——WeChatConfigManager    13

3.4    接口上下文对象——WeChatApisContext    15

4    开发实践    16

4.1    开发流程图    16

4.2    自定义菜单API调用Demo    17

4.2.1    初始化配置    17

4.2.2    使用    17

 

  1. 概要

    博客使用Word发博,发布后,排版会出现很多问题,敬请谅解。另外Word发博代码格式显示凌乱,因此相关代码均使用图片替代。可加群获取原始文档。

本篇主要对MAGICODES.WECHAT.SDK进行简单总体的介绍。通过本篇教程,您可以对Magicodes.WeChat.SDK进行一个全面的了解。

注意:MAGICODES.WECHAT.SDK为心莱团队封装的轻量级微信SDK,现已全部开源,开源库地址为:https://github.com/xin-lai/Magicodes.WeChat.SDK

官方博客:http://www.cnblogs.com/codelove/

相关开源库地址:https://github.com/xin-lai

交流QQ群(Magicodes开源库交流群):346487194

Nuget包地址:https://www.nuget.org/packages?q=magicodes

 

  1. 主要特点

主要特点如上所示,下面再说点细节:

  1. 架构图

 

  1. 构造器——WeChatSDKBuilder

构造器用于构造SDK的一些初始化配置,比如日志记录器、存储器等。

为了方便扩展,日志记录器使用了Magicodes.Logger,存储器使用了Magicodes.Storage,这两个均为开源库,开源地址为:https://github.com/xin-lai

Magicodes.Logger目前提供了DebugLogger和NLog的具体实现,如果不满足需求,您完全可以编写自己的实现。

Magicodes.Storage目前实现了本地资源存储,即将实现阿里云、windows Azure等云存储。

了解了这些,我们接下来的需要知道的是:

在程序初始化时,我们需要构建这些对象,如下所示:

通过构造器设置了Api日志记录器之后,所有的API请求都会有相应的日志级别的日志输出。设置了支付日志记录器之后,所有的支付请求均由此记录器记录相关数据。存储提供程序后续会用到,目前是预留。

注意Create和Build方法,请不要试图new构造器,请使用Create来返回一个,处理完了之后,切记一定要调用Build方法,否则,你的设置是无效设置。

  1. 函数管理器——WeChatFrameworkFuncsManager

WeChatFrameworkFuncsManager是本SDK的函数总管,通过它可以注册各种函数,以便更方便的使用本SDK。WeChatFrameworkFuncsManager是懒加载单例设计,请不要new。其有以下几个主要方法:

这个是一个比较简单的设计,不过值得注意的是,函数不是瞎注册就行的,为了便于大家对号入座,这里使用了一个枚举来对应相关的业务:

也许从以上内容并不能很好的帮助你理解这个设计,我们来几段注册的代码看看:

  1. 获取Key——GetKey

使用租户Id作为Key,以确保不同的租户加载不同的公众号配置:

也可以写死,如下所示:

 

  1. 获取公众号配置——Config_GetWeChatConfigByKey

根据Key从数据库获取:

The Same,也可以写死:

注意,SDK只有配置没有缓存的情况下,才会触发该函数的执行。

  1. 其他

其他的就不多说了。简单说明如下所示:

Config_GetWeChatPayConfigByKey:获取支付配置,可以在此编写获取支付配置的逻辑

APIFunc_TemplateMessageApi_Create:模板消息发送成功函数,可以在此记录发送日志

APIFunc_QRCodeApi_Create:已弃用

APIFunc_GetAccessToken:获取AccessToken。用于中控服务器模式,即从中控服务器获取Accesstoken

 

  1. 配置管理器——WeChatConfigManager

WeChatConfigManager为配置管理器,顾名思义,就是管理各种配置和凭据,并且维护其过期时间。WeChatConfigManager是懒加载单例设计,请不要new。

目前存储有以下内容:

  • 公众号配置信息
  • 微信支付配置信息
  • 访问凭据
  • 凭证

其有以下方法可供使用:

 

  1. 接口上下文对象——WeChatApisContext

WeChatApisContext即接口上下文对象,该类为懒加载单例模式。通过WeChatApisContext. Current来访问。

一般情况下,使用该对象可以轻松访问所有的接口,如下自定义菜单的查询接口调用所示:

又如下面例子,二维码接口调用示例:

通常情况下,我们是极力推荐以上方式来调用接口。但是,也有例外的情形,比如Key的注册函数是依赖Cookie、Sesstion等对象的,而在某些情形下(比如公众号服务器事件响应中),无法通过这些对象获取到key,这时,就需要通过以下方式来调用了。

 

  1. 开发实践

    1. 开发流程图

  1. 自定义菜单API调用Demo

    1. 初始化配置

这里配置了构造器,然后注册了两个函数,分别用于获取Key以及获取公众号配置。

  1. 使用

如上面所示,通过WeChatApiContext获取接口,然后调用基本无需额外传递配置参数和Token等。针对业务情况,部分复杂API还支持通过JSON字符串来调用(内部会根据JSON字符串结合转换器来反序列化)。,

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
Linux C# 开发工具
C#开源的一款友好的.NET SDK管理器
C#开源的一款友好的.NET SDK管理器
|
9月前
|
算法 IDE 开发工具
火爆全网开源额温枪同平台之华大HC32L136 SDK开发入门
火爆全网开源额温枪同平台之华大HC32L136 SDK开发入门
166 1
|
22天前
|
开发工具 iOS开发 Perl
iOS使用SDK静态库
iOS使用SDK静态库
20 0
|
22天前
|
存储 开发工具 iOS开发
打包SDK静态库
打包SDK静态库
23 0
|
22天前
|
前端开发 安全 测试技术
制作SDK静态库
制作SDK静态库
21 0
|
22天前
|
存储 测试技术 开发工具
创建制作SDK的静态库工程
创建制作SDK的静态库工程
23 1
|
1月前
|
存储 运维 网络协议
【开源物联网平台】物联网设备上云提供开箱即用接入SDK
IOTDeviceSDK是物联网平台提供的设备端软件开发工具包,可简化开发过程,实现设备快速接入各大物联网平台。设备厂商获取SDK后,根据需要选择相应功能进行移植,即可快速集成IOTDeviceSDK,实现设备的接入。
147 0
|
1月前
|
开发工具 Python
【SLS开源兼容系列】使用ES SDK 访问SLS
本文介绍如何用es sdk访问sls
114 0
|
9月前
|
开发工具
如何使用webpack打包一个库library,使用webpack打包sdk.
如何使用webpack打包一个库library,使用webpack打包sdk.
136 0
|
消息中间件 自然语言处理 Cloud Native
RocketMQ 多语言 SDK 开源贡献召集令
我们欢迎任何形式的贡献,包括且不限于新 feature、bugfix、代码优化、生态集成、测试工作、文档撰写。更加欢迎能够认领一个完整的特定语言实现的同学!不要犹豫,欢迎大家以 issue/pull request 的形式将你的想法反馈到社区,一起来建设更好的 RocketMQ!
264 0
RocketMQ 多语言 SDK 开源贡献召集令