栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

C#调用微信接口的相关代码

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#调用微信接口的相关代码

调用微信接口前需要准备的内容。

  1.微信公众平台的appid

  2.微信公众平台的secret

  3..获取tokenid

  4.获取ticket

  5.生成签名的随机串

  6.生成签名的时间戳

  7.生成签名

具体内容:

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);
      //向上面的地址发起httpget请求
      //这里是封装的一个http请求的类
      string content = HttpHelper.HttpGet(url);
      if (!string.IsNullOrEmpty(content))
      {
 var obj = JsonConvert.DeserializeObject(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的次数是有限的,所以应该将获取到的tokenid储存起来,以便后续使用。我使用的方法是将tokenid存储在数据库中,所以在每次使用之前都要做判断处理

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

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

/// 
 /// 获取ticket
 /// 
 /// 获取到的tokenid
 /// strticket
 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(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}×tamp={2}&url={3}", jsapi_ticket, noncestr, timestamp, url));
/// 
    /// SDK生成签名
    /// 注意:需要引用System.Security.dll
    /// 
    /// 
    /// str签名
    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();
    }

最后可以将这些步骤封装在一个方法中

/// 
    /// 获取调用微信接口用的SDKConfig
    /// 
    /// 
    /// SDKConfig整个对象
    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}×tamp={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;


    }

页面上面调用我们上面配置好的内容

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

      wx.config({
 debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过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
      {
  //这里就是调用上面封装的方法
 JsSdkApi.jsapiConfig model = JsSdkApi.GetJsSdkConfig(url);
 return Json(model);
      }
      catch (Exception ex)
      {
 LogHelper.Error("获取wxconfig出现异常:" + ex.Message.Replace("'", """));
 return Json(new JsSdkApi.jsapiConfig());
      }
    }

至于需要的接口就去微信公众平台开发者文档中去查看啦。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/123337.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号