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);
}
}

微信扫码查看本文
发表评论