QQ泡沫乐园 · 免费提供游戏辅助,破解软件,活动资讯,喜欢记得收藏哦!
综合软件_线报活动_游戏辅助_最新电影_最优质的的辅助分享平台

之前公司下达了开发微信只一块的任务,我就去网上取了一番经

网络 2022-12-17 17:03

之前公司下达了开发陌陌只一块的任务,然后我就去网上取了一番经,可是觉得对于我这些陌陌开发的菜鸟来说,所须要的东西太多,太零乱了,然后整个人就懵逼了。

费了很长时间才将陌陌插口调用完成。所以呢,我整理了一下,调用陌陌插口前须要打算的内容。

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存贮在数据库中,所以在每次使用之前都要做判定处理

/*tokenid保存方法说明:

*可在数据库中创建表:SysConfig(用户储存项目中的配置数据)

* 字段:

* ConfigKey:用于查询该条数据的key,做为字段

* ConfigValue:存储数据的值

* TypeName:该条配置数据的名称

* Description:说明

* CreateTime:创建时间

* LastModifyTime:上次更改的时间

* AllowEdit:是否可编辑

* LastValue:上一次的值

* tokenid的有效时间是两个小时=7200秒,每重新获取一次就更新一次LastModifyTime的值,将LastModifyTime和当前时间进行比对,如果大于7200秒则可以不用再度获取,反之则须要再度从陌陌获取。

*/

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

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

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

上一篇:我,一辈子留在这里接受你我曾经的重复 下一篇:没有了