这里所有的内容都是从微信接口页面里面参考过来的,加上自己的实践,我在此总结一下步骤和过程,如果下面的内容,有问题,请联系 邮箱: [email protected]
1.微信接口网址:http://qydev.weixin.qq.com/wiki/index.php?title=%E5%BE%AE%E4%BF%A1JS-SDK%E6%8E%A5%E5%8F%A3#.E6.AD.A5.E9.AA.A4.E4.B8.80.EF.BC.9A.E5.BC.95.E5.85.A5JS.E6.96.87.E4.BB.B6
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 、这里需要提前写几个帮助类
4.2.1、使用get请求得到信息
public static 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;
}
4.2.2、这个帮助类是为了得到微信那边返回的Json数据,然后解析出来
public class JsonHelper
{
public static T DeserializeObject(string json)
{
return JsonConvert.DeserializeObject(json);
}
}
4.2.3、这个是 token类 ,命名为:AccessToken.cs
public class AccessToken
{
public string access_token { get; set; }
public string expires_in { get; set; }
}
4.2.4、这个是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; }
}
4.2.5、这个是sha1加密
public class SHA1Helper
{
///
/// 32位小写
///
///
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(json);
}
//这个得到Ticket,使用get请求
public static Access_ticket accessTicket()
{
AccessToken AccessToken = accessToken();
string json = HttpHelper.GetHtml(string.Format(url2, AccessToken.access_token));
return JsonHelper.DeserializeObject(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);
}
}
总结:这是所有的调用微信接口扫一扫功能,在网上看到别人说的,都没说明白,今天我把详细代码发出来,供大家参考,如有什么地方不懂,可以联系我
源码地址:http://download.csdn.net/download/u014479921/10175596