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存储在数据库中,所以在每次使用之前都要做判断处理
/*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()); } }
至于需要的接口就去微信公众平台开发者文档中去查看啦。
卤素氙气LED各有什么优劣势?汽车大灯哪种好?卤素大灯特点便宜色温低穿透力强光线暗寿命短氙气大灯特点制造成本高色温高亮度高使用寿命长LED大灯特点制造成本更高色温高亮度高使用寿命超长三种灯源的特点如上所述,我们
手机一晚上都在充电,没拔充电器,还放在枕头边,有没有啥问题?随心所欲,想拔才拔出啥问题,就寻卖家。卖家不认,就换品牌如此操作,随便买啥。倒逼厂家,必需上佳如有怠慢,休怨买家!没有问题的,我多少年都是这样充电的木有问题。自从有手机充电每天如此
机械键盘到底有什么好?为什么那么多人喜欢机械键盘?个人感觉机械键盘按键感觉舒服,并且打游戏时间长了的话相比普通键盘不容易累我有台式机也有笔记本,我丝毫不觉得笔记本键盘有什么好,我也不觉得机械键盘有什么好,都一样,没区别。我不觉得机
华为和联想两家企业,对比来看如何评价?我找个,不同的比较方向一个是民族企业代表,一个是国有资产变外国企业的代表捂脸标题就是对华为最大的侮辱!一个是民族企业,一个是买办公司。一个科技公司,一个组装厂,怎么比!一个是高科技
企业文件防泄密,有什么好的方案分享吗?使用云桌面,然后外网权限进行管理,这样就无法获取。有详细需求可继续沟通。以上的问题通过安装iMonitorEAM软件可以解决。iMonitorEAM的文件防护分为三种方式1禁用US
互联网大佬谁编程排第一?周鸿祎我应该可以排到前三名10月24日是程序员节。在这一天,360集团创始人周鸿祎在社交平台发布动态为程序员点赞。周鸿祎表示,未来,世界是架构在软件之上,是数字化的世界,每一个程序员都承担着重要的使命,用技
2021。10。24区块链晚讯1。数据CME比特币期货未平仓量突破50亿美元。2。XRPL开发人员现可参与第二轮XRPL赠款。3。Solana链上追踪工具SonarWatch完成融资,SolanaCapital
有什么软件可以把照片变成手绘?当然,在开始之前我们需要一款美图秀秀图1这样一张具有艺术感的素描画只要三步就可以搞定了哦,跟着小编一起来吧1在美图秀秀软件下打开待处理的照片,进入美化菜单下,选择基础分类,点击锐化
比较好用的写作软件有哪些好的推荐?电脑比较好的写作软件其实很多,我觉得你问的应该是写作的应用吧,可以自动保存的那种。一般情况下,很多朋友喜欢在word上编辑好,然后一键复制到其他软件上面,节省时间,因为word上的
geekbech5性能测试欢迎评论补充geekbech5性能测试历代型号单核多核M1Max单核1745分,多核12422分(10核心,64GB内存)M1Pro单核1707分,多核11030分(10核心,32GB内存)M
查询苹果电脑保修提示购买日期未验证一直以来苹果的电脑,手机,单反,平板耳机等各种数码产品,一直因为其外观设计质量口碑等众多因素,深得人们的喜爱,这其中尤其体现在年轻人当中。人们愿意花更多的金钱来购买苹果的产品,甚至
你用过的手机哪个是最满意的?哪个最不满意的?关于手机问题吗,之要能使的注,基本上不出毛病,我是一个老百姓,我因为都很好,因为我是一个没有钱的农民人,我也不太了解那一种手机最好使。很抱歉,谢谢吧。,,,刚买的Tx手机,充电一夜
现在哪款手机的电池耐用?目前有哪款的手机续航不错的?如果不考虑其他方面的因素,只考虑续航的话当属vivoZ6了。vivoZ6虽然是一款5G手机,但是凭借着超大的电池低功耗的处理器和系统的省电优化,续航实力
为什么华为4G手机卖五千照样有人买账,小米什么时候能做到?other不碰瓷活不下来了小米不用做到,不管卖五百还是卖五千,小米只卖超值的产品,把垃圾卖出天价不符合小米的价值观。说起来有点讽刺,华为在2019年的时候推广5G最积极,也是5G手
跑分双破百万!骁龙天玑,一大波新机即将发布今年手机市场变化多样,其中给人印象最深的要数骁龙888大火龙以及苹果十三香了。在其之后,天玑9000处理器爆出安兔兔跑分超百万!作为最大的竞争对手,骁龙也相继爆出即将发布的CPU骁
Windows自带的防火墙就够了,为何很多人安装其他杀毒软件?我用的是Win10系统,这个Windows自带的防火墙,也叫反间谍软件Defender。这个防火墙确实够用。但是,自从使用WindowsXP以来,就用上360杀毒软件,因为它是免费
京东plus会员好用还是天猫88会员好用?有懂的吗?嗯,不邀自来!这个没有绝对的说法,因为现在网友们就已经分成了2派,有的支持刘强东,有的则支持马云。你说支持刘强东的,他会跑去买天猫的88VIP会员吗?显然绝大多数都没有这个可能,只
沐浴问题终结者来了!华帝零冷水JW6i成功进击年轻市场冷空气到货,南方也进入了低温模式,每到这时洗澡就成了一件需要克服的事。相信大家都有相似的经历天寒地冻,在浴室里苦等花洒出热水,还要小心水温骤降,真是让人有苦说不出。正是因为同一种痛
新支付方式来了,各大银行都支持,安全性高转账也免费引言我国的支付方式经历多重变革,人们的生活也越来越便利,随之而来的便是担心财富安全。为此,新的支付方式将全面解决大家的后顾之忧。你听说过数字货币吗?可能上了年纪的人会摇摇头,新潮的
为什么苹果手机一直不提高摄像头像素?苹果公司一直不提升手机像素,是因为对自己公司的产品充分自信,觉得苹果手机像素1200完全就足够能拍出高质量的照片和视频。那么苹果为什么坚持使用1200万像素的摄像头呢?首先一个原因
柳传志的结局将会是如何的?如果仅从目前的这些披露出来的事情来看,他们不会有什么事情。任何事情不能单独拿出来说,也不能脱离当时的大环境来说。如同你三岁的时候穿的衣服,放在十年后小了,你不能说当时买错了。这或许
在成功人士中,是不是天蝎座居多?不不不天蝎座心机太重只能短暂的成功!最终能成功的一定是射手座多。因为人品好不玩脑筋只用心大笑大笑大笑作揖作揖作揖在十二星座各方面的排名中,天蝎是属于综合能力较强的一个星座,各领域里