コード例 #1
0
        /// <summary>
        /// 获取Agent的AccessToken.
        /// </summary>
        /// <returns>AccessToken</returns>
        public async Task <AccessToken> GetAccessToken()
        {
            var accessToken = await WeixinApi.GetAccessToken(Corporation.CorpId, Secret);

            accessToken.GeneratedTime = DateTime.Now;
            return(accessToken);
        }
コード例 #2
0
        /// <summary>
        /// 该接口主要应用于使用企业支付之后的结果查询。
        //开发者需要知道某个结果事件的openid对应企业微信内成员的信息时,可以通过调用该接口进行转换查询。
        /// </summary>
        /// <param name="openid">在使用企业支付之后,返回结果的openid</param>
        /// <returns>该openid在企业微信对应的成员userid</returns>
        public async Task <UserIdModel> ConvertToUserId(string openid)
        {
            var accessToken = await GetAccessToken();

            var userid = await WeixinApi.ConvertToUserId(accessToken.Value, new { openid = openid });

            return(userid);
        }
コード例 #3
0
        /// <summary>
        /// userid转openid
        /// </summary>
        /// <param name="userid">企业内的成员id</param>
        /// <returns>企业微信成员userid对应的openid</returns>
        /// <remarks>
        /// 该接口使用场景为企业支付,在使用企业红包和向员工付款时,需要自行将企业微信的userid转成openid。
        /// 注:需要成员使用微信登录企业微信或者关注微工作台(原企业号)才能转成openid;
        /// 如果是外部联系人,请使用外部联系人openid转换转换openid
        /// </remarks>
        public async Task <OpenIdModel> ConvertToOpenid(string userid)
        {
            var accessToken = await GetAccessToken();

            var openid = await WeixinApi.ConvertToOpenId(accessToken.Value, new { userid = userid });

            return(openid);
        }
コード例 #4
0
        /// <summary>
        /// 获取组织下的所有部门。
        /// </summary>
        /// <returns>组织下的部门清单。</returns>
        public async Task <DepartmentListModel> ListDepartments(int?departmentId = null)
        {
            var accessToken = await GetAccessToken();

            var departments = await WeixinApi.ListDepartment(accessToken.Value, departmentId);

            return(departments);
        }
コード例 #5
0
        /// <summary>
        /// 上传临时素材。
        /// 注意:上传媒体文件不和具体应用有关,任意agent都可以上传。
        /// </summary>
        /// <param name="type">媒体文件类型,分别有图片(image)、语音(voice)、视频(video),普通文件(file)</param>
        /// <param name="file">文件名。</param>
        /// <returns>上传结果。</returns>
        public async Task <UploadMediaResponseModel> UploadMedia(string type, string file)
        {
            var at = await GetAccessToken();

            using (var media = new MulitpartFile(file))
            {
                return(await WeixinApi.UploadMedia(at.Value, type, media));
            }
        }
コード例 #6
0
        /// <summary>
        /// 订阅(关注)事件
        /// </summary>
        /// <returns></returns>
        public override IResponseMessageBase OnEvent_SubscribeRequest(RequestMessageEvent_Subscribe requestMessage)
        {
            //var responseMessage = ResponseMessageBase.CreateFromRequestMessage<ResponseMessageText>(requestMessage);
            //responseMessage.Content = GetWelcomeInfo();
            //if (!string.IsNullOrEmpty(requestMessage.EventKey))
            //{
            //    responseMessage.Content += "\r\n============\r\n场景值:" + requestMessage.EventKey;
            //}

            var responseMessage = ResponseMessageBase.CreateFromRequestMessage <ResponseMessageNews>(requestMessage);

            WeixinUserInfoResult user = null;

            try
            {
                user = WeixinApi.GetUserInfo(AccessTokenHelper.GetTokenForSqlServer(ConfigurationManager.AppSettings["WeixinAppId"], ConfigurationManager.AppSettings["WeixinAppSecret"]), WeixinOpenId);

                responseMessage.Articles.Add(new Article()
                {
                    Title = user.nickname + ",您有一个0元设计未领", PicUrl = "http://material-ui.net/content/zixun.jpg", Url = "http://material-ui.net/booking.html", Description = user.nickname + ",您有一个0元设计未领。实力整装,省钱,省力,省心。"
                });
            }
            catch (Exception ex)
            {
                responseMessage.Articles.Add(new Article()
                {
                    Title = "您有一个0元设计未领", PicUrl = "http://material-ui.net/content/zixun.jpg", Url = "http://material-ui.net/booking.html", Description = "您有一个0元设计未领。实力整装,省钱,省力,省心。" + ex.Message
                });
            }


            //获取订阅用户昵称

            //responseMessage.Articles.Add(new Article() { Title = user.nickname+",您有一个0元设计未领", PicUrl = "http://material-ui.net/content/zixun.jpg", Url = "http://material-ui.net/booking.html", Description = user.nickname+",您有一个0元设计未领。实力整装,省钱,省力,省心。" });



            //推送消息
            //下载文档
            //if (requestMessage.EventKey.StartsWith("qrscene_"))
            //{
            //    var sceneId = long.Parse(requestMessage.EventKey.Replace("qrscene_", ""));
            //    //var configHelper = new ConfigHelper(new HttpContextWrapper(HttpContext.Current));
            //    var codeRecord =
            //        ConfigHelper.CodeCollection.Values.FirstOrDefault(z => z.QrCodeTicket != null && z.QrCodeId == sceneId);

            //    if (codeRecord != null)
            //    {
            //        //确认可以下载
            //        codeRecord.AllowDownload = true;
            //        AdvancedAPIs.CustomApi.SendText(null, WeixinOpenId, GetDownloadInfo(codeRecord));
            //    }
            //}


            return(responseMessage);
        }
