public static RequestApiResult <WeixinAddMaterialResult> AddNormalMaterial(DomainContext domainContext, string file, MaterialType type) { string accessToken = domainContext.AccessToken; RequestApiResult <WeixinAddMaterialResult> result = MaterialApi.AddNormalMaterial(accessToken, file, type); if (result.Success == false) { if (result.Retry) { if (result.ApiError.ErrorCode == 40001) { accessToken = AccessTokenGetter.Refresh(domainContext.AppId, accessToken); } result = MaterialApi.AddNormalMaterial(accessToken, file, type); if (result.Success == false) { _log.Write("MaterialApi.AddNormalMaterial 失败", result.GetDetail(), TraceEventType.Warning); } } else { _log.Write("MaterialApi.AddNormalMaterial 失败", result.GetDetail(), TraceEventType.Warning); } } return(result); }
public static RequestApiResult <WeixinArticleMaterialListItemContent> GetArticleMaterial(DomainContext domainContext, string mediaId) { string accessToken = domainContext.AccessToken; RequestApiResult <WeixinArticleMaterialListItemContent> result = MaterialApi.GetArticleMaterial(accessToken, mediaId); if (result.Success == false) { if (result.Retry) { if (result.ApiError.ErrorCode == 40001) { accessToken = AccessTokenGetter.Refresh(domainContext.AppId, accessToken); } result = MaterialApi.GetArticleMaterial(accessToken, mediaId); if (result.Success == false) { _log.Write("MaterialApi.GetArticleMaterial 失败", result.GetDetail(), TraceEventType.Warning); } } else { _log.Write("MaterialApi.GetArticleMaterial 失败", result.GetDetail(), TraceEventType.Warning); } } return(result); }
public static RequestApiResult Send(DomainContext domainContext, KFMessageBase message) { string accessToken = domainContext.AccessToken; RequestApiResult result = KFApi.Send(accessToken, message); if (result.Success == false) { if (result.Retry) { if (result.ApiError.ErrorCode == 40001) { accessToken = AccessTokenGetter.Refresh(domainContext.AppId, accessToken); } result = KFApi.Send(accessToken, message); if (result.Success == false) { _log.Write("KFApi.Send 失败", result.GetDetail(), TraceEventType.Warning); } } else { _log.Write("KFApi.Send 失败", result.GetDetail(), TraceEventType.Warning); } } return(result); }
public static RequestApiResult <WeixinCreateShortUrlResult> GetShortUrl(DomainContext domainContext, string longUrl) { string accessToken = domainContext.AccessToken; RequestApiResult <WeixinCreateShortUrlResult> result = ShortUrlApi.GetShortUrl(accessToken, longUrl); if (result.Success == false) { if (result.Retry) { if (result.ApiError.ErrorCode == 40001) { accessToken = AccessTokenGetter.Refresh(domainContext.AppId, accessToken); } result = ShortUrlApi.GetShortUrl(accessToken, longUrl); if (result.Success == false) { _log.Write("ShortUrlApi.GetShortUrl 失败", result.GetDetail(), TraceEventType.Warning); } } else { _log.Write("ShortUrlApi.GetShortUrl 失败", result.GetDetail(), TraceEventType.Warning); } } return(result); }
/// <summary> /// 刷新指定域下面分组信息,将调用微信API获取最新分组信息 /// </summary> /// <param name="domainContext"></param> public void SyncGroupList(DomainContext domainContext) { RequestApiResult <WeixinGetGroupListResult> result = GroupApiWrapper.GetGroupList(domainContext); if (result.Success) { List <CommandParameter> parameterList = new List <CommandParameter>(); parameterList.Add(new CommandParameter("@domain", domainContext.Domain.Id)); parameterList.Add(new CommandParameter("@appId", domainContext.AppId)); _dataBase.ExecuteNonQuery("DELETE FROM [MemberGroup] WHERE [Domain] = @domain AND [AppId] = @appId", parameterList); foreach (WeixinGetGroupListResult_Group item in result.ApiResult.GroupList) { MemberGroupEntity group = new MemberGroupEntity(); group.GroupId = item.Id; group.Name = item.Name; group.Domain = domainContext.Domain.Id; group.AppId = domainContext.AppId; _dataBase.Insert(group); } //过滤用户,将已不存在的分组置为0 } else { _log.Write("RefreshGroupList 失败", result.Message, TraceEventType.Warning); } }
/// <summary> /// 获取授权方的账户信息 /// </summary> /// <param name="accessToken"></param> /// <param name="args"></param> /// <returns></returns> public static RequestApiResult <WeixinThirdPartyGetAuthorizerAccountInfoResult> GetAuthorizerAccountInfo( string accessToken, WeixinThirdPartyGetAuthorizerAccountInfoArgs args) { /* * 注意,这个接口官方页面给出的返回JSON有错误 * qrcode_url 是 authorizer_info 的属性,而不是根级别的属性 */ RequestApiResult <WeixinThirdPartyGetAuthorizerAccountInfoResult> result = new RequestApiResult <WeixinThirdPartyGetAuthorizerAccountInfoResult>(); HttpRequestArgs requestArgs = new HttpRequestArgs(); requestArgs.Method = "POST"; requestArgs.Url = String.Format( "https://api.weixin.qq.com/cgi-bin/component/api_get_authorizer_info?component_access_token={0}", accessToken); requestArgs.Content = JsonConvert.SerializeObject(args); result.HttpRequestArgs = requestArgs; result.HttpRequestResult = _httpService.Request(requestArgs); if (result.HttpRequestResult.Success) { result.ApiResult = WeixinApiHelper.Parse <WeixinThirdPartyGetAuthorizerAccountInfoResult>( result.HttpRequestResult.Content, ref result.ApiError); } return(result); }
public string MoveMemberListToGroup(DomainContext domainContext, MoveMemberListToGroupArgs args) { WeixinSetUserListGroupArgs weixinArgs = new WeixinSetUserListGroupArgs(); weixinArgs.OpenIdList = args.OpenIdList; weixinArgs.GroupId = args.GroupId; //先往微信后台更新,成功后写数据库 RequestApiResult removeResult = GroupApiWrapper.SetUserListGroup(domainContext, weixinArgs); if (removeResult.Success == false) { return(removeResult.Message); } List <SqlExpression> _sqlList = new List <SqlExpression>(); //将此分组下的用户分到默认分组下面 foreach (var openId in args.OpenIdList) { SqlStructureBuild sqlBuild = new SqlStructureBuild(); sqlBuild.Type = SqlExpressionType.Update; sqlBuild.Table = "Member"; sqlBuild.AddParameter("Domain", domainContext.Domain.Id, true); sqlBuild.AddParameter("AppId", domainContext.AppId, true); sqlBuild.AddParameter("OpenId", openId, true); sqlBuild.AddParameter("GroupId", args.GroupId); _sqlList.Add(sqlBuild.GetSqlExpression()); } _dataBase.ExcuteSqlExpression(_sqlList); return(null); }
public static RequestApiResult <WeixinGetNormalMaterialListResult> GetNormalMaterialList(DomainContext domainContext, WeixinGetMaterialListArgs args) { string accessToken = domainContext.AccessToken; RequestApiResult <WeixinGetNormalMaterialListResult> result = MaterialApi.GetNormalMaterialList(accessToken, args); if (result.Success == false) { if (result.Retry) { if (result.ApiError.ErrorCode == 40001) { accessToken = AccessTokenGetter.Refresh(domainContext.AppId, accessToken); } result = MaterialApi.GetNormalMaterialList(accessToken, args); if (result.Success == false) { _log.Write("MaterialApi.GetNormalMaterialList 失败", result.GetDetail(), TraceEventType.Warning); } } else { _log.Write("MaterialApi.GetNormalMaterialList 失败", result.GetDetail(), TraceEventType.Warning); } } return(result); }
public NormalResult UpdateMemberTag(DomainContext domainContext, MemberTagEntity tag) { NormalResult result = new NormalResult(false); if (tag == null) { result.Message = "参数错误。"; return(result); } //先往微信后台更新,成功后写数据库 WeixinTag apiArgs = new WeixinTag(); apiArgs.Tag.Id = tag.TagId; apiArgs.Tag.Name = tag.Name; RequestApiResult updateResult = TagsApiWrapper.Update(domainContext, apiArgs); if (updateResult.Success == false) { result.Message = updateResult.Message; return(result); } _dataBase.Update(tag); result.Success = true; return(result); }
private AuthorizerAccessTokenWrapper CreateWrapper(string appId) { string refreshToken = _thirdPartyManager.GetAuthorizerRefreshToken(appId); if (String.IsNullOrEmpty(refreshToken)) { _log.Write(appId + " 的 RefreshToken 不存在", TraceEventType.Warning); return(null); } RequestApiResult <WeixinThirdPartyGetAuthorizerAccessTokenResult> result = ThirdPartyApiWrapper.GetAuthorizerAccessToken(appId, refreshToken); if (result.Success) { AuthorizerAccessTokenWrapper wrapper = new AuthorizerAccessTokenWrapper(); wrapper.AppId = appId; wrapper.RefreshToken = result.ApiResult.RefreshToken; wrapper.AccessToken = result.ApiResult.AccessToken; wrapper.AccessTokenExpiryTime = DateTime.Now.AddSeconds(result.ApiResult.ExpiresIn); return(wrapper); } return(null); }
/// <summary> /// 刷新指定域下面分组信息,将调用微信API获取最新分组信息 /// </summary> /// <param name="domainContext"></param> public void SyncTagList(DomainContext domainContext) { RequestApiResult <WeixinGetTagListResult> result = TagsApiWrapper.GetTagList(domainContext); if (result.Success) { List <CommandParameter> parameterList = new List <CommandParameter>(); parameterList.Add(new CommandParameter("@domain", domainContext.Domain.Id)); parameterList.Add(new CommandParameter("@appId", domainContext.AppId)); _dataBase.ExecuteNonQuery("DELETE FROM [MemberTag] WHERE [Domain] = @domain AND [AppId] = @appId", parameterList); foreach (WeixinGetTagListResult_Tag item in result.ApiResult.TagList) { MemberTagEntity tag = new MemberTagEntity(); tag.TagId = item.Id; tag.Name = item.Name; tag.Domain = domainContext.Domain.Id; tag.AppId = domainContext.AppId; _dataBase.Insert(tag); } //过滤用户,将已不存在的分组置为0 } else { _log.Write("RefreshTagList 失败", result.Message, TraceEventType.Warning); } }
public static RequestApiResult Remove(DomainContext domainContext, int groupId) { string accessToken = domainContext.AccessToken; RequestApiResult result = GroupApi.Remove(accessToken, groupId); if (result.Success == false) { if (result.Retry) { if (result.ApiError.ErrorCode == 40001) { accessToken = AccessTokenGetter.Refresh(domainContext.AppId, accessToken); } result = GroupApi.Remove(accessToken, groupId); if (result.Success == false) { _log.Write("GroupApi.Remove 失败", result.GetDetail(), TraceEventType.Warning); } } else { _log.Write("GroupApi.Remove 失败", result.GetDetail(), TraceEventType.Warning); } } return(result); }
public static RequestApiResult <WeixinGroupMessagePreviewResult> Preview(DomainContext domainContext, WeixinGroupMessagePreviewArgs args) { string accessToken = domainContext.AccessToken; RequestApiResult <WeixinGroupMessagePreviewResult> result = GroupMessageApi.Preview(accessToken, args); if (result.Success == false) { if (result.Retry) { if (result.ApiError.ErrorCode == 40001) { accessToken = AccessTokenGetter.Refresh(domainContext.AppId, accessToken); } result = GroupMessageApi.Preview(accessToken, args); if (result.Success == false) { _log.Write("GroupMessageApi.Preview 失败", result.GetDetail(), TraceEventType.Warning); } } else { _log.Write("GroupMessageApi.Preview 失败", result.GetDetail(), TraceEventType.Warning); } } return(result); }
public static RequestApiResult <WeixinGetUserTagListResult> GetUserTagList(DomainContext domainContext, string openId) { string accessToken = domainContext.AccessToken; RequestApiResult <WeixinGetUserTagListResult> result = TagsApi.GetUserTagList(accessToken, openId); if (result.Success == false) { if (result.Retry) { if (result.ApiError.ErrorCode == 40001) { accessToken = AccessTokenGetter.Refresh(domainContext.AppId, accessToken); } result = TagsApi.GetUserTagList(accessToken, openId); if (result.Success == false) { _log.Write("TagsApi.GetUserTagList 失败", result.GetDetail(), TraceEventType.Warning); } } else { _log.Write("TagsApi.GetUserTagList 失败", result.GetDetail(), TraceEventType.Warning); } } return(result); }
public static RequestApiResult SetUserListGroup(DomainContext domainContext, WeixinSetUserListGroupArgs args) { string accessToken = domainContext.AccessToken; RequestApiResult result = GroupApi.SetUserListGroup(accessToken, args); if (result.Success == false) { if (result.Retry) { if (result.ApiError.ErrorCode == 40001) { accessToken = AccessTokenGetter.Refresh(domainContext.AppId, accessToken); } result = GroupApi.SetUserListGroup(accessToken, args); if (result.Success == false) { _log.Write("GroupApi.SetUserListGroup 失败", result.GetDetail(), TraceEventType.Warning); } } else { _log.Write("GroupApi.SetUserListGroup 失败", result.GetDetail(), TraceEventType.Warning); } } return(result); }
public static RequestApiResult Update(DomainContext domainContext, WeixinTag args) { string accessToken = domainContext.AccessToken; RequestApiResult result = TagsApi.Update(accessToken, args); if (result.Success == false) { if (result.Retry) { if (result.ApiError.ErrorCode == 40001) { accessToken = AccessTokenGetter.Refresh(domainContext.AppId, accessToken); } result = TagsApi.Update(accessToken, args); if (result.Success == false) { _log.Write("TagsApi.Update 失败", result.GetDetail(), TraceEventType.Warning); } } else { _log.Write("TagsApi.Update 失败", result.GetDetail(), TraceEventType.Warning); } } return(result); }
/// <summary> /// 使用授权码换取公众号的授权信息 /// </summary> public static RequestApiResult <WeixinThirdPartyGetAuthorizationInfoResult> GetAuthorizationInfo( string accessToken, WeixinThirdPartyGetAuthorizationInfoArgs args) { RequestApiResult <WeixinThirdPartyGetAuthorizationInfoResult> result = new RequestApiResult <WeixinThirdPartyGetAuthorizationInfoResult>(); HttpRequestArgs requestArgs = new HttpRequestArgs(); requestArgs.Method = "POST"; requestArgs.Url = String.Format( "https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token={0}", accessToken); requestArgs.Content = JsonConvert.SerializeObject(args); result.HttpRequestArgs = requestArgs; result.HttpRequestResult = _httpService.Request(requestArgs); if (result.HttpRequestResult.Success) { result.ApiResult = WeixinApiHelper.Parse <WeixinThirdPartyGetAuthorizationInfoResult>( result.HttpRequestResult.Content, ref result.ApiError); } return(result); }
/// <summary> /// 获取预授权码 /// </summary> /// <param name="accessToken"></param> /// <param name="appid"></param> /// <returns></returns> public static RequestApiResult <WeixinThirdPartyGetPreAuthCodeResult> GetPreAuthCode( string accessToken, string appid) { RequestApiResult <WeixinThirdPartyGetPreAuthCodeResult> result = new RequestApiResult <WeixinThirdPartyGetPreAuthCodeResult>(); HttpRequestArgs requestArgs = new HttpRequestArgs(); requestArgs.Method = "POST"; requestArgs.Url = String.Format( "https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token={0}", accessToken); requestArgs.Content = JsonConvert.SerializeObject(new { component_appid = appid }); result.HttpRequestArgs = requestArgs; result.HttpRequestResult = _httpService.Request(requestArgs); if (result.HttpRequestResult.Success) { result.ApiResult = WeixinApiHelper.Parse <WeixinThirdPartyGetPreAuthCodeResult>( result.HttpRequestResult.Content, ref result.ApiError); } return(result); }
public NormalResult CreateMemberTag(DomainContext domainContext, MemberTagEntity tag) { NormalResult result = new NormalResult(false); if (tag == null) { result.Message = "参数错误。"; return(result); } //先往微信后台添加,成功后写数据库 WeixinCreateTagArgs apiArgs = new WeixinCreateTagArgs(); apiArgs.Tag.Name = tag.Name; RequestApiResult <WeixinTag> createResult = TagsApiWrapper.Create(domainContext, apiArgs); if (createResult.Success == false) { result.Message = createResult.Message; return(result); } tag.Domain = domainContext.Domain.Id; tag.TagId = createResult.ApiResult.Tag.Id; _dataBase.Insert(tag); result.Success = true; return(result); }
public string RemoveMemberGroup(DomainContext domainContext, Guid id) { MemberGroupEntity memberGroup = GetMemberGroup(id); if (memberGroup == null) { return("分组不存在。"); } //先往微信后台更新,成功后写数据库 RequestApiResult removeResult = GroupApiWrapper.Remove(domainContext, memberGroup.GroupId); if (removeResult.Success == false) { return(removeResult.Message); } //将此分组下的用户分到默认分组下面 List <CommandParameter> parameterList = new List <CommandParameter>(); parameterList.Add(new CommandParameter("@domain", domainContext.Domain.Id)); parameterList.Add(new CommandParameter("@appId", domainContext.AppId)); parameterList.Add(new CommandParameter("@groupId", memberGroup.GroupId)); _dataBase.ExecuteNonQuery( "UPDATE [Member] SET [GroupId] = 0 WHERE [Domain] = @domain AND [AppId] = @appId AND [GroupId] = @groupId", parameterList); _dataBase.Remove(memberGroup); return(null); }
public static string Handle(string message) { XElement xml = XElement.Parse(message); string messageType = xml.XPathSelectElement("MsgType").Value; if (String.IsNullOrEmpty(messageType)) { return(String.Empty); } _fromUserName = xml.XPathSelectElement("FromUserName").Value; //事件消息 if (messageType == "event") { string eventType = xml.XPathSelectElement("Event").Value; if (String.IsNullOrEmpty(eventType)) { return(String.Empty); } ResponsiveXMLMessage_TextMessage textMessage = new ResponsiveXMLMessage_TextMessage(); textMessage.Content = eventType + "from_callback"; textMessage.ToUserName = _fromUserName; textMessage.FromUserName = UserName; textMessage.CreateTime = WeixinApiHelper.ConvertDateTimeToInt(DateTime.Now); return(XMLMessageHelper.XmlSerialize(textMessage)); } //普通消息 else { string content = xml.XPathSelectElement("Content").Value; if (content == "TESTCOMPONENT_MSG_TYPE_TEXT") { ResponsiveXMLMessage_TextMessage textMessage = new ResponsiveXMLMessage_TextMessage(); textMessage.Content = "TESTCOMPONENT_MSG_TYPE_TEXT_callback"; textMessage.ToUserName = _fromUserName; textMessage.FromUserName = UserName; textMessage.CreateTime = WeixinApiHelper.ConvertDateTimeToInt(DateTime.Now); return(XMLMessageHelper.XmlSerialize(textMessage)); } else { _query_auth_code = content.Remove(0, "QUERY_AUTH_CODE:".Length); RequestApiResult <WeixinThirdPartyGetAuthorizationInfoResult> getAuthorizationInfo = ThirdPartyApiWrapper.GetAuthorizationInfo(_query_auth_code); _accessToken = getAuthorizationInfo.ApiResult.AuthorizationInfo.AccessToken; _timer = new System.Threading.Timer(SendKFMessage, null, 2 * 1000, 1 * 60 * 1000); return(null); } } }
public NormalResult UpdateAuthorizerAccountInfo(Guid domainId, string appId) { //获取公众号帐户信息 RequestApiResult <WeixinThirdPartyGetAuthorizerAccountInfoResult> accountInfoResult = ThirdPartyApiWrapper.GetAuthorizerAccountInfo(appId); if (accountInfoResult.Success) { WeixinThirdPartyAuthorizerAccountInfo account = accountInfoResult.ApiResult.AccountInfo; //微信返回的二维码图片不允许外部引用,此处必须把图片下载到本地 FileDownloadAgentArgs downloadAgentArgs = new FileDownloadAgentArgs(); downloadAgentArgs.Domain = domainId; downloadAgentArgs.Url = account.QRCodeUrl; FileDownloadAgentResult result = _fileService.DownloadAgent(downloadAgentArgs); string qrCodeUrl; if (result.Success) { _log.Write("下载二维码返回", JsonConvert.SerializeObject(result), TraceEventType.Verbose); qrCodeUrl = _fileService.FileServiceUri + result.OutputFile; } else { qrCodeUrl = account.QRCodeUrl; } SqlStructureBuild sqlBuild = new SqlStructureBuild(); sqlBuild.Table = "Authorizer"; sqlBuild.Type = SqlExpressionType.Update; sqlBuild.AddParameter("AppId", appId, true); sqlBuild.AddParameter("Domain", domainId, true); sqlBuild.AddParameter("NickName", account.NickName); sqlBuild.AddParameter("HeadImg", account.HeadImg); sqlBuild.AddParameter("ServiceType", account.ServiceType.Id); sqlBuild.AddParameter("VerifyType", account.VerifyType.Id); sqlBuild.AddParameter("UserName", account.UserName); sqlBuild.AddParameter("Alias", account.Alias); sqlBuild.AddParameter("QRCodeUrl", qrCodeUrl); sqlBuild.AddParameter("Store", account.Business.Store); sqlBuild.AddParameter("Scan", account.Business.Scan); sqlBuild.AddParameter("Pay", account.Business.Pay); sqlBuild.AddParameter("Card", account.Business.Card); sqlBuild.AddParameter("Shake", account.Business.Shake); sqlBuild.AddParameter("FuncScopeCategory", accountInfoResult.ApiResult.AuthorizationInfo.FuncScopeCategoryList.ToString()); _dataBase.ExcuteSqlExpression(sqlBuild.GetSqlExpression()); //更新LastUpdateTime DomainManager.Instance.UpdateLastUpdateTime(domainId); } NormalResult normalResult = new NormalResult(); normalResult.Success = accountInfoResult.Success; normalResult.Message = accountInfoResult.Message; return(normalResult); }
public ActionResult AuthorizationCallbackDemo(string auth_code) { RequestApiResult <WeixinThirdPartyGetAuthorizationInfoResult> result = ThirdPartyApiWrapper.GetAuthorizationInfo(auth_code); AuthorizationCallbackDemoViewModel model = new AuthorizationCallbackDemoViewModel(); model.Info = result.ApiResult.AuthorizationInfo; return(View(model)); }
private void UpdateWrapper(AuthorizerJsApiTicketWrapper wrapper) { RequestApiResult <WeixinGetJsApiTicketResult> result = TokenApiWrapper.GetJsApiTicket(wrapper.AppId); if (result.Success) { wrapper.JsApiTicket = result.ApiResult.Ticket; wrapper.JsApiTicketExpiryTime = DateTime.Now.AddSeconds(result.ApiResult.ExpiresIn); } }
private void UpdateWrapper(AuthorizerAccessTokenWrapper wrapper) { RequestApiResult <WeixinThirdPartyGetAuthorizerAccessTokenResult> result = ThirdPartyApiWrapper.GetAuthorizerAccessToken(wrapper.AppId, wrapper.RefreshToken); if (result.Success) { wrapper.RefreshToken = result.ApiResult.RefreshToken; wrapper.AccessToken = result.ApiResult.AccessToken; wrapper.AccessTokenExpiryTime = DateTime.Now.AddSeconds(result.ApiResult.ExpiresIn); } }
public NormalResult Create(DomainContext domainContext, ScenicQRCodeEntity scenicQRCode) { if (scenicQRCode == null) { Debug.Assert(false, "scenicQRCode 为空"); return(new NormalResult("参数错误")); } //if (domainContext.Domain.Type == EnumDomainType.Free) //{ // //最大数量不允许超过10个 // if (GetTotalCount(domainContext) >= 5) // { // return new NormalResult("免费帐户创建场景二维码数量最多不可超过5个。"); // } //} WeixinCreateQRCodeArgs createArgs = new WeixinCreateQRCodeArgs(); createArgs.ActionInfo.Scene.SceneId = scenicQRCode.Id.ToString(); RequestApiResult <WeixinCreateQRCodeResult> createResult = QRCodeApiWrapper.Create(domainContext, createArgs); if (createResult.Success == false) { return(new NormalResult(createResult.Message)); } scenicQRCode.Ticket = createResult.ApiResult.Ticket; scenicQRCode.Url = createResult.ApiResult.Url; //下载二维码图片 FileDownloadAgentArgs downloadAgentArgs = new FileDownloadAgentArgs(); downloadAgentArgs.Domain = domainContext.Domain.Id; downloadAgentArgs.Url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + System.Web.HttpUtility.UrlEncode(createResult.ApiResult.Ticket); FileDownloadAgentResult downloadAgentResult = _fileService.DownloadAgent(downloadAgentArgs); if (downloadAgentResult.Success) { _log.Write("下载二维码返回", JsonConvert.SerializeObject(downloadAgentResult), TraceEventType.Verbose); scenicQRCode.QRCodeImageUrl = _fileService.FileServiceUri + downloadAgentResult.OutputFile; } else { return(new NormalResult(downloadAgentResult.Message)); } _dataBase.Insert(scenicQRCode); return(new NormalResult()); }
/// <summary> /// 用户管理-获取用户基本信息 /// 未认证订阅号 未认证服务号 没有此权限 /// </summary> /// <param name="domainContext"></param> /// <param name="openId"></param> /// <returns></returns> public static RequestApiResult <WeixinUser> GetUserInfo(DomainContext domainContext, string openId) { RequestApiResult <WeixinUser> result; if (domainContext == null || domainContext.Authorizer == null) { result = new RequestApiResult <WeixinUser>(); result.ApiError = new WeixinApiErrorResult(); result.ApiError.ErrorCode = -1; result.ApiError.ErrorMessage = "无域信息或无授权信息。"; return(result); } if (domainContext.Authorizer.AuthorizationType == EnumAuthorizationType.UnauthorizedService || domainContext.Authorizer.AuthorizationType == EnumAuthorizationType.UnauthorizedSubscription) { result = new RequestApiResult <WeixinUser>(); result.ApiError = new WeixinApiErrorResult(); result.ApiError.ErrorCode = -1; result.ApiError.ErrorMessage = "未认证订阅号 及 未认证服务号 没有获取用户基本信息权限。"; return(result); } string accessToken = domainContext.AccessToken; result = UserApi.GetUserInfo(accessToken, openId); if (result.Success == false) { if (result.Retry) { if (result.ApiError.ErrorCode == 40001) { accessToken = AccessTokenGetter.Refresh(domainContext.AppId, accessToken); } result = UserApi.GetUserInfo(accessToken, openId); if (result.Success == false) { _log.Write("UserApi.GetUserInfo 失败", result.GetDetail(), TraceEventType.Warning); } } else { _log.Write("UserApi.GetUserInfo 失败", result.GetDetail(), TraceEventType.Warning); } } return(result); }
public NormalResult BatchUntagging(DomainContext domainContext, MemberBatchTaggingArgs args) { NormalResult result = new NormalResult(false); if (args == null || args.OpenIdList == null || args.OpenIdList.Length == 0) { result.Message = "没有指定要更新的会员。"; return(result); } WeixinTagBatchTaggingArgs apiArgs = new WeixinTagBatchTaggingArgs(); apiArgs.TagId = args.TagId; apiArgs.Data = new WeixinTagBatchTaggingArgs_Data(); apiArgs.Data.OpenIdList = args.OpenIdList; RequestApiResult updateResult = TagsApiWrapper.BatchUntagging(domainContext, apiArgs); if (updateResult.Success == false) { result.Message = updateResult.Message; return(result); } //更新数据库MEMBER表字段 List <CommandParameter> parameterList = new List <CommandParameter>(); parameterList.Add(new CommandParameter("@domain", domainContext.Domain.Id)); parameterList.Add(new CommandParameter("@appId", domainContext.AppId)); parameterList.Add(new CommandParameter("@tagId", args.TagId + ",")); StringBuilder sqlWhere = new StringBuilder(); for (int i = 0; i < args.OpenIdList.Length; i++) { sqlWhere.Append("@openId" + i); if (i < args.OpenIdList.Length - 1) { sqlWhere.Append(","); } parameterList.Add(new CommandParameter("@openId" + i, args.OpenIdList[i])); } _dataBase.ExecuteNonQuery( "UPDATE [Member] SET [TagList] = REPLACE([TagList],@tagId,'') WHERE [Domain] = @domain AND [AppId] = @appId AND CHARINDEX(@tagId,[TagList]) > 0 AND [OpenId] IN (" + sqlWhere.ToString() + ")", parameterList); result.Success = true; return(result); }
private AuthorizerJsApiTicketWrapper CreateWrapper(string appId) { RequestApiResult <WeixinGetJsApiTicketResult> result = TokenApiWrapper.GetJsApiTicket(appId); if (result.Success) { AuthorizerJsApiTicketWrapper wrapper = new AuthorizerJsApiTicketWrapper(); wrapper.AppId = appId; wrapper.JsApiTicket = result.ApiResult.Ticket; wrapper.JsApiTicketExpiryTime = DateTime.Now.AddSeconds(result.ApiResult.ExpiresIn); return(wrapper); } return(null); }
public void Execute(IJobExecutionContext context) { List <MemberEntity> needUpdateMemberList = _memberManager.GetNeedUpdateList(); if (needUpdateMemberList == null || needUpdateMemberList.Count == 0) { return; } _log.Write("更新会员信息", String.Format("取得待更新会员数:{0}", needUpdateMemberList.Count), TraceEventType.Verbose); foreach (MemberEntity member in needUpdateMemberList) { DomainContext domainContext = _domainPool.GetDomainContext(member.Domain); if (domainContext == null) { _memberManager.NeedUpdate(member.Id, false); _log.Write("更新会员信息失败", "没有Domain信息\r\n" + JsonHelper.Serializer(member), TraceEventType.Warning); continue; } RequestApiResult <WeixinUser> getUserInfoResult = UserApiWrapper.GetUserInfo(domainContext, member.OpenId); if (getUserInfoResult.Success == false) { _log.Write("更新会员信息失败", JsonHelper.Serializer(getUserInfoResult), TraceEventType.Warning); continue; } if (getUserInfoResult.ApiResult.Subscribe == 0) { _memberManager.NeedUpdate(member.Id, false); continue; } AddMemberArgs args = new AddMemberArgs(); args.WeixinUser = getUserInfoResult.ApiResult; //更新当前用户信息 _memberManager.UpdateMember(member, args); _memberManager.NeedUpdate(member.Id, false); } _log.Write("更新会员信息", "更新完毕。", TraceEventType.Verbose); }