最简洁最易于使用的微信Sdk,包括公众号Sdk、小程序Sdk、企业微信Sdk等,以及Abp VNext集成。
名称 | Nuget |
---|---|
Magicodes.Wx.PublicAccount.Sdk | |
Magicodes.Wx.PublicAccount.Sdk.AspNet | |
Magicodes.Wx.PublicAccount.Sdk.Abp |
如何快速封装一个微信接口?(30秒编写一个微信Api,欢迎多多PR)
如何快速定义一个微信上传文件的接口?
全局
接口结果基类(ApiResultBase
)
ReturnCodes
)IsSuccess
)GetFriendlyMessage
) Access Token获取(ITokenApi
)
Token管理器(ITokenManager
)
Access Token API请求筛选器(AccessTokenApiFilter
)
AccessTokenApiFilter
)从配置文件获取公众号配置
"Wx": {
"PublicAccount": {
"AppId": "",
"AppSecret": ""
}
}
函数注入(WxFuncs
)
异常(WxSdkException
)
Abp Vnext集成(Magicodes.Wx.PublicAccount.Sdk.Abp
)
Magicodes.Wx.PublicAccount.Sdk.AspNet模块
WxEventController
)IWxEventsHandler
)WxPublicAccountControllerBase
)WxPublicAccountOAuthFilter
)基础消息能力
服务器事件消息
FromSubscribeEvent
FromUnsubscribeEvent
FromScanEvent
FromLocationEvent
FromClickEvent
FromViewEvent
FromTemplateSendJobFinishEvent
FromViewMiniprogramEvent
FromTextMessage
FromImageMessage
FromVoiceMessage
FromVideoMessage
FromShortVideoMessage
FromLocationMessage
FromLinkMessage
ToTextMessage
ToImageMessage
ToVoiceMessage
ToVideoMessage
ToMusicMessage
ToNewsMessage
ToNullMessage
群发接口
IMediaApi
>>UploadImageAsync
)api调用次数进行清零
获取公众号当前使用的自动回复规则
公众号一次性订阅消息
模板消息(ITemplateApi
)
自定义菜单(IMenuApi
)
CreateAsync
)GetAsync
)DeleteAsync
)订阅通知
客服消息
IKfAccountApi
)
GetKFListAsync
)AddAsync
)InviteWorkerAsync
)UpdateAsync
)UploadHeadimg
)DelAsync
)GetOnlineKFListAsync
)微信网页开发
WxHelper >> GetAuthorizeUrl
)IOauth2Api >> GetAccessTokenAsync
)IOauth2Api >> RefreshTokenAsync
)ISnsApi >> GetUserInfoAsync
)ISnsApi >> AuthAsync
)对话能力
素材管理(IMediaApi
)
UploadAsync
)图文消息留言管理
用户管理(IUserApi
)
UpdateRemarkAsync
)InfoAsync
)GetAsync
) 用户标签管理(ITagsApi
)
CreateAsync
)GetAsync
)UpdateAsync
)DeleteAsync
)IUserApi
>>GetUserByTagAsync
)BatchTaggingAsync
)BatchUnTaggingAsync
)GetIdListAsync
)账号管理
数据统计
微信卡券
微信门店
微信小店
智能接口
一物一码
微信发票
微信非税缴费
本Sdk上手非常简单,参考教程如下所示。
Install-Package Magicodes.Wx.PublicAccount.Sdk.AspNet
推荐使用此包,亦可使用Magicodes.Wx.PublicAccount.Sdk
来进行更多的自定义配置。
公众号的参考配置如下所示,请在appsettings.json
文件中进行配置:
"Wx": {
"PublicAccount": {
"AppId": "",
"AppSecret": ""
}
通过代码配置
参考代码如下所示:
app.UseMagicodesWeChatSdk(setup =>
{
setup.GetWeChatOptions = () =>
{
//配置
return new WxPublicAccountOption()
{
AppId = "",
AppSecret = ""
};
};
});
参考代码如下所示:
public void ConfigureServices(IServiceCollection services)
{
//添加公众号Sdk集成
services.AddMPublicAccountSdk()
//使用内存缓存
.AddDistributedMemoryCache();
}
public void Configure(IApplicationBuilder app)
{
//配置公众号Sdk
app.UseMPublicAccountSdk()
//使用分布式缓存缓存Access Token
.UseWxDistributedCacheForAccessToken();
}
接下来就简单了,通过依赖注入的方式注入相关Api,比如构造函数注入:
public HomeController(IMenuApi menuApi)
{
_menuApi = menuApi;
}
然后就可以使用了,如下面代码:
var result = await _menuApi.CreateAsync(new CreateMenuInput()
{
Button = new List<MenuButtonBase>()
{
new ClickButton()
{
Name = "今日歌曲",
Key = "V1001_TODAY_MUSIC"
},
new SubMenuButton()
{
Name = "菜单",
SubButtons = new List<MenuButtonBase>()
{
new ViewButton()
{
Name = "搜索",
Url = "http://www.soso.com/"
},
//需关联小程序后
//new MiniprogramButton()
//{
// Name = "wxa",
// Url = "http://mp.weixin.qq.com",
// AppId = "wx286b93c14bbf93aa",
// Pagepath = "pages/lunar/index"
//},
new ClickButton()
{
Name = "赞一下我们",
Key = "V1001_GOOD"
}
}
}
}
});
result.EnsureSuccess();
如何处理微信服务器事件、消息,步骤如下所示:
nuget包的安装和公众号的配置我们这里跳过,直接秀出Sdk配置代码:
public void ConfigureServices(IServiceCollection services)
{
//注册IWxEventsHandler,如需处理自定义事件消息,请务必实现IWxEventsHandler
services.AddSingleton<IWxEventsHandler, TestWxEventsHandler>();
services.AddMPublicAccountSdk()
.AddDistributedMemoryCache()
//添加服务器消息事件处理器
.AddServerMessageHandler();
}
public void Configure(IApplicationBuilder app)
{
//配置公众号Sdk
app.UseMPublicAccountSdk()
//使用分布式缓存缓存Access Token
.UseWxDistributedCacheForAccessToken();
}
参考代码如下所示:
/// <summary>
/// 公众号事件消息处理程序
/// </summary>
public class TestWxEventsHandler : IWxEventsHandler
{
/// <summary>
/// 执行
/// </summary>
/// <param name="fromMessage"></param>
/// <returns></returns>
public async Task<ToMessageBase> Execute(IFromMessage fromMessage)
{
if (fromMessage is FromTextMessage)
{
//返回多图文
var toMsg = new ToNewsMessage()
{
Articles = new List<ToNewsMessage.ArticleInfo>()
{
new ToNewsMessage.ArticleInfo()
{
Description = "最简洁最易于使用的微信Sdk,包括公众号Sdk、小程序Sdk、企业微信Sdk等,以及Abp VNext集成。",
PicUrl = "https://www.xin-lai.com/imgs/xinlai-logo_9d2c29c2794e6a173738bf92b056ab69.png",
Title="Magicodes.Wx.Sdk简介",
Url = "http://xin-lai.com"
}
},
FromUserName = "Test",
ToUserName = "Test"
};
return await Task.FromResult(toMsg);
}
else if (fromMessage is FromSubscribeEvent)
{
//返回文本消息
return await Task.FromResult(new ToTextMessage()
{
Content = "欢迎关注!",
});
}
else if (fromMessage is FromTextMessage)
{
//返回文本
return await Task.FromResult(new ToTextMessage()
{
Content = "Test",
});
}
return await Task.FromResult(new ToNullMessage());
}
}
相关事件和消息以及消息回复的定义,如下所示:
事件推送
FromSubscribeEvent
FromUnsubscribeEvent
FromScanEvent
FromLocationEvent
FromClickEvent
FromViewEvent
FromTemplateSendJobFinishEvent
FromViewMiniprogramEvent
基础消息
FromTextMessage
FromImageMessage
FromVoiceMessage
FromVideoMessage
FromShortVideoMessage
FromLocationMessage
FromLinkMessage
被动消息回复
ToTextMessage
ToImageMessage
ToVoiceMessage
ToVideoMessage
ToMusicMessage
ToNewsMessage
ToNullMessage
在ASP.NET MVC,我们可以通过本SDK快速获得微信用户信息,参考代码如下所示:
//注意继承WxPublicAccountControllerBase
public class HomeController : WxPublicAccountControllerBase
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
//设置了WxPublicAccountOAuthFilter的Action在缓存过期的情况下,将自动跳转到微信网页授权页面进行授权
//OAuthLevel设置为OpenIdAndUserInfo允许获取粉丝信息
[WxPublicAccountOAuthFilter(OAuthLevel = OAuthLevels.OpenIdAndUserInfo)]
public async Task<IActionResult> IndexAsync()
{
//调用父级控制器的获取粉丝信息方法,该方法从ISnsApi中获取粉丝详细信息
var userResult = await GetWeChatUserInfoAsync();
var model = new UserInfo()
{
Headimgurl = userResult.Headimgurl,
NickName = userResult.NickName,
Sex = userResult.Sex
};
_logger.LogDebug($"NickName:{userResult.NickName}");
return View(model);
}
}
Magicodes.Wx.PublicAccount.Sdk默认提供了Abp VNext模块,相关步骤如下所示:
Install-Package Magicodes.Wx.PublicAccount.Sdk.Abp
[DependsOn(
typeof(WxPublicAccountSdkModule)
)]
如需处理服务器事件消息,还需注册IWxEventsHandler:
context.Services.AddSingleton<IWxEventsHandler, WxEventsHandler>();
关注“麦扣聊技术”订阅号可以获得最新文章、教程、文档,并且加入微信生态群:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。