コード例 #7
0
        /// <summary>
        /// 上传图片得到图片URL,该URL永久有效。
        /// 每个企业每天最多可上传100张图片。
        /// </summary>
        /// <param name="imageFile">图片文件名。</param>
        /// <returns>返回的图片URL,仅能用于图文消息正文中的图片展示,或者给客户发送欢迎语等;若用于非企业微信环境下的页面,图片将被屏蔽。</returns>
        public async Task <UploadImageResponseModel> UploadImage(string imageFile)
        {
            var at = await GetAccessToken();

            using (var image = new MulitpartFile(imageFile))
            {
                return(await WeixinApi.UploadImage(at.Value, image));
            }
        }
コード例 #8
0
        /// <summary>
        /// 更新标签名字。
        /// </summary>
        /// <param name="tagName">标签名</param>
        /// <param name="tagId">标签id。</param>
        /// <returns>响应模型。</returns>
        public async Task <ResponseModel> UpdateTag(string tagName, int tagId)
        {
            var accessToken = await GetAccessToken();

            var model = new TagModel()
            {
                TagName = tagName, TagId = tagId
            };

            return(await WeixinApi.UpdateTag(accessToken.Value, model));
        }
コード例 #9
0
        /// <summary>
        /// 批量覆盖所有部门。
        /// </summary>
        /// <param name="mediaId">临时媒体资源Id。</param>
        /// <returns>覆盖结果。</returns>
        public async Task <BatchResponseModel> BatchReplaceParty(string mediaId)
        {
            var accessToken = await GetAccessToken();

            BatchReplacePartyRequestModel model = new BatchReplacePartyRequestModel
            {
                MediaId = mediaId
            };

            return(await WeixinApi.BatchReplaceParty(accessToken.Value, model));
        }
コード例 #10
0
        /// <summary>
        /// 增量更新成员。
        /// </summary>
        /// <param name="mediaId">临时媒体资源Id。</param>
        /// <param name="toInvite">是否邀请新建的成员使用企业微信(将通过微信服务通知或短信或邮件下发邀请,每天自动下发一次,最多持续3个工作日),默认值为true。</param>
        /// <returns></returns>
        public async Task <BatchResponseModel> BatchSyncUser(string mediaId, bool toInvite = true)
        {
            var accessToken = await GetAccessToken();

            var model = new BatchSyncUserRequestModel
            {
                ToInvite = toInvite,
                MediaId  = mediaId
            };

            return(await WeixinApi.BatchSyncUser(accessToken.Value, model));
        }
コード例 #11
0
        /// <summary>
        /// 创建标签。
        /// </summary>
        /// <param name="tagName">标签名</param>
        /// <param name="tagId">标签id,如果是null则自动生成一个id。</param>
        /// <returns>创建结果响应模型。</returns>
        public async Task <TagCreateResponseModel> CreateTag(string tagName, int?tagId)
        {
            var accessToken = await GetAccessToken();

            var model = new TagModel()
            {
                TagName = tagName
            };

            if (tagId.HasValue)
            {
                model.TagId = tagId.Value;
            }
            return(await WeixinApi.CreateTag(accessToken.Value, model));
        }
コード例 #12
0
        /// <summary>
        /// 删除标签成员
        /// </summary>
        /// <param name="tagId">标签ID</param>
        /// <param name="userlist">企业成员ID列表,注意:userlist、partylist不能同时为空,单次请求个数不超过1000</param>
        /// <param name="partylist">企业部门ID列表,注意:userlist、partylist不能同时为空,单次请求个数不超过100</param>
        /// <returns>删除标签成员结果模型。</returns>
        public async Task <TagMemberManagementResponseModel> DeleteTagMember(int tagId, string[] userlist = null, int[] partylist = null)
        {
            if ((userlist == null || userlist.Length == 0) && (partylist == null || partylist.Length == 0))
            {
                throw new ArgumentException("userlist和partylist不能同时为空。");
            }

            var accessToken = await GetAccessToken();

            var model = new TagMemberManagementModel()
            {
                TagId     = tagId,
                PartyList = partylist,
                UserList  = userlist
            };

            return(await WeixinApi.DelTagMember(accessToken.Value, model));
        }
