微信企业号开发部分代码

之前在一个公司做过,微信企业号开发。为了方便查询将部分代码发上来。

  1  public class WXService: System.Web.Services.WebService
  2     {
  3         /// <summary>
  4         /// 发送数据的方法
  5         /// </summary>
  6         /// <param name="touser">要发往的人员名称</param>
  7         /// <param name="touserlength">要发往的人员数目</param>
  8         /// <param name="content">要发送的文件内容</param>
  9         /// <param name="machineid">发生碰撞的机械ID</param>
 10         /// <returns></returns>
 11         [WebMethod]
 12         public bool sendmessage(string tousermain, string content, string machineid,string crashid,string address)//发送数据的方法
 13         {
 14             bool success = true;
 15             //获取access token
 16             string accesstoken = JudgeAndGetAccessToken();
 17             //推送消息给用户
 18             string strURL = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + accesstoken;
 19             //发送一条news消息
 20             string paraUrlCoded = "{\"touser\": \"" + tousermain + "\",\"msgtype\": \"news\",\"agentid\": \"1\",\"news\":{\"articles\":[{\"title\":\"车号为" + machineid + "的车辆发生碰撞\",\"description\":\"" + content + "\",\"url\":\""+ address + crashid + "\",\"picurl\":\""}]}}";
 21             JObject obj = JObject.Parse(post(strURL, paraUrlCoded));
 22             if (obj["errmsg"].ToString() == "ok")
 23             {
 24                 success = true;
 25             }
 26             else
 27             {
 28                 string errcode = obj["errcode"].ToString();
 29                 string fpath = Server.MapPath("");
 30                 Daily daily = new Daily();
 31                 daily.Settxtwrong(errcode,paraUrlCoded,fpath);
 32                 success = false;
 33             }
 34             return success;
 35         }
 36
 37         /// <summary>
 38         /// 新增成员的方法
 39         /// </summary>
 40         /// <param name="id">用户id</param>
 41         /// <param name="username">用户名</param>
 42         /// <param name="mobile">手机号码</param>
 43         /// <param name="email">邮箱地址</param>
 44         /// <param name="gender">性别</param>
 45         /// <returns></returns>
 46         [WebMethod]
 47         public bool Addpeople(string id, string username, string mobile, string email, string gender)//添加人员的方法
 48         {
 49             bool success = true;
 50             //获取access token
 51             string accesstoken = JudgeAndGetAccessToken();
 52             if (gender == "男")
 53             {
 54                 gender = "1";
 55             }
 56             else
 57             {
 58                 if (gender == "女")
 59                 {
 60                     gender = "2";
 61                 }
 62                 else
 63                 {
 64                     gender = "";
 65                 }
 66             }
 67             //推送消息给用户
 68             string strURL = "https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token=" + accesstoken;
 69             //编码json字符串
 70             string paraUrlCoded = "{\"userid\": \"" + id + "\",\"name\": \"" + username + "\",\"department\": [4],\"mobile\": \"" + mobile + "\",\"gender\": \"" + gender + "\"}";
 71             JObject obj = JObject.Parse(post(strURL, paraUrlCoded));
 72             if (obj["errmsg"].ToString() == "created")
 73             {
 74                 success = true;
 75             }
 76             else
 77             {
 78                 string errcode = obj["errcode"].ToString();
 79                 string fpath = Server.MapPath("");
 80                 Daily daily = new Daily();
 81                 daily.Settxtwrong(errcode, paraUrlCoded,fpath);
 82                 success = false;
 83             }
 84             return success;
 85         }
 86
 87         /// <summary>
 88         /// 修改人员的方法
 89         /// </summary>
 90         /// <param name="userid">用户ID</param>
 91         /// <param name="username">用户名</param>
 92         /// <param name="mobile">手机号码</param>
 93         /// <param name="email">邮箱地址</param>
 94         /// <param name="gender">性别</param>
 95         /// <returns></returns>
 96         [WebMethod]
 97         public int Changepeople(string userid, string username, string mobile, string email, string gender)//修改人员信息的方法
 98         {
 99             //获取access token
100             string accesstoken = JudgeAndGetAccessToken();
101             if (gender == "男")
102             {
103                 gender = "1";
104             }
105             else
106             {
107                 if (gender == "女")
108                 {
109                     gender = "2";
110                 }
111                 else
112                 {
113                     gender = "";
114                 }
115             }
116             //推送消息给用户
117             string strURL = "https://qyapi.weixin.qq.com/cgi-bin/user/update?access_token=" + accesstoken;
118             //编码json字符串
119             string paraUrlCoded = "{\"userid\": \"" + userid + "\",\"name\": \"" + username + "\",\"department\": [4],\"mobile\": \"" + mobile + "\",\"gender\": \"" + gender + "\"}";
120             JObject obj = JObject.Parse(post(strURL, paraUrlCoded));
121             if (obj["errmsg"].ToString() == "updated")
122             {
123
124             }
125             else
126             {
127                 string errcode = obj["errcode"].ToString();
128                 Daily daily = new Daily();
129                 string fpath = Server.MapPath("");
130                 daily.Settxtwrong(errcode, paraUrlCoded,fpath);
131             }
132             return Convert.ToInt32(obj["errcode"].ToString());
133         }
134
135         /// <summary>
136         ///删除人员的方法
137         /// </summary>
138         /// <param name="id"></param>
139         /// <param name="username"></param>
140         /// <param name="mobile"></param>
141         /// <param name="email"></param>
142         /// <param name="gender"></param>
143         /// <returns></returns>
144         [WebMethod]
145         public int Removepeople(string id)//删除人员的方法
146         {
147             //获取access token
148             string accesstoken = JudgeAndGetAccessToken();
149             //推送消息给用户
150             string strURL = "https://qyapi.weixin.qq.com/cgi-bin/user/delete?access_token=" + accesstoken + "&userid=" + id + "";
151             JObject obj = JObject.Parse(get(strURL));
152             if (obj["errmsg"].ToString() == "deleted")
153             {
154
155             }
156             else
157             {
158                 string errcode = obj["errcode"].ToString();
159                 string fpath = Server.MapPath("");
160                 Daily daily = new Daily();
161                 daily.Settxtwrong(errcode,fpath);
162             }
163             return Convert.ToInt32(obj["errcode"].ToString());
164         }
165
166         /// <summary>
167         /// 邀请人员的方法
168         /// </summary>
169         /// <param name="id">人员ID</param>
170         /// <returns></returns>
171         [WebMethod]
172         public bool Invitepeople(string id)//邀请人员的方法
173         {
174             bool success = true;
175             //获取access token
176             string accesstoken = JudgeAndGetAccessToken();
177             //推送消息给用户
178             string strURL = "https://qyapi.weixin.qq.com/cgi-bin/invite/send?access_token=" + accesstoken;
179             string json = "{\"userid\":\"" + id + "\"}";
180             JObject obj = JObject.Parse(post(strURL, json));
181             if (obj["errmsg"].ToString() == "ok")
182             {
183                 success = true;
184             }
185             else
186             {
187                 string errcode = obj["errcode"].ToString();
188                 string fpath = Server.MapPath("");
189                 Daily daily = new Daily();
190                 daily.Settxtwrong(errcode,json,fpath);
191                 success = false;
192             }
193             return success;
194         }
195
196         /// <summary>
197         /// 通过微信接口获取accesstoken字符串
198         /// </summary>
199         /// <returns></returns>
200         private string GetAccessToken()
201         {
202             //读取程序集的配置文件
203             Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(System.Web.HttpContext.Current.Request.ApplicationPath);
204             string accesstoken = "";
205             string time = "";
206             //重新获取accesstoken
207             string CorpID = config.AppSettings.Settings["CorpID"].Value;
208             string Secret = config.AppSettings.Settings["Secret"].Value;
209             string strURL = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + CorpID + "&corpsecret=" + Secret + "";
210             string responseText = get(strURL);
211             //取出access token
212             JObject obj = JObject.Parse(responseText);
213             accesstoken = obj["access_token"].ToString();
214             time = DateTime.Now.ToString();
215             //存入到配置文件中
216             config.AppSettings.Settings.Remove("accesstoken");
217             config.AppSettings.Settings.Remove("time");
218             config.AppSettings.Settings.Add("accesstoken", accesstoken);
219             config.AppSettings.Settings.Add("time", time);
220             ConfigurationManager.RefreshSection("appSettings");//刷新
221             config.Save(ConfigurationSaveMode.Modified);
222             return accesstoken;
223         }//获取AccessToken
224
225         /// <summary>
226         /// 判断配置文件,获取accesstoken字符串
227         /// </summary>
228         /// <returns></returns>
229         private string JudgeAndGetAccessToken()//判断并获取AccessToken
230         {
231             //先判断配置文件中的access token是否过期,以及是否存在
232             string accesstoken;
233             string time;
234             if (ConfigurationManager.AppSettings["accesstoken"] == null || ConfigurationManager.AppSettings["accesstoken"] == "" || ConfigurationManager.AppSettings["time"] == null || ConfigurationManager.AppSettings["time"] == "")
235             {
236                 //重新获取
237                 accesstoken = GetAccessToken();
238             }
239             else
240             {
241                 time = ConfigurationManager.AppSettings["time"];
242                 //判断accesstoken是否过期
243                 DateTime dt = Convert.ToDateTime(time);
244                 DateTime dt1 = DateTime.Now;
245                 TimeSpan ts = dt1 - dt;
246                 if (ts.Days == 0)
247                 {
248                     int seconds = ts.Hours * 3600 + ts.Minutes * 60 + ts.Seconds;
249                     if (seconds > 5400)
250                     {
251                         //重新获取
252                         accesstoken = GetAccessToken();
253                     }
254                     else
255                     {
256                         accesstoken = ConfigurationManager.AppSettings["accesstoken"];
257                     }
258                 }
259                 else
260                 {
261                     //重新获取
262                     accesstoken = GetAccessToken();
263                 }
264             }
265             return accesstoken;
266         }
267
268         /// <summary>
269         /// 判断配置文件,获取accesstoken字符串
270         /// </summary>
271         /// <returns></returns>
272
273         /// <summary>
274         /// post数据通用方法
275         /// </summary>
276         /// <param name="strURL">要post到的URL</param>
277         /// <param name="paraUrlCoded">要post过去的字符串</param>
278         /// <returns></returns>
279         private string post(string strURL, string paraUrlCoded)//post数据通用方法
280         {
281             HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);
282             System.Net.HttpWebResponse response;
283             //Post请求方式
284             request.Method = "POST";
285             // 内容类型
286             request.ContentType = "application/x-www-form-urlencoded";
287             // 参数经过URL编码
288             byte[] payload;
289             //将URL编码后的字符串转化为字节
290             payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
291             //设置请求的 ContentLength
292             request.ContentLength = payload.Length;
293             //获得请 求流
294             System.IO.Stream writer = request.GetRequestStream();
295             //将请求参数写入流
296             writer.Write(payload, 0, payload.Length);
297             // 关闭请求流
298             writer.Close();
299             // 获得响应流
300             response = (System.Net.HttpWebResponse)request.GetResponse();
301             System.IO.StreamReader myreader = new System.IO.StreamReader(response.GetResponseStream(), Encoding.UTF8);
302             myreader = new System.IO.StreamReader(response.GetResponseStream(), Encoding.UTF8);
303             string responseText = myreader.ReadToEnd();
304             myreader.Close();
305             return responseText;
306         }
307
308         /// <summary>
309         /// get数据通用方法
310         /// </summary>
311         /// <param name="strURL">拼接好的链接</param>
312         /// <returns></returns>
313         private string get(string strURL)//get数据通用方法
314         {
315             string json = "";
316             System.Net.HttpWebRequest request;
317             // 创建一个HTTP请求
318             request = (HttpWebRequest)WebRequest.Create(strURL);
319             //request.Method="get";
320             System.Net.HttpWebResponse response;
321             response = (System.Net.HttpWebResponse)request.GetResponse();
322             System.IO.StreamReader myreader = new System.IO.StreamReader(response.GetResponseStream(), Encoding.UTF8);
323             json = myreader.ReadToEnd();
324             myreader.Close();
325             return json;
326         }
327
328         /// <summary>
329         /// 通过code得到id的代码
330         /// </summary>
331         /// <param name="code">在querystring中取到的code字符串</param>
332         /// <returns></returns>
333         [WebMethod]
334         public string GetId(string code)//通过code得到id的代码
335         {
336             string access_token = JudgeAndGetAccessToken();
337             string Url = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=" + access_token + "&code=" + code;
338             string json = get(Url);
339             //取出id
340             JObject obj = JObject.Parse(json);
341             string id = "";
342             try
343             {
344                 id = obj["UserId"].ToString();
345             }
346             catch
347             {
348                 //id = (string)obj["OpenId"];
349             }
350             return id;
351         }
352     }
时间: 2024-12-17 15:34:59

