微信调取扫码

5 篇文章 0 订阅
  1. 首先得到本地电脑的时间戳;

String timestamp = ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000).ToString();

  1. 随机获取16位的字符串;

例:string noncestr = CreateNoncestr();

public static String CreateNoncestr()

        {

            String chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

            String res = "";

            Random rd = new Random();

            for (int i = 0; i < 16; i++)

            {

                res += chars[rd.Next(chars.Length - 1)];

            }

            return res;

        }

  1. 接下来获取微信二维码的返回值:

string para = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?timestamp=" + timestamp + "&noncestr=" + noncestr + "&jsapi_ticket=" + ticket + "&url=" + url;

            string par = jd_dictsort(para.Split('?').GetValue(1).ToString());

            string signa = par.Substring(1, par.Length - 1);

            string signature = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(signa, "sha1");//MD5加密

  1. 返回token类

1OAuth_Ticket Ticket_Model = Get_ticket(ac_token);

string ticket = Ticket_Model.ticket;

2protected OAuth_Ticket Get_ticket(string ac_token)

        {

            string Str = GetJson("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + ac_token + "&type=jsapi");

 

            OAuth_Ticket OAuth_Ticket_Model = JsonHelper.ParseFromJson<OAuth_Ticket>(Str);

            return OAuth_Ticket_Model;

        }

3

            //获取微信回传的token;

            OAuth_Token Model = Get_token();  //获取token

            string ac_token = Model.access_token;

 

        protected OAuth_Token Get_token()

        {

            appid = "";

            appsecret = "";

            //获取微信回传的openid、access token

            string Str = GetJson("https://api.weixin.qq.com/cgi-bin/token?appid=" + appid + "&secret=" + appsecret + "&grant_type=client_credential");

            //微信回传的数据为Json格式,将Json格式转化成对象

            OAuth_Token Oauth_Token_Model = JsonHelper.ParseFromJson<OAuth_Token>(Str);

            return Oauth_Token_Model;

        }

 

        //访问微信url并返回微信信息

        protected string GetJson(string url)

        {

            WebClient wc = new WebClient();

            wc.Credentials = CredentialCache.DefaultCredentials;

            wc.Encoding = Encoding.UTF8;

            string returnText = wc.DownloadString(url);

 

            if (returnText.Contains("errcode"))

            {

                //可能发生错误

            }

            return returnText;

        }

 

        /// <summary>

        /// 将Json格式数据转化成对象

        /// </summary>

        public class JsonHelper

        {

            /// <summary> 

            /// 生成Json格式 

            /// </summary> 

            /// <typeparam name="T"></typeparam> 

            /// <param name="obj"></param> 

            /// <returns></returns> 

            public static string GetJson<T>(T obj)

            {

                DataContractJsonSerializer json = new DataContractJsonSerializer(obj.GetType());

                using (MemoryStream stream = new MemoryStream())

                {

                    json.WriteObject(stream, obj);

                    string szJson = Encoding.UTF8.GetString(stream.ToArray()); return szJson;

                }

            }

            /// <summary> 

            /// 获取Json的Model 

            /// </summary> 

            /// <typeparam name="T"></typeparam> 

            /// <param name="szJson"></param> 

            /// <returns></returns> 

            public static T ParseFromJson<T>(string szJson)

            {

                T obj = Activator.CreateInstance<T>();

                using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))

                {

                    DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());

                    return (T)serializer.ReadObject(ms);

                }

            }

        }

  1. 读取当前的链接:

      string url = Request.Url.ToString();

 

  1. 在javascript中通过上方所得到的“timestamp”、“noncestr”、“signature”和微信公众号的APPID;

 /*

* 注意:

* 1. 所有的JS接口只能在公众号绑定的域名下调用,公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。

* 2. 如果发现在 Android 不能分享自定义内容,请到官网下载最新的包覆盖安装,Android 自定义分享接口需升级至 6.0.2.58 版本及以上。

* 3. 完整 JS-SDK 文档地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html

*

* 如有问题请通过以下渠道反馈:

* 邮箱地址:weixin-open@qq.com

* 邮件主题:【微信JS-SDK反馈】具体问题

* 邮件内容说明:用简明的语言描述问题所在,并交代清楚遇到该问题的场景,可附上截屏图片,微信团队会尽快处理你的反馈。

*/

wx.config({

    debug: false,

    appId: "",

    timestamp: document.getElementById("timestamp_no").innerHTML,

    nonceStr: document.getElementById("nonceStr_no").innerHTML,

    signature: document.getElementById("signature_no").innerHTML,

    jsApiList: [

        'checkJsApi',

        'onMenuShareTimeline',

        'onMenuShareAppMessage',

        'onMenuShareQQ',

        'onMenuShareWeibo',

        'hideMenuItems',

        'showMenuItems',

        'hideAllNonBaseMenuItem',

        'showAllNonBaseMenuItem',

        'translateVoice',

        'startRecord',

        'stopRecord',

        'onRecordEnd',

        'playVoice',

        'pauseVoice',

        'stopVoice',

        'uploadVoice',

        'downloadVoice',

        'chooseImage',

        'previewImage',

        'uploadImage',

        'downloadImage',

        'getNetworkType',

        'openLocation',

        'getLocation',

        'hideOptionMenu',

        'showOptionMenu',

        'closeWindow',

        'scanQRCode',

        'chooseWXPay',

        'openProductSpecificView',

        'addCard',

        'chooseCard',

        'openCard'

    ]

});

 

得到扫码后返回的信息

Document.querySelector('#scanQRCode0').onclick = function () {

        wx.scanQRCode({

            needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,

            scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有

            success: function (res) {

                var boxres = res.resultStr; // 当needResult 为 1 时,扫码返回的结果

                var boxid = boxres.split(',')[0];

                var $group = document.querySelectorAll('.form-group input');

                $group[$group.length - 1].value = boxid;

            }

        });

};

注:返回显示在” .form-group input”文本中;

       document.querySelectorAll(‘’);只能读取class样式

document.querySelector('#scanQRCode1').onclick = function () {

        wx.scanQRCode({

            needResult: 1,

            desc: 'scanQRCode desc',

            success: function (res) {

                //                alert(JSON.stringify(res));

                //                alert(res.resultStr);

                var express_numall = res.resultStr;

                var express_num = express_numall.split(',')[0];

                window.location.href = "XXXXX.XXXX?code=" + express_num;

            }

        });

  };

注:返回带上扫码值跳入新的页面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值