2.引入JS文件 http://res.wx.qq.com/open/js/jweixin-1.1.0.js
3.这里是微信开发给的接口代码,代码后面,我会具体讲解每一个属性是什么,怎么得到
wx.config({ debug: false, //是否调试,true,会弹窗 appId: '<%=appId%>', //得到这个东西,首先必须有一个公众号,或者企业号,如果已经拥有了,你可以就知道AppId在哪里了。 timestamp: 1414587457,//生成签名的时间戳,随机数,之后会用这个生成一个签名 nonceStr: 'Wm3WZYTPz0wzccnW',//生成签名的随机串,随机串,之后会用这个生成一个签名 signature: '<%=signature%>',//这个就是签名了,在步骤4,我会详细讲解 jsApiList: [ 'scanQRCode' //开启扫一扫功能,这里还可以添加更多的功能,比如微信支付 ] }); wx.ready(function () { //点击按钮,出现扫描界面 document.querySelector('#sm').onclick = function () { wx.scanQRCode({ desc: 'scanQRCode desc', needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果, scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有 success: function (res) { var url = res.resultStr; var tempArray = url.split(','); var tempNum = tempArray[1];//这个就是扫描后返回值扫描值 } }); }; });`
4.如何拿到签名
4.1、先找到自己的corpid和secret, corpid,必须有自己的公众号或者企业号,secret,这个需要在公众号里面,点击设置,在点击第二个选项,权限管理然后添加一个管理员(微信号),就会生成一个secret
4.2、写一个帮助类(也就是请求HTTP的),使用get请求得到信息
public string GetHtml(string tUrl) { string strResult; try { HttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create(tUrl); hwr.Timeout = 19600; HttpWebResponse hwrs = (HttpWebResponse)hwr.GetResponse(); Stream myStream = hwrs.GetResponseStream(); StreamReader sr = new StreamReader(myStream, Encoding.UTF8); StringBuilder sb = new StringBuilder(); while (-1 != sr.Peek()) { sb.Append(sr.ReadLine() + "\r\n"); } strResult = sb.ToString(); hwrs.Close(); } catch (Exception ee) { strResult = ee.Message; } return strResult; }
帮助类:这个帮助类是为了得到微信那边返回的Json数据,然后解析出来
public class JsonHelper { public static T DeserializeObject<T>(string json) { return JsonConvert.DeserializeObject<T>(json); } }
这个是 token实体类 ,命名为:AccessToken.cs
public class AccessToken { public string access_token { get; set; } public string expires_in { get; set; } }
这个是ticket 类,命名为:Access_ticket.cs
public class Access_ticket { public string errcode { get; set; } public string errmsg { get; set; } public string ticket { get; set; } public string expires_in { get; set; } }
这个是sha1加密
public class SHA1Helper { /// <summary> /// 32位小写 /// </summary> /// <returns></returns> public static string SHA1(string s) { s = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(s, "SHA1").ToString(); return s.ToLower(); } } public class WxApi { private static string corpid = "这个填写公众号的corpId"; //在公众号里面点击设置 private static string corpsecret = "这个填写公众号的secret"; //这个是用corpId和secret,得到token private static string url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}"; //通过得到的token,得到ticket private static string url2 = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token={0}"; //这个是得到token,使用get请求 public static AccessToken accessToken() { string json = HttpHelper.GetHtml(string.Format(url, corpid, corpsecret)); return JsonHelper.DeserializeObject<AccessToken>(json); } //这个得到Ticket,使用get请求 public static Access_ticket accessTicket() { AccessToken AccessToken = accessToken(); string json = HttpHelper.GetHtml(string.Format(url2, AccessToken.access_token)); return JsonHelper.DeserializeObject<Access_ticket>(json); } //获取签名 public static string sha1(string url) { Access_ticket Access_ticket = accessTicket(); //这个是所有得到的东西拼接成一个字符串,1.jsapi_ticket:上面得到的ticket 2.noncestr:这个是随机的字符串,必须和上面(3)的那个一样 3.timestamp:这个是随机的字符串,必须和上面(3)的那个一样, //4.url:地址一定要详细,比如:http://baidu.com/1.html 哪个页面需要调用 扫一扫,就使用哪个页面的地址 string string1 = "jsapi_ticket=" + Access_ticket.ticket + "&noncestr=Wm3WZYTPz0wzccnW×tamp=1414587457&url=" + url + ""; //使用sha1加密这个字符串 return Helper.MD5Helper.SHA1(string1); } }
微信扫码查看本文
发表评论