/// <summary> /// 获取AccessToken /// </summary> /// <returns></returns> private static AccessTokenInfo GetAccessToken() { DateTime _now = DateTime.Now; //有效时间到 从新获取AccessToken if (_accessToken == null || _now >= _expTime) { IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new DefAppIdInfo() }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { Logger.WriteTxtLog(string.Format("获取AccessToken发生错误,错误编码为:{0},错误消息为:{1}", response.ErrInfo.ErrCode, response.ErrInfo.ErrMsg)); _accessToken = null; return(null); } _accessToken = response.AccessToken; _expTime = _now.AddSeconds(_accessToken.ExpiresIn - 10); Logger.WriteTxtLog(string.Format("获取到AccessToken,值为:{0},有效期:{1}秒", response.AccessToken.AccessToken, response.AccessToken.ExpiresIn)); } return(_accessToken); }
/// <summary> /// 获取关注者列表测试 /// </summary> public static void GetAttentionsTest() { IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { Console.WriteLine("获取令牌环失败.."); return; } GetAttentionsRequest request2 = new GetAttentionsRequest() { AccessToken = response.AccessToken.AccessToken }; var response2 = mpClient.Execute(request2); if (response2.IsError) { Console.WriteLine("获取关注者列表失败,错误信息为:" + response2.ErrInfo.ErrCode + "-" + response2.ErrInfo.ErrMsg); } else { Console.WriteLine("获取关注者列表成功"); Console.WriteLine(Tools.ToJsonString(response2.Attentions)); } }
/// <summary> /// 取得菜单 /// </summary> /// <returns></returns> public static List <Button> GetMenu() { //取得菜单信息 IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { return(null); } else { GetMenuRequest getRequest = new GetMenuRequest() { AccessToken = response.AccessToken.AccessToken }; var getResponse = mpClient.Execute(getRequest); if (getResponse.IsError) { return(null); } else { var m = getResponse.Menu.menu.button; return(m); } } }
/// <summary> /// 获取微信接口凭证AccessToken /// </summary> /// <returns></returns> public string GetAccessToken(string keyValue = "") { string accessToken = string.Empty; string _appId = WeixinConfig.Instance.AppId; string appSecret = WeixinConfig.Instance.AppSecret; IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = _appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { return("0"); } accessToken = response.AccessToken.AccessToken; int timestampNow = ConvertDateTimeInt(DateTime.Now); accessTokenBLL.SaveForm(keyValue, new AccessTokenEntity { Id = keyValue, ModifyDate = DateTime.Now, Timestamp = timestampNow, Token = accessToken }); return(accessToken); }
/// <summary> /// 处理图片消息 /// </summary> /// <param name="msg"></param> /// <param name="args"></param> /// <returns></returns> public bool ProcessImageMessage(ImageReceiveMessage msg, params object[] args) { try { // string token = args[0].ToString(); string token = ""; IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { //这里回应1条文本消息,当然您也可以回应其他消息 MessageHandler.SendTextReplyMessage(msg.ToUserName, msg.FromUserName, "您发送了语音消息"); return(true); } else { token = response.AccessToken.AccessToken; //这里回复一个图片,当然您也可以回复其他类型的消息 return(MessageHandler.SendImageReplyMessage(token, msg.ToUserName, msg.FromUserName, AppDomain.CurrentDomain.BaseDirectory + "11.jpg")); } } catch (Exception ex) { //这里回应1条文本消息,当然您也可以回应其他消息 MessageHandler.SendTextReplyMessage(msg.ToUserName, msg.FromUserName, "出错了:" + ex.ToString()); return(true); } }
/// <summary> /// 获取用户基本信息 /// </summary> /// <param name="OpenId">用户OpenId</param> /// <returns></returns> public static User GetUserInfo(string OpenId) { IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { return(null); } GetUserInfoRequest request2 = new GetUserInfoRequest() { AccessToken = response.AccessToken.AccessToken, OpenId = OpenId, }; var response2 = mpClient.Execute(request2); if (response2.IsError) { return(null); } else { return(response2.UserInfo); } }
/// <summary> /// 发送视频客服信息 /// </summary> public static void SendVideoCustomMessageTest() { IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { Console.WriteLine("获取令牌环失败.."); return; } var response2 = MessageHandler.SendVideoCustomMessage(response.AccessToken.AccessToken, "oSFK4twKCGHhYZazqFMIcAx4GshQ", "美好的视屏", "视频描述", "d:\\2771cae7-8756-4dd4-8491-976589ab17cc.mp4"); response2 = MessageHandler.SendVideoCustomMessage(response.AccessToken.AccessToken, "oSFK4twW7yL_vR0ya3jYpT-H19lY", "视频客服信息", "视频客服信息描述", "d:\\2771cae7-8756-4dd4-8491-976589ab17cc.mp4"); if (response2.IsError) { Console.WriteLine("发送失败"); } else { Console.WriteLine("发送成功"); } }
/// <summary> /// 发送音乐客服消息测试 /// </summary> public static void SendMusicCustomMessageTest() { IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { Console.WriteLine("获取令牌环失败.."); return; } //var response2 = MessageHandler.SendMusicCustomMessage(response.AccessToken.AccessToken, "oSFK4twKCGHhYZazqFMIcAx4GshQ", "音乐标题", "音乐描述","","" "d:\\UP.jpg"); var response2 = MessageHandler.SendMusicCustomMessage(response.AccessToken.AccessToken, "oSFK4twKCGHhYZazqFMIcAx4GshQ", "音乐标题", "音乐描述", "http://wx.011011.com/baba.mp3", "http://wx.011011.com/baba.mp3", "d:\\UP.jpg"); response2 = MessageHandler.SendMusicCustomMessage(response.AccessToken.AccessToken, "oSFK4twW7yL_vR0ya3jYpT-H19lY", "音乐标题", "音乐描述", "http://wx.011011.com/baba.mp3", "http://wx.011011.com/baba.mp3", "d:\\UP.jpg"); if (response2.IsError) { Console.WriteLine("发送失败"); } else { Console.WriteLine("发送成功"); } }
/// <summary> /// 发送语音客服信息测试 /// </summary> public static void SendVoiceCustomMessageTest() { IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { Console.WriteLine("获取令牌环失败.."); return; } var response2 = MessageHandler.SendVoiceCustomMessage(response.AccessToken.AccessToken, "oSFK4twKCGHhYZazqFMIcAx4GshQ", "d:\\11.mp3"); if (response2.IsError) { Console.WriteLine("发送失败"); } else { Console.WriteLine("发送成功"); } }
/// <summary> /// 发送文本客服信息测试 /// </summary> public static void SendTextCustomMessageTest() { IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { Console.WriteLine("获取令牌环失败.."); return; } var response2 = MessageHandler.SendTextCustomMessage(response.AccessToken.AccessToken, "oSFK4twKCGHhYZazqFMIcAx4GshQ", "文本客服消息" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); if (response2.IsError) { Console.WriteLine("发送失败"); } else { Console.WriteLine("发送成功"); } }
/// <summary> /// 回复数据 /// </summary> void savePave() { string appId = System.Configuration.ConfigurationManager.AppSettings["YHQAppId"].Trim(); string appSecret = System.Configuration.ConfigurationManager.AppSettings["YHQAppSecret"].Trim(); string openid = Utils.GetQueryStringValue("openid"); string getMsg = Utils.GetFormValue("txtMsg"); IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { Console.WriteLine("位置错误.."); return; } var response2 = MessageHandler.SendTextCustomMessage(response.AccessToken.AccessToken, openid, getMsg); Response.Clear(); if (response2.IsError) { Response.Write(UtilsCommons.AjaxReturnJson("0", "发送失败")); } else { Response.Write(UtilsCommons.AjaxReturnJson("1", "发送成功")); } Response.End(); }
/// <summary> /// 获取用户分组ID测试 /// </summary> public static void GetUserGroupIdTest() { IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { Console.WriteLine("获取令牌环失败.."); return; } GetUserGroupRequest request2 = new GetUserGroupRequest() { AccessToken = response.AccessToken.AccessToken, UserId = "oSFK4t4xIdeddd4wpxXaUmtKKpMA" }; var response2 = mpClient.Execute(request2); if (response2.IsError) { Console.WriteLine("查询用户分组ID失败,错误信息为:" + response2.ErrInfo.ErrCode + "-" + response2.ErrInfo.ErrMsg); } else { Console.WriteLine("查询用户分组ID成功,分组ID为:" + response2.GroupId); } }
/// <summary> /// 处理语音消息 /// </summary> /// <param name="msg"></param> /// <param name="args"></param> /// <returns></returns> public bool ProcessVoiceMessage(VoiceReceiveMessage msg, params object[] args) { string token = ""; IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { //这里回应1条文本消息,当然您也可以回应其他消息 MessageHandler.SendTextReplyMessage(msg.ToUserName, msg.FromUserName, "您发送了语音消息"); return(true); } else { token = response.AccessToken.AccessToken; //这里回复1条语音消息,当然您也可以回复其他类型的信息 return(MessageHandler.SendVoiceReplyMessage(token, msg.ToUserName, msg.FromUserName, AppDomain.CurrentDomain.BaseDirectory + "11.mp3")); } }
/// <summary> /// 获取用户基本信息 /// </summary> /// <param name="openid"></param> private UserInfoR GetUserInfo(string openid) { if (string.IsNullOrEmpty(openid)) { return(null); } StringBuilder url = new StringBuilder(); IMpClient mpClient = new MpClient(); UserInfoR userinfo = null; AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = ConfigHelper.AppSettings("WEPAY_WEB_APPID"), AppSecret = ConfigHelper.AppSettings("WEPAY_WEb_AppSecret") } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { userinfo = new FJCWebApp.CommonClass.UserInfoR(); userinfo.headimgurl = "/Content/Images/top.png"; userinfo.province = response.ErrInfo.ErrMsg; userinfo.city = response.ErrInfo.ErrCode.ToString(); } else { url.AppendFormat("https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}&lang=zh_CN", response.AccessToken.AccessToken, openid); var client = new HttpClient(); var retJson = client.GetAsync(url.ToString()).Result.Content.ReadAsStringAsync().Result; try { Business.Base_SysLogBll.Instance.WriteLog("", Business.OperationType.Query, "-1", retJson); userinfo = JsonConvert.DeserializeObject <UserInfoR>(retJson); } catch (Exception ex) { userinfo = new FJCWebApp.CommonClass.UserInfoR(); userinfo.headimgurl = "/Content/Images/top.png"; userinfo.province = ex.Message; userinfo.city = response.Body; } } return(userinfo); }
/// <summary> /// 创建二维码测试 /// </summary> public static void QrCodeCreateTest() { IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { Console.WriteLine("获取令牌环失败.."); return; } QrCodeCreateMessage msg = new QrCodeCreateMessage() { SceneId = 22, ExpireSeconds = 1800, ActionName = "QR_LIMIT_SCENE", //QR_SCENE为临时,QR_LIMIT_SCENE为永久 LocalStoredDir = "D:\\" }; QrCodeCreateRequest createRequest = new QrCodeCreateRequest() { AccessToken = response.AccessToken.AccessToken, QrCodeCreateMessage = msg, SendData = msg.ToJsonString() }; var createResponse = mpClient.Execute(createRequest); if (createResponse.IsError) { Console.WriteLine("创建二维码失败,错误信息为:" + createResponse.ErrInfo.ErrCode + "-" + createResponse.ErrInfo.ErrMsg); } else { Console.WriteLine("创建二维码成功,二维码链接地址为:" + createResponse.QrCodeUrl + "本地存储路径为:" + createResponse.LocalFilePath); } }
/// <summary> /// 修改分组测试 /// </summary> public static void ModifyGroupTest() { IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { Console.WriteLine("获取令牌环失败.."); return; } Group groupInfo = new Group() { id = "101", name = "修改后的分组" }; ModifyGroupRequest request2 = new ModifyGroupRequest() { AccessToken = response.AccessToken.AccessToken, GroupInfo = groupInfo, SendData = groupInfo.ToModifyJsonString() }; var response2 = mpClient.Execute(request2); if (response2.IsError) { Console.WriteLine("修改分组失败,错误信息为:" + response2.ErrInfo.ErrCode + "-" + response2.ErrInfo.ErrMsg); } else { Console.WriteLine("修改分组信息成功"); GetGroupsTest(); //查询一把,显示一下信息 } }
public string GetAccessToken(string oldAccessToken) { if (string.IsNullOrEmpty(mAccessToken) || mAccessTokenExpiredTime <= DateTime.Now || mAccessToken == oldAccessToken) { lock (mAccessTokenLocker) { if (string.IsNullOrEmpty(mAccessToken) || mAccessTokenExpiredTime <= DateTime.Now || mAccessToken == oldAccessToken) { DateTime timenow = DateTime.Now; IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = mAppId, AppSecret = mAppSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { string msg = string.Format("获取AccessToken失败。 Code:{0},Msg:{1},APPID:{2},Token:{3}", response.ErrInfo.ErrCode, response.ErrInfo.ErrMsg, mAppId, mAppSecret); LogHelper.WriteError(LogModule, msg, null); if (response.ErrInfo.ErrCode == 45009)//reach max api daily quota limit { mAccessToken = "00000000000"; mAccessTokenExpiredTime = DateTime.Today.AddDays(1); return(mAccessToken); } throw new ApplicationException(msg); } else { mAccessToken = response.AccessToken.AccessToken; mAccessTokenExpiredTime = timenow.AddSeconds((long)(response.AccessToken.ExpiresIn * mAccessTokenCachePeriod)); LogHelper.WriteDebug(LogModule, "AccessToken:{0}, ExpiredTime:{1:yyyy-MM-dd HH:mm:ss}", mAccessToken, mAccessTokenExpiredTime); } } } } return(mAccessToken); }
/// <summary> /// 获取AccessToken测试代码 /// </summary> public static void GetAccessTokenTest() { IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { Console.WriteLine("获取AccessToken发生错误,错误编码为:{0},错误消息为:{1}", response.ErrInfo.ErrCode, response.ErrInfo.ErrMsg); } else { Console.WriteLine("获取到AccessToken,值为:{0},有效期:{1}秒", response.AccessToken.AccessToken, response.AccessToken.ExpiresIn); } }
/// <summary> /// 创建分组测试 /// </summary> public static void CreateGroupTest() { IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { Console.WriteLine("获取令牌环失败.."); return; } Group msg = new Group() { name = "分组一" }; CreateGroupRequest createRequest = new CreateGroupRequest() { AccessToken = response.AccessToken.AccessToken, SendData = msg.ToCreateJsonString() }; var createResponse = mpClient.Execute(createRequest); if (createResponse.IsError) { Console.WriteLine("创建分组失败,错误信息为:" + createResponse.ErrInfo.ErrCode + "-" + createResponse.ErrInfo.ErrMsg); } else { Console.WriteLine("创建分组成功,分组ID为:" + createResponse.GroupInfo.id + ",分组名称为:" + createResponse.GroupInfo.name); } }
/// <summary> /// 移动用户分组测试 /// </summary> public static void SetUserGroupTest() { IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { Console.WriteLine("获取令牌环失败.."); return; } SetUserGroupRequest request2 = new SetUserGroupRequest() { AccessToken = response.AccessToken.AccessToken, UserId = "oSFK4t4xIdeddd4wpxXaUmtKKpMA", ToGroupId = "101" }; var response2 = mpClient.Execute(request2); if (response2.IsError) { Console.WriteLine("移动用户分组失败,错误信息为:" + response2.ErrInfo.ErrCode + "-" + response2.ErrInfo.ErrMsg); } else { Console.WriteLine("移动用户分组成功"); GetGroupsTest(); //查询一把,显示一下信息 } }
/// <summary> /// 查询所有分组测试 /// </summary> public static void GetGroupsTest() { IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { Console.WriteLine("获取令牌环失败.."); return; } GetGroupsRequest createRequest = new GetGroupsRequest() { AccessToken = response.AccessToken.AccessToken, }; var createResponse = mpClient.Execute(createRequest); if (createResponse.IsError) { Console.WriteLine("查询所有分组失败,错误信息为:" + createResponse.ErrInfo.ErrCode + "-" + createResponse.ErrInfo.ErrMsg); } else { Console.WriteLine("查询分组信息成功,共有分组" + createResponse.Groups.groups.Count.ToString() + "个"); JavaScriptSerializer jsonSerializer = new JavaScriptSerializer(); string groups = jsonSerializer.Serialize(createResponse.Groups); Console.WriteLine(groups); } }
/// <summary> /// 发送通知消息 /// </summary> /// <param name="postData"></param> /// <returns></returns> public string SendTemplateMessage() { IMpClient mpClient = new MpClient(); AppIdInfo app = new AppIdInfo() { AppID = AppId, AppSecret = AppSecret, CallBack = "" }; string message = "发送成功"; AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = app }; AccessTokenGetResponse response = mpClient.Execute(request); if (!response.IsError) { SendTemplateMessageRequest req = new SendTemplateMessageRequest() { AccessToken = response.AccessToken.AccessToken, SendData = ToJsonString1(), AppIdInfo = app }; SendTemplateMessageResponse res = mpClient.Execute(req); if (res.IsError) { //记录日志 message = res.ErrInfo.ErrMsg; } } else { message = response.ErrInfo.ErrMsg; } return(message); }
/// <summary> /// 查询菜单测试 /// </summary> public static void GetMenuTest() { IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { Console.WriteLine("获取令牌环失败.."); return; } GetMenuRequest getRequest = new GetMenuRequest() { AccessToken = response.AccessToken.AccessToken }; var getResponse = mpClient.Execute(getRequest); if (getResponse.IsError) { Console.WriteLine("查询菜单发生错误,错误信息为:" + getResponse.ErrInfo.ErrCode + "-" + getResponse.ErrInfo.ErrMsg); } else { Console.WriteLine("查询菜单成功"); var m = getResponse.Menu; Console.WriteLine(m.ToJsonString()); } }
/// <summary> /// 删除菜单测试 /// </summary> public static void DeleteMenuTest() { IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { Console.WriteLine("获取令牌环失败.."); return; } DeleteMenuRequest getRequest = new DeleteMenuRequest() { AccessToken = response.AccessToken.AccessToken }; var delResponse = mpClient.Execute(getRequest); if (delResponse.IsError) { Console.WriteLine("删除菜单失败,错误信息为:" + delResponse.ErrInfo.ErrCode + "-" + delResponse.ErrInfo.ErrMsg); } else { Console.WriteLine("删除菜单成功"); GetMenuTest(); //成功后查询一下 } }
/// <summary> /// 获取用户基本信息测试 /// </summary> public static void GetUserInfoTest() { IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { Console.WriteLine("获取令牌环失败.."); return; } GetUserInfoRequest request2 = new GetUserInfoRequest() { AccessToken = response.AccessToken.AccessToken, OpenId = "oSFK4t4xIdeddd4wpxXaUmtKKpMA", }; var response2 = mpClient.Execute(request2); if (response2.IsError) { Console.WriteLine("获取用户基本信息失败,错误信息为:" + response2.ErrInfo.ErrCode + "-" + response2.ErrInfo.ErrMsg); } else { Console.WriteLine("获取用户信息成功"); Console.WriteLine(Tools.ToJsonString(response2.UserInfo)); } }
/// <summary> /// 创建菜单测试 /// </summary> public static void CreateMenuTest() { IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { Console.WriteLine("获取令牌环失败.."); return; } Menu menu = new Menu(); List <Button> button = new List <Weixin.Mp.Sdk.Domain.Button>(); Button subBtn1 = new Button() { key = "subkey1", name = "子按钮1", sub_button = null, type = "click", url = "http://" }; Button subBtn2 = new Button() { key = "subkey1", name = "子按钮1", sub_button = null, type = "click", url = "http://" }; Button subBtn3 = new Button() { key = "subkey1", name = "子按钮1", sub_button = null, type = "click", url = "http://" }; List <Button> subBtnAll = new List <Button>(); subBtnAll.Add(subBtn1); subBtnAll.Add(subBtn2); subBtnAll.Add(subBtn3); Button btn = new Button() { key = "key3", name = "联系", url = "httpbig", type = "click", sub_button = subBtnAll }; button.Add(btn); btn = new Button() { key = "key1", name = "帮助", url = "httpbig", type = "click", sub_button = subBtnAll }; button.Add(btn); btn = new Button() { key = "key2", name = "关于", url = "httpbig", type = "click", //sub_button = subBtnAll }; button.Add(btn); menu.button = button; MenuGroup mg = new MenuGroup() { menu = menu }; string postData = mg.ToJsonString(); CreateMenuRequest createRequest = new CreateMenuRequest() { AccessToken = response.AccessToken.AccessToken, SendData = postData }; CreateMenuResponse createResponse = mpClient.Execute(createRequest); if (createResponse.IsError) { Console.WriteLine("创建菜单失败,错误信息为:" + createResponse.ErrInfo.ErrCode + "-" + createResponse.ErrInfo.ErrMsg); } else { Console.WriteLine("创建菜单成功"); } }
/// <summary> /// 获取关注者列表 /// </summary> /// <param name="AttentionsList">返回关注的列表</param> /// <param name="NextOpenId">超过一万时最后一个关注OPENID</param> /// <returns></returns> public static WeiXinResult GetAttentions(ref List <string> AttentionsList, string NextOpenId) { WeiXinResult AttentionsResult = new WeiXinResult(); IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { AttentionsResult.IsResult = false; AttentionsResult.ResultMsg = "获取令牌环失败"; return(AttentionsResult); } string AccessToken = response.AccessToken.AccessToken; GetAttentionsRequest request2 = new GetAttentionsRequest() { AccessToken = AccessToken, NextOpenId = NextOpenId }; var response2 = mpClient.Execute(request2); if (response2.IsError) { AttentionsResult.IsResult = false; AttentionsResult.ResultMsg = "获取关注者列表失败,错误信息为:" + response2.ErrInfo.ErrCode + "-" + response2.ErrInfo.ErrMsg; return(AttentionsResult); } else { var list = response2.Attentions; if (list.total > 0) { if (list.data.openid.Count > 0) { AttentionsList.AddRange(list.data.openid); if (list.total > 10000 && !String.IsNullOrEmpty(list.next_openid))//超过一万 { return(GetAttentions(ref AttentionsList, list.next_openid)); } else { // Adpost.Finawin.Utility.ConfigClass.SetConfigKeyValue("next_openid", list.next_openid); AttentionsResult.IsResult = true; AttentionsResult.ResultMsg = "获取关注者列表成功"; return(AttentionsResult); } } else { AttentionsResult.IsResult = false; AttentionsResult.ResultMsg = "无关注者数据"; return(AttentionsResult); } } else { AttentionsResult.IsResult = false; AttentionsResult.ResultMsg = "无关注者数据"; return(AttentionsResult); } } }
/// <summary> /// 创建菜单 /// </summary> public static WeiXinResult CreateMenu() { WeiXinResult rv = new WeiXinResult { IsResult = false, ResultMsg = "系统错误!" }; IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = appId, AppSecret = appSecret } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { rv.ResultMsg = "获取令牌环失败"; return(rv); } else { Menu menu = new Menu(); List <Button> button = new List <Weixin.Mp.Sdk.Domain.Button>(); #region 菜单一 产品中心 Button subBtn1 = new Button() { key = "guoneiyou", name = "国内游", sub_button = null, type = "view", url = "http://www.4008005216.com/AppPage/weixin/ProductView.aspx?xianlu=0" }; Button subBtn2 = new Button() { key = "guojiyou", name = "国际游", sub_button = null, type = "view", url = "http://www.4008005216.com/AppPage/weixin/ProductView.aspx?xianlu=1" }; Button subBtn3 = new Button() { key = "chanpintuijian", name = "产品推荐", sub_button = null, type = "view", url = "http://www.4008005216.com/AppPage/weixin/ProductList.aspx?tuijian=1" }; Button subBtn4 = new Button() { key = "chanpinmachaxun", name = "产品码查询", sub_button = null, type = "click", url = "http://www.4008005216.com/AppPage/weixin/Register.aspx" }; Button subBtn5 = new Button() { key = "guoneijipiao", name = "国内机票", sub_button = null, type = "view", url = "http://www.4008005216.com/AppPage/weixin/jp_Search.aspx" }; List <Button> subBtnAll = new List <Button>(); subBtnAll.Add(subBtn1); subBtnAll.Add(subBtn2); subBtnAll.Add(subBtn3); subBtnAll.Add(subBtn4); subBtnAll.Add(subBtn5); Button btn = new Button() { key = "menu1", name = "旅游超市", url = "httpbig", type = "click", sub_button = subBtnAll }; button.Add(btn); #endregion #region 菜单二 会员中心 Button Menu2SubBtn1 = new Button() { key = "dingdanguanli", name = "订单管理", sub_button = null, type = "view", url = "http://www.4008005216.com/AppPage/weixin/OrderList.aspx" }; Button Menu2SubBtn2 = new Button() { key = "zhanghuguanli", name = "账户管理", sub_button = null, type = "view", url = "http://www.4008005216.com/AppPage/weixin/updateUser.aspx" }; Button Menu2SubBtn3 = new Button() { key = "yuyue", name = "预约办理", sub_button = null, type = "view", url = "http://www.4008005216.com/AppPage/weixin/YuYue.aspx" }; string _weidianurl = "https://open.weixin.qq.com/connect/oauth2/authorize?"; _weidianurl += "appid=" + appId; _weidianurl += "&redirect_uri=http://www.4008005216.com/WeiXin/oauth2_authorize.aspx"; _weidianurl += "&response_type=code"; _weidianurl += "&scope=snsapi_base"; _weidianurl += "&state=weidian_snsapi_base"; _weidianurl += "#wechat_redirect"; Button Menu2SubBtn4 = new Button() { key = "wodeweidian", name = "我的微店", sub_button = null, type = "view", url = _weidianurl }; Button Menu2SubBtn5 = new Button() { key = "fenxiang", name = "最新分享", sub_button = null, type = "view", url = "http://www.4008005216.com/HuiYuanWeiXin/TuWenFenXiang.aspx" }; List <Button> subBtnAll2 = new List <Button>(); subBtnAll2.Add(Menu2SubBtn1); subBtnAll2.Add(Menu2SubBtn2); subBtnAll2.Add(Menu2SubBtn3); subBtnAll2.Add(Menu2SubBtn4); subBtnAll2.Add(Menu2SubBtn5); btn = new Button() { key = "huiyuanzhongxin", name = "会员中心", url = "httpbig", type = "click", sub_button = subBtnAll2 }; button.Add(btn); #endregion #region 菜单三 惠旅游 Button Menu3SubBtn1 = new Button() { key = "aboutus", name = "关于我们", sub_button = null, type = "view", url = "http://www.4008005216.com/AppPage/weixin/AboutUs.aspx" }; Button Menu3SubBtn2 = new Button() { key = "appdown", name = "APP下载", sub_button = null, type = "view", url = "http://www.4008005216.com/DownApp.aspx" }; Button Menu3SubBtn3 = new Button() { key = "recommend", name = "客服反馈", sub_button = null, type = "click", url = "http://www.4008005216.com/AppPage/weixin/Recommend.aspx" }; Button Menu3SubBtn4 = new Button() { key = "weimingpian", name = "我的频道", sub_button = null, type = "view", url = "http://www.4008005216.com/huiyuanweixin/mingpian.aspx" }; Button Menu3SubBtn5 = new Button() { key = "lvyouguwen", name = "旅游顾问", sub_button = null, type = "view", url = "http://www.4008005216.com/huiyuanweixin/lvyouguwen.aspx" }; List <Button> subBtnAll3 = new List <Button>(); subBtnAll3.Add(Menu3SubBtn1); subBtnAll3.Add(Menu3SubBtn2); subBtnAll3.Add(Menu3SubBtn3); subBtnAll3.Add(Menu3SubBtn4); subBtnAll3.Add(Menu3SubBtn5); btn = new Button() { key = "menu3", name = "旅游频道", url = "httpbig", type = "click", sub_button = subBtnAll3 }; button.Add(btn); #endregion menu.button = button; MenuGroup mg = new MenuGroup() { menu = menu }; string postData = mg.ToJsonString(); CreateMenuRequest createRequest = new CreateMenuRequest() { AccessToken = response.AccessToken.AccessToken, SendData = postData }; CreateMenuResponse createResponse = mpClient.Execute(createRequest); if (createResponse.IsError) { rv.ResultMsg = "创建菜单失败,错误信息为:" + createResponse.ErrInfo.ErrCode + "-" + createResponse.ErrInfo.ErrMsg; return(rv); } else { rv.IsResult = true; rv.ResultMsg = "创建成功"; return(rv); } } }
/// <summary> /// 后台抄表 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ReadingHandleTimerTimerEvent(object sender, System.Timers.ElapsedEventArgs e) { ReadingHandleTimer.Stop(); var taskList = database.FindList <Am_BackstageTask>(" and Status=0"); foreach (var item in taskList) { var result = GetResult(item.Number); var root = JsonHelper.JonsToList <Root>(result); if (root != null) { if (root.Count == 1) { var example = root[0]; item.TaskMark = "[主动查询]" + result; if (example.status == "SUCCESS") { item.Status = 1; item.StatusStr = "成功"; if (example.data != null) { item.Remark = example.data[0].dsp; } item.OverTime = DateTime.Parse(example.resolve_time); } else if (example.status == "FAIL") { item.Status = 2; item.StatusStr = "失败"; item.OverTime = DateTime.Parse(example.resolve_time); } else if (example.status == "NOTSUPPORT") { item.Status = 2; item.StatusStr = "不支持此功能"; item.OverTime = DateTime.Parse(example.resolve_time); } else if (example.status == "TIMEOUT") { item.Status = 2; item.StatusStr = "超时"; item.OverTime = DateTime.Parse(example.resolve_time); } else if (example.status == "ACCEPTED") { item.StatusStr = "请求已接受"; } else if (example.status == "QUEUE") { item.StatusStr = "调度状态"; } else if (example.status == "PROCESSING") { item.StatusStr = "正在处理中"; } database.Update <Am_BackstageTask>(item); } } if (item.Status > 0 && item.Status < 4) { var log = DbHelper.GetLog(item.Number); if (log != null) { log.Result = item.StatusStr; DbHelper.UpdateLog(log); } if (root.Count == 1) { var example = root[0]; if (example.data != null && example.data.Count > 0) { int type = example.data[0].type; List <DbParameter> par = new List <DbParameter>(); par.Add(DbFactory.CreateDbParameter("@Number", item.AmmeterNumber)); var ammeter = database.FindEntityByWhere <Am_Ammeter>(" and Number =@Number ", par.ToArray()); //查询余额 if (type == 22) { if (ammeter != null && ammeter.Number != null) { ammeter.CurrMoney = double.Parse(example.data[0].value[0].ToString()); ammeter.CM_Time = DateTime.Parse(example.resolve_time); ammeter.Acount_Id = null; if (ammeter.CurrMoney < ammeter.FirstAlarm && ammeter.IsLowerWarning == 1) { ammeter.IsLowerWarning = 2; //发微信通知 IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = ConfigHelper.AppSettings("WEPAY_WEB_APPID"), AppSecret = ConfigHelper.AppSettings("WEPAY_WEb_AppSecret") } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { this.WriteLog(response.ErrInfo.ErrMsg); } Weixin.Mp.Sdk.Domain.First first = new First(); first.color = "#000000"; first.value = ammeter.U_Name + ",您" + ammeter.Room + "号房电费不足"; Weixin.Mp.Sdk.Domain.Keynote1 keynote1 = new Keynote1(); keynote1.color = "#0000ff"; keynote1.value = ammeter.CurrMoney.Value.ToString("0.00"); Weixin.Mp.Sdk.Domain.Keynote2 keynote2 = new Keynote2(); keynote2.color = "#0000ff"; keynote2.value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); Weixin.Mp.Sdk.Domain.Remark remark = new Remark(); remark.color = "#464646"; remark.value = "请及时充值,以免影响您正常用电!"; Weixin.Mp.Sdk.Domain.Data data = new Data(); data.first = first; data.keynote1 = keynote1; data.keynote2 = keynote2; data.remark = remark; Weixin.Mp.Sdk.Domain.Miniprogram miniprogram = new Miniprogram(); miniprogram.appid = ""; miniprogram.pagepath = ""; Weixin.Mp.Sdk.Domain.TemplateMessage templateMessage = new TemplateMessage(); templateMessage.data = data; templateMessage.miniprogram = miniprogram; templateMessage.template_id = "AaRgB6rFU6Z3kUbagN16Mp7DbT293yI8nuE96Xvoxdk"; var usermodel = database.FindEntity <Ho_PartnerUser>(ammeter.U_Number); templateMessage.touser = usermodel.OpenId; templateMessage.url = "http://am.zst0771.com/Personal/AmmeterRecharge?number=" + ammeter.Number; string postData = templateMessage.ToJsonString1(); /*JsonHelper.ToJson(templateMessage);*/ AppIdInfo app = new AppIdInfo() { AppID = ConfigHelper.AppSettings("WEPAY_WEB_APPID"), AppSecret = ConfigHelper.AppSettings("WEPAY_WEb_AppSecret"), CallBack = "" }; SendTemplateMessageRequest req = new SendTemplateMessageRequest() { AccessToken = response.AccessToken.AccessToken, SendData = postData, AppIdInfo = app }; SendTemplateMessageResponse res = mpClient.Execute(req); if (res.IsError) { this.WriteLog(res.ErrInfo.ErrMsg); } } database.Update(ammeter); } } //查询电量 if (type == 20) { if (ammeter != null && ammeter.Number != null) { ammeter.CurrPower = decimal.Parse(example.data[0].value[0].ToString()).ToString("0.00"); ammeter.CP_Time = DateTime.Parse(example.resolve_time); DbHelper.UpdateAmmeter(ammeter); } } } } } } ReadingHandleTimer.Start(); }
/// <summary> /// 账单推送 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BillSendTimerdEvent(object sender, System.Timers.ElapsedEventArgs e) { BillSendTimer.Stop(); var config = database.FindEntityByWhere <Fx_WebConfig>(""); if (config != null && config.SendBillDate.Value > 0) { var time = DateTime.Now.AddDays(config.SendBillDate.Value); List <DbParameter> par = new List <DbParameter>(); par.Add(DbFactory.CreateDbParameter("@time", time)); par.Add(DbFactory.CreateDbParameter("@Status", "0")); var billList = database.FindList <Am_Bill>(" and BeginTime<=@time and Status=@Status ", par.ToArray()); foreach (var item in billList) { item.Status = 1; item.StatusStr = "未支付"; item.SendTime = DateTime.Now; if (database.Update <Am_Bill>(item) > 0) { //账单推送 IMpClient mpClient = new MpClient(); AccessTokenGetRequest request = new AccessTokenGetRequest() { AppIdInfo = new AppIdInfo() { AppID = ConfigHelper.AppSettings("WEPAY_WEB_APPID"), AppSecret = ConfigHelper.AppSettings("WEPAY_WEb_AppSecret") } }; AccessTokenGetResponse response = mpClient.Execute(request); if (response.IsError) { continue; } Weixin.Mp.Sdk.Domain.First first = new First(); first.color = "#000000"; first.value = item.T_U_Name + ",您本月的账单已生成"; Weixin.Mp.Sdk.Domain.Keynote1 keynote1 = new Keynote1(); keynote1.color = "#0000ff"; keynote1.value = item.Address + " " + item.Cell + "单元" + item.Floor + "楼" + item.Room + "号"; Weixin.Mp.Sdk.Domain.Keynote2 keynote2 = new Keynote2(); keynote2.color = "#0000ff"; keynote2.value = item.BeginTime.Value.ToString("yyyy-MM-dd") + "至" + item.EndTime.Value.ToString("yyyy-MM-dd"); Weixin.Mp.Sdk.Domain.Keynote3 keynote3 = new Keynote3(); keynote3.color = "#0000ff"; keynote3.value = item.Money.Value.ToString("0.00"); //Weixin.Mp.Sdk.Domain.Keynote4 keynote4 = new Keynote4(); //keynote4.color = "#0000ff"; //keynote4.value = model.s_Reception + " " + model.s_ReMobile; Weixin.Mp.Sdk.Domain.Remark remark = new Remark(); remark.color = "#464646"; remark.value = "请在" + config.SendBillDate.Value.ToString() + "天之内在线支付账单!"; Weixin.Mp.Sdk.Domain.Data data = new Data(); data.first = first; data.keynote1 = keynote1; data.keynote2 = keynote2; data.keynote3 = keynote3; //data.keynote4 = keynote4; data.remark = remark; Weixin.Mp.Sdk.Domain.Miniprogram miniprogram = new Miniprogram(); miniprogram.appid = ""; miniprogram.pagepath = ""; Weixin.Mp.Sdk.Domain.TemplateMessage templateMessage = new TemplateMessage(); templateMessage.data = data; templateMessage.miniprogram = miniprogram; templateMessage.template_id = "d0NDpmuQ7BjtlxPurNTr9N1GlATOAQ98S8vrmgAijH8"; var usermodel = database.FindEntity <Ho_PartnerUser>(item.T_U_Number); templateMessage.touser = usermodel.OpenId; templateMessage.url = "http://am.zst0771.com/Personal/NewBillDetails?Number=" + item.Number; string postData = templateMessage.ToJsonString1(); /*JsonHelper.ToJson(templateMessage);*/ AppIdInfo app = new AppIdInfo() { AppID = ConfigHelper.AppSettings("WEPAY_WEB_APPID"), AppSecret = ConfigHelper.AppSettings("WEPAY_WEb_AppSecret"), CallBack = "" }; SendTemplateMessageRequest req = new SendTemplateMessageRequest() { AccessToken = response.AccessToken.AccessToken, SendData = postData, AppIdInfo = app }; SendTemplateMessageResponse res = mpClient.Execute(req); if (res.IsError) { continue; } } } } BillSendTimer.Start(); }