最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#調(diào)用微信接口的相關(guān)代碼

 更新時間:2017年07月03日 10:20:09   作者:小熊吉米  
這篇文章主要為大家詳細介紹了C#調(diào)用微信接口的相關(guān)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下

調(diào)用微信接口前需要準備的內(nèi)容。

  1.微信公眾平臺的appid

  2.微信公眾平臺的secret

  3..獲取tokenid

  4.獲取ticket

  5.生成簽名的隨機串

  6.生成簽名的時間戳

  7.生成簽名

具體內(nèi)容:

1.微信公眾平臺的appid

2.微信公眾平臺的secret

這兩者需要登錄到申請的微信公眾平臺中去獲取,建議寫在配置文件中

3.獲取tokenid

public static string GetWxTokenId()
    {
      string token = "";
      string url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appid, secret);
      //向上面的地址發(fā)起httpget請求
      //這里是封裝的一個http請求的類
      string content = HttpHelper.HttpGet(url);
      if (!string.IsNullOrEmpty(content))
      {
        var obj = JsonConvert.DeserializeObject<TokenResult>(content);
        if (!obj.errcode.HasValue)
        {
          token = obj.access_token;
        }
      }
      return token;
    }

這里是獲取微信tokenid的返回對象

private class TokenResult
    {
      public string access_token { get; set; }
      public string expires_in { get; set; }
      public int? errcode { get; set; }
      public string errmsg { get; set; }
    }


注意:在每個微信公眾號中獲取tokenid的次數(shù)是有限的,所以應(yīng)該將獲取到的tokenid儲存起來,以便后續(xù)使用。我使用的方法是將tokenid存儲在數(shù)據(jù)庫中,所以在每次使用之前都要做判斷處理

/*tokenid保存方式說明:
*可在數(shù)據(jù)庫中創(chuàng)建表:SysConfig(用戶存儲項目中的配置數(shù)據(jù))
* 字段:
* ConfigKey:用于查詢該條數(shù)據(jù)的key,做為主鍵
* ConfigValue:存儲數(shù)據(jù)的值
* TypeName:該條配置數(shù)據(jù)的名稱
* Description:說明
* CreateTime:創(chuàng)建時間
* LastModifyTime:上次修改的時間
* AllowEdit:是否可編輯
* LastValue:上一次的值
* tokenid的有效時間是兩個小時=7200秒,每重新獲取一次就更新一次LastModifyTime的值,將LastModifyTime和當前時間進行比對,如果小于7200秒則可以不用再次獲取,反之則需要再次從微信獲取。
*/

===================================================================================================

4.獲取ticket。需要上一步中獲取到的tokenid。

/// <summary>
 /// 獲取ticket
 /// </summary>
 /// <param name="token">獲取到的tokenid</param>
 /// <returns>strticket</returns>
 public static string GetTicket(string token)
 {
      string getticketurl = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi", token);
      string content = HttpHelper.HttpGet(getticketurl);
      JsApiTicket obj = JsonConvert.DeserializeObject<JsApiTicket>(content);
      return obj.ticket;
 }

5.生成簽名的隨機串

//生成簽名的隨機串
string noncestr = Guid.NewGuid().ToString().Replace("-", "");

6.生成簽名的時間戳

TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
string timestamp = Convert.ToInt64(ts.TotalSeconds).ToString();

7.生成簽名

string signature = MakeSha1Sign(string.Format("jsapi_ticket={0}&noncestr={1}&timestamp={2}&url={3}", jsapi_ticket, noncestr, timestamp, url));
/// <summary>
    /// SDK生成簽名
    /// 注意:需要引用System.Security.dll
    /// </summary>
    /// <param name="str"></param>
    /// <returns>str簽名</returns>
    public static string MakeSha1Sign(string str)
    {
      byte[] StrRes = Encoding.Default.GetBytes(str);
      HashAlgorithm iSHA = new SHA1CryptoServiceProvider();
      StrRes = iSHA.ComputeHash(StrRes);
      StringBuilder EnText = new StringBuilder();
      foreach (byte iByte in StrRes)
      {
        EnText.AppendFormat("{0:x2}", iByte);
      }
      return EnText.ToString();
    }

最后可以將這些步驟封裝在一個方法中

/// <summary>
    /// 獲取調(diào)用微信接口用的SDKConfig
    /// </summary>
    /// <param name="url"></param>
    /// <returns>SDKConfig整個對象</returns>
    public static JsApiConfig GetJsSdkConfig(string url)
    {
      //獲取tokenid
      string access_token = GetWxTokenId();
      //獲取ticket
      string jsapi_ticket = GetTicket(access_token);
      //生成簽名的隨機串
      string noncestr = Guid.NewGuid().ToString().Replace("-", "");
      //生成簽名的時間戳
      TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
      string timestamp = Convert.ToInt64(ts.TotalSeconds).ToString();
      //簽名
      string signature = MakeSha1Sign(string.Format("jsapi_ticket={0}&noncestr={1}&timestamp={2}&url={3}", jsapi_ticket, noncestr, timestamp, url));

      JsApiConfig config = new JsApiConfig()
      {
        appId = appid,
        debug = false,
        nonceStr = noncestr,
        timestamp = timestamp,
        signature = signature,
        ticket = jsapi_ticket,
        //需要使用的JS接口列表
        jsApiList = new string[] { "chooseImage", "previewImage", "uploadImage", "downloadImage" }

      };
      return config;


    }

