【代码】C#调取微信扫一扫接口

2021-09-23 09:02:28  阅读 2665 次 评论 0 条

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、写一个帮助类(也就是请求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&timestamp=1414587457&url=" + url + "";
            //使用sha1加密这个字符串
            return Helper.MD5Helper.SHA1(string1);
        }
    }



微信扫码查看本文
本文地址:https://www.yangguangdream.com/?id=2167
版权声明:本文为原创文章,版权归 编辑君 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?