14 9 2021

这里所有的内容都是从微信接口页面里面参考过来的,加上自己的实践,我在此总结一下步骤和过程,如果下面的内容,有问题,请联系 邮箱: wh_djj@163.com

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<T>(string json)
     {
         return JsonConvert.DeserializeObject<T>(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
{  
     /// <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&timestamp=1414587457&url="+url+"";
      //使用sha1加密这个字符串
      return Helper.MD5Helper.SHA1(string1);
  }
}

总结:这是所有的调用微信接口扫一扫功能,在网上看到别人说的,都没说明白,今天我把详细代码发出来,供大家参考,如有什么地方不懂,可以联系我

源码地址:http://download.csdn.net/download/u014479921/10175596

延伸阅读
  1. 时间转换大全