微信企业号开发部分代码的相关文章

[转载]微信企业号开发如何建立连接

连接将使你的企业号更具价值,你可以使用以下三种方式,连接你的企业号及企业应用: 1.企业应用调用企业号提供的接口,管理或查询企业号后台所管理的资源.或给成员发送消息等,以下称主动调用模式. 2.企业号把用户发送的消息或用户触发的事件推送给企业应用,由企业应用处理,以下称回调模式. 3.用户在微信中阅读企业应用下发的H5页面,该页面可以调用微信提供的原生接口,使用微信开放的终端能力,以下称JSAPI模式. 通过这三种连接方式的结合,你可以在企业号中建立功能强大的移动轻应用,并依托微信数亿活跃用户,

微信企业号开发之回调模式的接口开发

一.前言 微信企业号应用中,有两种模式,一种是普通模式,这种模式只能进行简单网页链接,以及发送固定的消息.为了可以让企业号的用户更好的与应用交互,微信提供了回调模式,这种回调模式的可以将用户发送给微信的信息,转发到用户提供的一个回调接口上,该接口解析用户发送过来的信息,解析后进行相应,而且回调模式中,可以调用的东西不少,扫码,图片,视频,地理位置信息等. 在应用的模式下,选择回调模式,之后,需要设置3个参数(1.回调接口URL:2.token:3.ASESKey),URL就是提供的回调接口,微信