コード例 #13
0
        /// <summary>
        /// 删除成员。
        /// </summary>
        /// <param name="userId">成员UserID。对应管理端的帐号</param>
        /// <returns>响应模型。</returns>
        public async Task <ResponseModel> DeleteUser(string userId)
        {
            var accessToken = await GetAccessToken();

            return(await WeixinApi.DeleteUser(accessToken.Value, userId));
        }
コード例 #14
0
        /// <summary>
        /// 更新成员。
        /// </summary>
        /// <param name="updateModel">成员更新模型。</param>
        /// <returns>响应模型。</returns>
        public async Task <ResponseModel> UpdateUser(UserUpdateModel updateModel)
        {
            var accessToken = await GetAccessToken();

            return(await WeixinApi.UpdateUser(accessToken.Value, updateModel));
        }
コード例 #15
0
        /// <summary>
        /// 获取批量事务的执行进度。
        /// </summary>
        /// <param name="jobId">事务Id。</param>
        /// <returns>事务结果。</returns>
        public async Task <JobResultModel> GetBatchResult(string jobId)
        {
            var accessToken = await GetAccessToken();

            return(await WeixinApi.GetBatchResult(accessToken.Value, jobId));
        }
コード例 #16
0
        /// <summary>
        /// 获取成员信息。
        /// </summary>
        /// <param name="userId">成员Id。</param>
        /// <returns>响应模型。</returns>
        public async Task <UserDetailModel> GetUser(string userId)
        {
            var accessToken = await GetAccessToken();

            return(await WeixinApi.GetUser(accessToken.Value, userId));
        }
コード例 #17
0
        /// <summary>
        /// 获取所有标签。
        /// </summary>
        /// <returns>标签清单模型。</returns>
        public async Task <TagListModel> ListTags()
        {
            var accessToken = await GetAccessToken();

            return(await WeixinApi.ListTags(accessToken.Value));
        }
コード例 #18
0
        /// <summary>
        /// 获取标签成员。
        /// </summary>
        /// <param name="tagId">标签Id。</param>
        /// <returns>标签成员结果模型。</returns>
        public async Task <TagDetailModel> GetTagMembers(int tagId)
        {
            var accessToken = await GetAccessToken();

            return(await WeixinApi.GetTag(accessToken.Value, tagId));
        }
コード例 #19
0
        /// <summary>
        /// 创建部门。
        /// </summary>
        /// <param name="department">部门信息。</param>
        /// <returns>创建结果,包含部门Id。</returns>
        public async Task <ResponseModel> UpdateDepartment(DepartmentModel department)
        {
            var accessToken = await GetAccessToken();

            return(await WeixinApi.UpdateDepartment(accessToken.Value, department));
        }
コード例 #20
0
        /// <summary>
        /// 批量删除成员。
        /// </summary>
        /// <param name="useridlist"></param>
        /// <returns>响应模型。</returns>
        public async Task <ResponseModel> DeleteUsers(params string[] useridlist)
        {
            var accessToken = await GetAccessToken();

            return(await WeixinApi.BatchDeleteUsers(accessToken.Value, new { useridlist = useridlist }));
        }
コード例 #21
0
        /// <summary>
        /// 创建成员。
        /// </summary>
        /// <param name="createModel">成员创建模型。</param>
        /// <returns>响应模型。</returns>
        public async Task <ResponseModel> CreateUser(UserCreateModel createModel)
        {
            var accessToken = await GetAccessToken();

            return(await WeixinApi.CreateUser(accessToken.Value, createModel));
        }
コード例 #22
0
        /// <summary>
        /// 删除部门。
        /// </summary>
        /// <param name="departmentId">部门Id。</param>
        /// <returns>响应模型。</returns>
        public async Task <ResponseModel> DeleteDepartment(int departmentId)
        {
            var accessToken = await GetAccessToken();

            return(await WeixinApi.DeleteDepartment(accessToken.Value, departmentId));
        }
コード例 #23
0
        /// <summary>
        /// 获取部门成员详情。
        /// </summary>
        /// <param name="departmentId">获取的部门id</param>
        /// <param name="fetchChild">是否递归获取子部门下面的成员:1-递归获取,0-只获取本部门</param>
        /// <returns>部门成员清单。</returns>
        public async Task <DepartmentMemberDetailListModel> ListDepartmentMembersDetail(int departmentId, int fetchChild = 1)
        {
            var accessToken = await GetAccessToken();

            return(await WeixinApi.ListUser(accessToken.Value, departmentId, fetchChild));
        }
コード例 #24
0
        /// <summary>
        /// 删除标签。
        /// </summary>
        /// <param name="tagId">标签id。</param>
        /// <returns>响应模型。</returns>
        public async Task <ResponseModel> DeleteTag(int tagId)
        {
            var accessToken = await GetAccessToken();

            return(await WeixinApi.DeleteTag(accessToken.Value, tagId));
        }