pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

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

這篇文章主要為大家詳細(xì)介紹了C#調(diào)用微信接口的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

  1.微信公眾平臺(tái)的appid

  2.微信公眾平臺(tái)的secret

  3..獲取tokenid

  4.獲取ticket

  5.生成簽名的隨機(jī)串

  6.生成簽名的時(shí)間戳

  7.生成簽名

具體內(nèi)容:

1.微信公眾平臺(tái)的appid

2.微信公眾平臺(tái)的secret

這兩者需要登錄到申請(qǐng)的微信公眾平臺(tái)中去獲取,建議寫(xiě)在配置文件中

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請(qǐng)求
      //這里是封裝的一個(gè)http請(qǐng)求的類(lèi)
      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的返回對(duì)象


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


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

/*tokenid保存方式說(shuō)明:
*可在數(shù)據(jù)庫(kù)中創(chuàng)建表:SysConfig(用戶(hù)存儲(chǔ)項(xiàng)目中的配置數(shù)據(jù))
* 字段:
* ConfigKey:用于查詢(xún)?cè)摋l數(shù)據(jù)的key,做為主鍵
* ConfigValue:存儲(chǔ)數(shù)據(jù)的值
* TypeName:該條配置數(shù)據(jù)的名稱(chēng)
* Description:說(shuō)明
* CreateTime:創(chuàng)建時(shí)間
* LastModifyTime:上次修改的時(shí)間
* AllowEdit:是否可編輯
* LastValue:上一次的值
* tokenid的有效時(shí)間是兩個(gè)小時(shí)=7200秒,每重新獲取一次就更新一次LastModifyTime的值,將LastModifyTime和當(dāng)前時(shí)間進(jìn)行比對(duì),如果小于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.生成簽名的隨機(jī)串


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

6.生成簽名的時(shí)間戳


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

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


/// <summary>
    /// 獲取調(diào)用微信接口用的SDKConfig
    /// </summary>
    /// <param name="url"></param>
    /// <returns>SDKConfig整個(gè)對(duì)象</returns>
    public static JsApiConfig GetJsSdkConfig(string url)
    {
      //獲取tokenid
      string access_token = GetWxTokenId();
      //獲取ticket
      string jsapi_ticket = GetTicket(access_token);
      //生成簽名的隨機(jī)串
      string noncestr = Guid.NewGuid().ToString().Replace("-", "");
      //生成簽名的時(shí)間戳
      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;


    }

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


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

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

請(qǐng)求的后臺(tái)代碼


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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持html5模板網(wǎng)。

【網(wǎng)站聲明】本站部分內(nèi)容來(lái)源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問(wèn)題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

這篇文章主要介紹了C# 將Access中以時(shí)間段條件查詢(xún)的數(shù)據(jù)添加到ListView中,需要的朋友可以參考下
這篇文章主要介紹了使用C#創(chuàng)建Windows服務(wù)的實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
這篇文章主要介紹了C#身份證識(shí)別相關(guān)技術(shù)詳解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
這篇文章主要為大家詳細(xì)介紹了C#中TCP粘包問(wèn)題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
這篇文章主要介紹了C#實(shí)現(xiàn)的海盜分金算法,結(jié)合具體實(shí)例形式分析了海盜分金算法的原理與C#相應(yīng)實(shí)現(xiàn)技巧,需要的朋友可以參考下
這篇文章主要為大家詳細(xì)介紹了C#操作INI配置文件示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
主站蜘蛛池模板: 一航网络-软件测评官网 | 工业硝酸钠,硝酸钠厂家-淄博「文海工贸」 | 定做大型恒温循环水浴槽-工业用不锈钢恒温水箱-大容量低温恒温水槽-常州精达仪器 | 粉碎机_塑料粉碎机_塑料破碎机厂家-星标机械 | 5nd音乐网|最新流行歌曲|MP3歌曲免费下载|好听的歌|音乐下载 免费听mp3音乐 | 北京浩云律师事务所-法律顾问_企业法务_律师顾问_公司顾问 | bkzzy在职研究生网 - 在职研究生招生信息咨询平台 | 南京蜂窝纸箱_南京木托盘_南京纸托盘-南京博恒包装有限公司 | 自进式锚杆-自钻式中空注浆锚杆-洛阳恒诺锚固锚杆生产厂家 | 手板-手板模型-手板厂-手板加工-生产厂家,[东莞创域模型] | 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | 中央空调温控器_风机盘管温控器_智能_液晶_三速开关面板-中央空调温控器厂家 | 杭州月嫂技术培训服务公司-催乳师培训中心报名费用-产后康复师培训机构-杭州优贝姆健康管理有限公司 | 动环监控_机房环境监控_DCIM_机房漏水检测-斯特纽| 芝麻黑-芝麻黑石材厂家-永峰石业 | 私人别墅家庭影院系统_家庭影院音响_家庭影院装修设计公司-邦牛影音 | 刮板输送机,粉尘加湿搅拌机,螺旋输送机,布袋除尘器 | 2025世界机器人大会_IC China_半导体展_集成电路博览会_智能制造展览网 | 微波萃取合成仪-电热消解器价格-北京安合美诚科学仪器有限公司 | 厂房出售_厂房仓库出租_写字楼招租_土地出售-中苣招商网-中苣招商网 | 2025黄道吉日查询、吉时查询、老黄历查询平台- 黄道吉日查询网 | 武汉不干胶印刷_标签设计印刷_不干胶标签印刷厂 - 武汉不干胶标签印刷厂家 | 电脑知识|软件|系统|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网 | 氢氧化钙设备, 氢氧化钙生产线-淄博惠琛工贸有限公司 | 可程式恒温恒湿试验箱|恒温恒湿箱|恒温恒湿试验箱|恒温恒湿老化试验箱|高低温试验箱价格报价-广东德瑞检测设备有限公司 | 美缝剂_美缝剂厂家_美缝剂加盟-地老板高端瓷砖美缝剂 | 北京网站建设首页,做网站选【优站网】,专注北京网站建设,北京网站推广,天津网站建设,天津网站推广,小程序,手机APP的开发。 | 电缆隧道在线监测-智慧配电站房-升压站在线监测-江苏久创电气科技有限公司 | 浙江富广阀门有限公司| 岩棉切条机厂家_玻璃棉裁条机_水泥基保温板设备-廊坊鹏恒机械 | 中药二氧化硫测定仪,食品二氧化硫测定仪|俊腾百科 | 不锈钢散热器,冷却翅片管散热器厂家-无锡市烨晟化工装备科技有限公司 | 团建-拓展-拓展培训-拓展训练-户外拓展训练基地[无锡劲途] | 污水处理设备-海普欧环保集团有限公司 | 洁净化验室净化工程_成都实验室装修设计施工_四川华锐净化公司 | 破碎机_上海破碎机_破碎机设备_破碎机厂家-上海山卓重工机械有限公司 | 碳钢法兰厂家,非标法兰,定制异型,法兰生产厂家-河北九瑞管道 | LED太阳能中国结|发光红灯笼|灯杆造型灯|节日灯|太阳能灯笼|LED路灯杆装饰造型灯-北京中海轩光电 | 茶叶百科网-茶叶知识与茶文化探讨分享平台 | 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 |