/// <summary> /// 根据标签 ID,更新指定的标签名称。 /// </summary> /// <param name="tagId">标签的唯一 ID。</param> /// <param name="name">新的标签名称。</param> public Task <OfficialCommonResponse> UpdateAsync(long tagId, string name) { return(WeChatOfficialApiRequester.RequestAsync <OfficialCommonResponse>(UpdateApiUrl, HttpMethod.Post, new UpdateUserTagRequest(tagId, name) )); }
/// <summary> /// 获取标签下粉丝列表。 /// </summary> /// <param name="tagId">标签的唯一 ID。</param> /// <param name="firstOpenId">起始粉丝的 OPENID,将会从指定的 OPENID 往后拉取粉丝数据。</param> public Task <GetUsersByTagResponse> GetUsersByTagAsync(long tagId, string firstOpenId = null) { return(WeChatOfficialApiRequester.RequestAsync <GetUsersByTagResponse>(GetUsersByTagApiUrl, HttpMethod.Post, new GetUsersByTagRequest(tagId, firstOpenId) )); }
/// <summary> /// 创建新的用户标签。 /// </summary> /// <param name="name">标签名称。</param> public Task <CreateUserTagResponse> CreateAsync(string name) { return(WeChatOfficialApiRequester.RequestAsync <CreateUserTagResponse>(CreateApiUrl, HttpMethod.Post, new CreateUserTagRequest(name) )); }
/// <summary> /// 批量为用户取消标签。 /// </summary> /// <param name="tagId">需要取消的标签 ID。</param> /// <param name="openIds">需要取消标签的用户 OPEN ID 集合。</param> public Task <OfficialCommonResponse> BatchUnTaggingAsync(long tagId, List <string> openIds) { return(WeChatOfficialApiRequester.RequestAsync <OfficialCommonResponse>(BatchUnTaggingApiUrl, HttpMethod.Post, new BatchTagOperationRequest(tagId, openIds) )); }
/// <summary> /// 获取用户身上的标签列表。 /// </summary> /// <param name="openId">需要查询用户的 OPENID。</param> public Task <GetTagsByUserResponse> GetTagsByUserAsync(string openId) { return(WeChatOfficialApiRequester.RequestAsync <GetTagsByUserResponse>(GetTagsByUserApiUrl, HttpMethod.Post, new GetTagsByUserRequest(openId) )); }
/// <summary> /// 根据标签 ID,删除指定的标签。 /// </summary> /// <param name="tagId">标签的唯一 ID。</param> public Task <OfficialCommonResponse> DeleteAsync(long tagId) { return(WeChatOfficialApiRequester.RequestAsync <OfficialCommonResponse>(DeleteApiUrl, HttpMethod.Post, new DeleteUserTagRequest(tagId) )); }
/// <summary> /// 根据指定的参数创建自定义菜单,本方法相当于全量覆盖,执行之后微信公众号的原有菜单信息将会被覆盖。 /// </summary> /// <param name="customButtons">最新的自定义菜单集合。</param> public Task <OfficialCommonResponse> CreateCustomMenuAsync(List <CustomButton> customButtons) { return(WeChatOfficialApiRequester.RequestAsync <OfficialCommonResponse>(CreateApiUrl, HttpMethod.Post, new CreateCustomMenuRequest { Buttons = customButtons })); }
/// <summary> /// 登录凭证校验。通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程。 /// </summary> /// <param name="appId">公众号 appId</param> /// <param name="appSecret">公众号 appSecret</param> /// <param name="code">登录时获取的 code</param> /// <param name="grantType">授权类型,此处只需填写 authorization_code</param> public Task <Code2AccessTokenResponse> Code2SessionAsync(string appId, string appSecret, string code, string grantType = "authorization_code") { const string targetUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?"; var request = new Code2AccessTokenRequest(appId, appSecret, code, grantType); return(WeChatOfficialApiRequester.RequestAsync <Code2AccessTokenResponse>(targetUrl, HttpMethod.Get, request, false)); }
/// <summary> /// 公众号可以使用本接口获取临时素材(即下载临时的多媒体文件)。 /// </summary> /// <param name="mediaId"></param> /// <returns></returns> public Task <GetMediaResponse> GetMedia(string mediaId) { return(WeChatOfficialApiRequester.RequestAsync <GetMediaResponse>(UploadMediaUrl, HttpMethod.Get, new GetMediaRequest() { MediaId = mediaId })); }
/// <summary> /// 上传图文消息内的图片获取URL /// </summary> /// <param name="bytes"></param> /// <param name="contentName"></param> /// <param name="fileName"></param> /// <returns></returns> public Task <UploadImageResponse> UploadImageAsync(byte[] bytes, string contentName, string fileName) { var content = new MultipartFormDataContent(); content.Add(new ByteArrayContent(bytes), contentName, fileName); return(WeChatOfficialApiRequester.RequestAsync <UploadImageResponse>(UploadImgUrl, HttpMethod.Post, null, true, content)); }
/// <summary> /// 上传并新增临时素材。<br/> /// 注意:<br/> /// 1. 临时素材 media_id 是可复用的。<br/> /// 2. 媒体文件在微信后台保存时间为 3 天,即 3 天后 media_id 失效。<br/> /// 3. 上传临时素材的格式、大小限制与公众平台官网一致。 /// </summary> /// <param name="fileData">需要上传的素材数据。</param> /// <param name="type">素材的类型,参考 <see cref="MediaType"/> 的定义。</param> /// <param name="fileName">素材的文件名。</param> public Task <UploadedTempMediaResponse> UploadTempMediaAsync(Stream fileData, string type, string fileName) { var postContent = new MultipartFormDataContent(); postContent.AddV2(new StreamContent(fileData), fileName, fileName); return(WeChatOfficialApiRequester.RequestFromDataAsync <UploadedTempMediaResponse>(UploadTempMediaUrl, postContent, new UploadTempMediaRequest(type))); }
/// <summary> /// 请求微信公众号的 API 发送指定的模板消息。 /// </summary> /// <param name="openId">目标微信用户的 OpenId。</param> /// <param name="templateId">需要发送的模板消息 Id。</param> /// <param name="targetUrl">微信用户收到模板消息时,点击之后需要跳转的 Url。</param> /// <param name="templateMessage">需要发送的模板消息内容。</param> /// <param name="miniProgramRequest">模板关联的小程序参数,如果没有的话可以不用传递。</param> public Task <SendMessageResponse> SendMessageAsync(string openId, string templateId, string targetUrl, TemplateMessage templateMessage, MiniProgramRequest miniProgramRequest = null) { var request = new SendMessageRequest(openId, templateId, targetUrl, templateMessage, miniProgramRequest); return(WeChatOfficialApiRequester.RequestAsync <SendMessageResponse>(TargetUrl, HttpMethod.Post, request)); }
/// <summary> /// 设置指定用户的备注名,本接口仅开放给微信认证的服务号。 /// </summary> /// <param name="openId">微信公众号的用户唯一标识。</param> /// <param name="remark">新的备注名,长度必须小于 30 字符。</param> public Task <OfficialCommonResponse> UpdateUserRemarkAsync(string openId, string remark) { return(WeChatOfficialApiRequester.RequestAsync <OfficialCommonResponse>(UpdateUserRemarkUrl, HttpMethod.Post, new UpdateUserRemarkRequest(openId, remark))); }
/// <summary> /// 获取用户列表,公众号可通过本接口来获取帐号的关注者列表。<br/> /// 一次拉取调用最多拉取 10000 个关注者的 OpenID,可以通过多次拉取的方式来满足需求。 /// </summary> /// <param name="firstOpenId">第一个拉取的OPENID,不填默认从头开始拉取。</param> public Task <OfficialUserListResponse> GetOfficialUserListAsync(string firstOpenId = null) { return(WeChatOfficialApiRequester.RequestAsync <OfficialUserListResponse>(GetOfficialUserListUrl, HttpMethod.Get, new GetOfficialUserListRequest(firstOpenId))); }
/// <summary> /// 删除当前公众号所有自定义菜单。另请注意,在个性化菜单时,调用此接口会删除默认菜单及全部个性化菜单。 /// </summary> /// <returns></returns> public Task <OfficialCommonResponse> DeleteCustomMenuAsync() { return(WeChatOfficialApiRequester.RequestAsync <OfficialCommonResponse>(DeleteApiUrl, HttpMethod.Get)); }
public Task <BatchGetMaterialResponse> BatchGetMaterialAsync(BatchgetMaterialRequest request) { return(WeChatOfficialApiRequester.RequestAsync <BatchGetMaterialResponse>(BatchGetMaterialUrl, HttpMethod.Post, request)); }
/// <summary> /// 根据短模版 Id 创建模版。 /// </summary> /// <param name="templateShortId">模板库中模板的编号,有 "TM**" 和 "OPENTMTM**" 等形式。</param> public Task <CreateTemplateResponse> CreateTemplateAsync(string templateShortId) { return(WeChatOfficialApiRequester.RequestAsync <CreateTemplateResponse>(GetTemplateIdUrl, HttpMethod.Post, new CreateTemplateRequest(templateShortId))); }
/// <summary> /// 获取设置的模版消息行业信息。 /// </summary> /// <remarks> /// 获取帐号设置的行业信息。可登录微信公众平台,在公众号后台中查看行业信息。 /// </remarks> public Task <GetIndustryResponse> GetIndustryAsync() { return(WeChatOfficialApiRequester.RequestAsync <GetIndustryResponse>(GetIndustryUrl, HttpMethod.Get)); }
/// <summary> /// 设置模版消息的所属行业。<br/> /// 具体的行业代码可以参考 https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html#0。 /// </summary> /// <remarks> /// 设置行业可在微信公众平台后台完成,每月可修改行业 1 次。<br/> /// 帐号仅可使用所属行业中相关的模板。 /// </remarks> /// <param name="primaryIndustry">公众号模板消息所属行业编号。</param> /// <param name="secondaryIndustry">公众号模板消息所属行业编号。</param> public Task <OfficialCommonResponse> SetIndustryAsync(string primaryIndustry, string secondaryIndustry) { return(WeChatOfficialApiRequester.RequestAsync <OfficialCommonResponse>(SetIndustryUrl, HttpMethod.Post, new SetIndustryRequest(primaryIndustry, secondaryIndustry))); }
/// <summary> /// 根据模版 Id 删除指定的模版。 /// </summary> /// <param name="templateId">公众帐号下模板消息 ID。</param> public Task <OfficialCommonResponse> DeleteTemplateAsync(string templateId) { return(WeChatOfficialApiRequester.RequestAsync <OfficialCommonResponse>(DeletePrivateTemplateUrl, HttpMethod.Post, new DeleteTemplateRequest(templateId))); }
/// <summary> /// 获取已添加至账号下所有模版列表。 /// </summary> public Task <GetAllPrivateTemplateResponse> GetAllPrivateTemplateAsync() { return(WeChatOfficialApiRequester.RequestAsync <GetAllPrivateTemplateResponse>(GetAllPrivateTemplateUrl, HttpMethod.Get)); }
public Task <GetAllCustomMenuResponse> GetAllCustomMenuAsync() { return(WeChatOfficialApiRequester.RequestAsync <GetAllCustomMenuResponse>(GetDetailApiUrl, HttpMethod.Get)); }
public Task <GetMaterialCountResponse> GetMaterialCountAsync() { return(WeChatOfficialApiRequester.RequestAsync <GetMaterialCountResponse>(GetMaterialCountUrl, HttpMethod.Post )); }
/// <summary> /// 获取用户基本信息,公众号可通过本接口来获取帐号的关注者基本信息。 /// </summary> /// <param name="openId">普通用户的标识,对当前公众号唯一。</param> /// <param name="language">返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语。</param> public Task <UnionUserInfoResponse> GetUserUnionInfoAsync(string openId, string language = null) { return(WeChatOfficialApiRequester.RequestAsync <UnionUserInfoResponse>(GetUserUnionInfoUrl, HttpMethod.Get, new GetUserUnionInfoRequest(openId, language))); }
/// <summary> /// 新增永久图文素材 /// </summary> /// <param name="request"></param> /// <returns></returns> public Task <AddNewsResponse> AddNews(AddNewsRequest request) { return(WeChatOfficialApiRequester.RequestAsync <AddNewsResponse>(UploadMediaUrl, HttpMethod.Post, request)); }
/// <summary> /// 获取当前公众号的所有用户标签列表。 /// </summary> public Task <GetAllUserTagListResponse> GetCreatedTagsAsync() { return(WeChatOfficialApiRequester.RequestAsync <GetAllUserTagListResponse>(GetCreatedTagsApiUrl, HttpMethod.Get )); }
/// <summary> /// 批量获取用户基本信息,公众号可通过本接口来批量获取用户基本信息。 /// </summary> /// <param name="userIds">需要查询的用户 OPENID 列表,最多支持 100 个。</param> public Task <BatchUnionUserInfoResponse> BatchGetUserUnionInfoAsync(List <GetUserUnionInfoRequest> userIds) { return(WeChatOfficialApiRequester.RequestAsync <BatchUnionUserInfoResponse>(BatchGetUserUnionInfoUrl, HttpMethod.Post, new BatchGetUserUnionInfoRequest(userIds))); }
/// <summary> /// 获取公众号的黑名单列表,接口每次最多拉取 10000 个黑名单用户。<br/> /// 当列表数量较多的时候,可以采用分批拉取的方式。 /// </summary> /// <param name="beginOpenId">起始 OPENID,如果传递则从该 OPENID 往后拉取。默认则从头开始拉取。</param> public Task <OfficialUserListResponse> GetBlackListAsync(string beginOpenId = null) { return(WeChatOfficialApiRequester.RequestAsync <OfficialUserListResponse>(GetBlackListUrl, HttpMethod.Post, new GetBlackListRequest(beginOpenId))); }
/// <summary> /// 取消拉黑指定用户,每次最多取消拉黑 20 个用户。 /// </summary> /// <param name="openIds">需要取消拉黑的用户 OPENID。</param> public Task <OfficialCommonResponse> BatchUnBlackListAsync(List <string> openIds) { return(WeChatOfficialApiRequester.RequestAsync <OfficialCommonResponse>(BatchUnBlackListUrl, HttpMethod.Post, new BatchUnBlackListRequest(openIds))); }
public Task <DelMediaResponse> UpdateNewsAsync(UpdateNewsRequest request) { return(WeChatOfficialApiRequester.RequestAsync <DelMediaResponse>(UpdateNewsUrl, HttpMethod.Post, request)); }