Force.com微信企业号开发系列(一) - 启用二次验证

微信于9月份推出企业号后引起了业界不小的反响,许多企业都在思索企业号将如何影响企业的运营,从本文开始,我将详细阐述微信企业号开发的相关知识,而本文将着重介绍如何实现更高安全机制的二次验证. 申请企业体验号: 企业号顾名思义就是企业来申请的号,申请时就像申请服务号一样,需要提供各种组织证明文件,对广大开发者来说很难操作,好在腾讯公司也像服务号一样开通了体验号申请,留意企业体验号的有效期间非常短,只有90天(服务号测试账号有1年有效期),且如果企业体验号长期不使用还会收到腾讯公司的提前失效提醒邮件.

微信企业号开发之 企业号人员身份认证与开发

前言 这里完全可以链接一个登录页面,让用户输入用户名密码进行登录的...2333 但是,这样所就完全失去了微信企业号的意义,本来进入微信企业号的时候,就已经对人员身份进行认证了,你这里再让别人登录,不是显得多余么? 于是,需要考虑的是,如何获取微信企业号中用户的身份,以及将用户身份与自有系统进行关联. 一.建立企业应用并配置可信域名 在微信的管理界面里面,建立一个企业应用.建立的过程很简单,但是这里需要注意的是,建立完以后,一定要配置可信域名!!!!并且如果你不是使用的标准端口,一定也要把端口配