頁面上面調(diào)用我們上面配置好的內(nèi)容

$.post('/WapCardInfo/GetSDKConfig', { url: location.href.split('#')[0] }, function (data) {
  var configObj = data;

      wx.config({
        debug: false, // 開啟調(diào)試模式,調(diào)用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數(shù),可以在pc端打開,參數(shù)信息會通過log打出,僅在pc端時才會打印。
        appId: configObj.appId, // 必填,公眾號的唯一標識
        timestamp: configObj.timestamp, // 必填,生成簽名的時間戳
        nonceStr: configObj.nonceStr, // 必填,生成簽名的隨機串
        signature: configObj.signature, // 必填,簽名,見附錄1
        jsApiList: [
                'checkJsApi',
                'onMenuShareTimeline',
                'onMenuShareAppMessage',
                'onMenuShareQQ',
                'onMenuShareWeibo',
                'onMenuShareQZone'
        ] // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2
      });
});

請求的后臺代碼

[HttpPost]
    public JsonResult GetSDKConfig(string url)
    {
      try
      {
  //這里就是調(diào)用上面封裝的方法
        JsSdkApi.jsapiConfig model = JsSdkApi.GetJsSdkConfig(url);
        return Json(model);
      }
      catch (Exception ex)
      {
        LogHelper.Error("獲取wxconfig出現(xiàn)異常:" + ex.Message.Replace("'", "\""));
        return Json(new JsSdkApi.jsapiConfig());
      }
    }

至于需要的接口就去微信公眾平臺開發(fā)者文檔中去查看啦。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C# HttpClient Post參數(shù)同時上傳文件的實現(xiàn)

    C# HttpClient Post參數(shù)同時上傳文件的實現(xiàn)

    這篇文章主要介紹了C# HttpClient Post參數(shù)同時上傳文件的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • C#通過Win32API設(shè)置客戶端系統(tǒng)時間的方法詳解

    C#通過Win32API設(shè)置客戶端系統(tǒng)時間的方法詳解

    在日常工作中,有時可能會需要獲取或修改客戶端電腦的系統(tǒng)時間,比如軟件設(shè)置了Licence有效期,本文以一個簡單的小例子,簡述如何通過C#獲取和設(shè)置客戶端電腦的系統(tǒng)時間,僅供學(xué)習(xí)分享使用,如有不足之處,還請指正,需要的朋友可以參考下
    2024-06-06
  • 找到整型陣列中最大值和最小值的幾種方法總結(jié)

    找到整型陣列中最大值和最小值的幾種方法總結(jié)

    下面小編就為大家分享一篇找到整型陣列中最大值和最小值的幾種方法總結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • WPF如何利用附加屬性修改ShowGridLines效果詳解

    WPF如何利用附加屬性修改ShowGridLines效果詳解

    這篇文章主要給大家介紹了關(guān)于WPF如何利用附加屬性修改ShowGridLines效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2018-04-04
  • 淺談C# 序列化與反序列化幾種格式的轉(zhuǎn)換

    淺談C# 序列化與反序列化幾種格式的轉(zhuǎn)換

    下面小編就為大家?guī)硪黄獪\談C# 序列化與反序列化幾種格式的轉(zhuǎn)換。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • C#調(diào)用C動態(tài)鏈接庫的實現(xiàn)

    C#調(diào)用C動態(tài)鏈接庫的實現(xiàn)

    動態(tài)鏈接庫是不能直接執(zhí)行的,也不能接收消息,它只是一個獨立的文件,本文主要介紹了C#調(diào)用C動態(tài)鏈接庫的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • C#中的值傳遞和引用傳遞詳細解析

    C#中的值傳遞和引用傳遞詳細解析

    本篇文章主要是對C#中的引用傳遞與值傳遞進行了詳細的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • C#實現(xiàn)數(shù)獨解法

    C#實現(xiàn)數(shù)獨解法

    這篇文章介紹了C#實現(xiàn)數(shù)獨解法的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#判斷一個字符串是否是數(shù)字或者含有某個數(shù)字的方法

    C#判斷一個字符串是否是數(shù)字或者含有某個數(shù)字的方法

    這篇文章主要介紹了C#判斷一個字符串是否是數(shù)字或者含有某個數(shù)字的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • C#通過指針實現(xiàn)快速拷貝的方法

    C#通過指針實現(xiàn)快速拷貝的方法

    這篇文章主要介紹了C#通過指針實現(xiàn)快速拷貝的方法,涉及C#指針的相關(guān)使用技巧,需要的朋友可以參考下
    2015-06-06

最新評論

宣城市| 高雄市| 宜兴市| 吴旗县| 墨玉县| 乐山市| 翼城县| 武城县| 昔阳县| 香格里拉县| 裕民县| 随州市| 南阳市| 乐业县| 兰州市| 星座| 岱山县| 黑河市| 汉寿县| 双桥区| 深圳市| 集安市| 佛坪县| 全椒县| 六盘水市| 古浪县| 双牌县| 兴宁市| 芮城县| 肥城市| 晋州市| 张家界市| 高台县| 萝北县| 鄯善县| 鄄城县| 江陵县| 共和县| 闵行区| 星子县| 基隆市|