1. 程式人生 > >我說我長的不帥,她們說我說謊,還打我。

我說我長的不帥,她們說我說謊,還打我。

這裡所有的內容都是從微信介面頁面裡面參考過來的,加上自己的實踐,我在此總結一下步驟和過程,如果下面的內容,有問題,請聯絡 郵箱: [email protected]

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

總結:這是所有的呼叫微信介面掃一掃功能,在網上看到別人說的,都沒說明白,今天我把詳細程式碼發出來,供大家參考,如有什麼地方不懂,可以聯絡我