.net之微信企业号开发(二) 企业号人员身份认证与开发

前言 这里完全可以链接一个登录页面,让用户输入用户名密码进行登录的...2333 但是,这样所就完全失去了微信企业号的意义,本来进入微信企业号的时候,就已经对人员身份进行认证了,你这里再让别人登录,不是显得多余么? 于是,需要考虑的是,如何获取微信企业号中用户的身份,以及将用户身份与自有系统进行关联. 一.建立企业应用并配置可信域名 在微信的管理界面里面,建立一个企业应用.建立的过程很简单,但是这里需要注意的是,建立完以后,一定要配置可信域名!!!!并且如果你不是使用的标准端口,一定也要把端口配

微信企业号开发:微信考勤百度地图定位

之前在微信企业号开发:微信考勤中使用了百度地图的定位组件,但发现在部分手机上会出现定位失败的提示,于是有研究了一下百度地图.原来使用的Web组件百度不打算更新了,也是重新查了一下百度地图的其他API,还有一个JavaScript API大众版,于是试了试,没想到竟然解决了. 核心代码很简单: <div id="allmap"></div> <script type="text/javascript" src="http://a

微信企业号开发:启用回调模式

微信企业号开发如何启用回调模式?就是简单的登陆PC版微信,点击应用中心,选择需要应用,再点击回调模式启用? 似乎不是这么简单!! 可以看到核心的只有三个URL,Token,EncodingAESKey这三个参数可以随便填写吗?1URL可以随便填写吗? 可以肯定的是,不能随便填写.不信你可以试试.因为点击确定后微信会给这个URL发送信息.因此这个URL必须是外网可以访问的地址.而且后台还必须处理微信发送过来的信息.例如URL 是http://www.hao123.com/可以在外网方法,但点击保存

.net之微信企业号开发(三) 回调模式的接口开发

一.前言 微信企业号应用中,有两种模式,一种是普通模式,这种模式只能进行简单网页链接,以及发送固定的消息.为了可以让企业号的用户更好的与应用交互,微信提供了回调模式,这种回调模式的可以将用户发送给微信的信息,转发到用户提供的一个回调接口上,该接口解析用户发送过来的信息,解析后进行相应,而且回调模式中,可以调用的东西不少,扫码,图片,视频,地理位置信息等. 在应用的模式下,选择回调模式,之后,需要设置3个参数(1.回调接口URL:2.token:3.ASESKey),URL就是提供的回调接口,微信

微信企业号开发:获取AccessToken

微信企业号开发,需要调用微信企业号的相关接口,则必须使用AccessToken,但AccessToken需要corpid,corpsecret两个参数调用相关接口才能获取. 而且每一个接口都有一定的次数限制,当然获取AccessToken的接口也有这个限制.每一个AccessToken的有效期为7200秒,也就是两个小时,在有效期内调用接口,则自动续期.因此建议在获取到AccessToken后,保存在在某一个地方,等到快过期时在重新获取.其实AccessToken有点类似于web程序中的sess