C关于调用微信接口的代码
之前公司下达了开发微信只一块的任务,然后我就去网上取了一番经,可是感觉对于我这种微信开发的新手来说,所需要的东西太多,太凌乱了,然后整个人就懵逼了。
费了很长时间才将微信接口调用完成。所以呢,我整理了一下,调用微信接口前需要准备的内容。
1。微信公众平台的appid
2。微信公众平台的secret
3。。获取tokenid
4。获取ticket
5。生成签名的随机串
6。生成签名的时间戳
7。生成签名
1。微信公众平台的appid
2。微信公众平台的secret
这两者需要登录到申请的微信公众平台中去获取,建议写在配置文件中
3。获取tokenid
publicstaticstringGetWxTokenId(){stringtoken;stringurlstring。Format(https:api。weixin。qq。comcgibintoken?granttypeclientcredentialappid{0}secret{1},appid,secret);向上面的地址发起httpget请求这里是封装的一个http请求的类stringcontentHttpHelper。HttpGet(url);if(!string。IsNullOrEmpty(content)){varobjJsonConvert。DeserializeObjectTokenResult(content);if(!obj。errcode。HasValue){tokenobj。accesstoken;}}returntoken;}
这里是获取微信tokenid的返回对象
privateclassTokenResult{publicstringaccesstoken{get;set;}publicstringexpiresin{get;set;}publicint?errcode{get;set;}publicstringerrmsg{get;set;}}
注意:在每个微信公众号中获取tokenid的次数是有限的,所以应该将获取到的tokenid储存起来,以便后续使用。我使用的方法是将tokenid存储在数据库中,所以在每次使用之前都要做判断处理
tokenid保存方式说明:
可在数据库中创建表:SysConfig(用户存储项目中的配置数据)
字段:
ConfigKey:用于查询该条数据的key,做为主键
ConfigValue:存储数据的值
TypeName:该条配置数据的名称
Description:说明
CreateTime:创建时间
LastModifyTime:上次修改的时间
AllowEdit:是否可编辑
LastValue:上一次的值
tokenid的有效时间是两个小时7200秒,每重新获取一次就更新一次LastModifyTime的值,将LastModifyTime和当前时间进行比对,如果小于7200秒则可以不用再次获取,反之则需要再次从微信获取。
4。获取ticket。需要上一步中获取到的tokenid。
summary获取ticketsummaryparamnametoken获取到的tokenidparamreturnsstrticketreturnspublicstaticstringGetTicket(stringtoken){stringgetticketurlstring。Format(https:api。weixin。qq。comcgibinticketgetticket?accesstoken{0}typejsapi,token);stringcontentHttpHelper。HttpGet(getticketurl);JsApiTicketobjJsonConvert。DeserializeObjectJsApiTicket(content);returnobj。ticket;}
5。生成签名的随机串
生成签名的随机串stringnoncestrGuid。NewGuid()。ToString()。Replace(,);
6。生成签名的时间戳
TimeSpantsDateTime。UtcNownewDateTime(1970,1,1,0,0,0,0);stringtimestampConvert。ToInt64(ts。TotalSeconds)。ToString();
7。生成签名
stringsignatureMakeSha1Sign(string。Format(jsapiticket{0}noncestr{1}tamp{2}url{3},jsapiticket,noncestr,timestamp,url));summarySDK生成签名注意:需要引用System。Security。dllsummaryparamnamestrparamreturnsstr签名returnspublicstaticstringMakeSha1Sign(stringstr){byte〔〕StrResEncoding。Default。GetBytes(str);HashAlgorithmiSHAnewSHA1CryptoServiceProvider();StrResiSHA。ComputeHash(StrRes);StringBuilderEnTextnewStringBuilder();foreach(byteiByteinStrRes){EnText。AppendFormat({0:x2},iByte);}returnEnText。ToString();}
最后可以将这些步骤封装在一个方法中
summary获取调用微信接口用的SDKConfigsummaryparamnameurlparamreturnsSDKConfig整个对象returnspublicstaticJsApiConfigGetJsSdkConfig(stringurl){获取tokenidstringaccesstokenGetWxTokenId();获取ticketstringjsapiticketGetTicket(accesstoken);生成签名的随机串stringnoncestrGuid。NewGuid()。ToString()。Replace(,);生成签名的时间戳TimeSpantsDateTime。UtcNownewDateTime(1970,1,1,0,0,0,0);stringtimestampConvert。ToInt64(ts。TotalSeconds)。ToString();签名stringsignatureMakeSha1Sign(string。Format(jsapiticket{0}noncestr{1}tamp{2}url{3},jsapiticket,noncestr,timestamp,url));JsApiConfigconfignewJsApiConfig(){appIdappid,debugfalse,nonceStrnoncestr,timestamptimestamp,signaturesignature,ticketjsapiticket,需要使用的JS接口列表jsApiListnewstring〔〕{chooseImage,previewImage,uploadImage,downloadImage}};returnconfig;}
页面上面调用我们上面配置好的内容
。post(WapCardInfoGetSDKConfig,{url:location。href。split()〔0〕},function(data){varconfigObjdata;wx。config({debug:false,开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。appId:configObj。appId,必填,公众号的唯一标识timestamp:configObj。timestamp,必填,生成签名的时间戳nonceStr:configObj。nonceStr,必填,生成签名的随机串signature:configObj。signature,必填,签名,见附录1jsApiList:〔checkJsApi,onMenuShareTimeline,onMenuShareAppMessage,onMenuShareQQ,onMenuShareWeibo,onMenuShareQZone〕必填,需要使用的JS接口列表,所有JS接口列表见附录2});});
请求的后台代码
〔HttpPost〕publicJsonResultGetSDKConfig(stringurl){try{这里就是调用上面封装的方法JsSdkApi。jsapiConfigmodelJsSdkApi。GetJsSdkConfig(url);returnJson(model);}catch(Exceptionex){LogHelper。Error(获取wxconfig出现异常:ex。Message。Replace(,));returnJson(newJsSdkApi。jsapiConfig());}}
至于需要的接口就去微信公众平台开发者文档中去查看啦。
宝格丽男士香水一共有几款宝格丽男香怎么用宝格丽家的男士香水一直都还是很火的,而且几款男香的味道也都挺好闻的,在男士中很受欢迎,那么宝格丽家的男士香水一共有几款呢?宝格丽男士香水一共有几款宝格丽男香目前在国内售卖……
反转巴黎香水会变色吗怎么查反转巴黎是不是正品反转巴黎香水是一款非常著名的香水品牌,市面上也出现了很多这款香水的假货,所以各位小伙伴在购买到这款香水后一定要仔细分辨,以免买到假货。反转巴黎香水会变色吗正品的ysl反转……
易建联半场16分,新人13分全队最高,外援9中0广东的赵睿,胡铭轩和徐杰季前赛并没有出战,更多原因是参加了全运会需要休息,此役揭幕战应该会出场。作为11冠王广东来说,除了威姆斯第二阶段回归以外,马尚恢复良好,目前已能扣篮,大……
66岁周润发近照瘦成麻杆!穿身健美装晨跑,瘦过头更像小老头了说到健身衣或者健美装,在大家心目中只是一身运动单品,而且是穿不出门的衣服。不得不说现在的健美装健身衣,也经过了很大的改良,融入了现在大家追求的时尚感,打造出很多能穿出门的款式,……
反转巴黎香水是什么档次反转巴黎香水的寓意反转巴黎被称为斩男香水,不仅颜值高,味道也十分清甜。很多朋友比较好奇反转巴黎香水究竟是什么档次,下面小编为大家介绍一下。反转巴黎香水是什么档次反转巴黎是ysl圣罗兰的一款……
进展一维狄拉克材料的实验观测狄拉克材料拥有线性色散的狄拉克锥,能够表现出如背散射被抑制、超高载流子迁移率和量子自旋霍尔效应等诸多优异的量子特性,在新型的量子器件中具有重要的应用价值。石墨烯是首个在实……
简简单单腌制大蒜,农家的传统方法,一看就会三农高质量创作大赛第二季对于农村人,早餐吃馍馍和腌制咸菜是最好的简单的方法。配上一碗核桃做的油茶糊糊,即营养又美味。所以对做腌制咸菜我最在行。今天就分享一下最简单的大蒜腌制方法……
油菜花开迎春来1月31日在广西罗城仫佬族自治县四把镇石门村拍摄的油菜花田。新春伊始,广西、贵州、湖南等地的油菜花陆续开放,春意渐浓。新华社发(廖光福摄)1月29日,在广西罗……
隔离霜有美白的效果吗隔离霜可以遮瑕吗每次涂完之后在洗掉就感觉皮肤白了不少,隔离霜是有美白的效果吗,这么神奇。隔离霜可以美白吗?隔离霜可以遮瑕吗?隔离霜有美白的效果吗隔离霜只能从视觉上呈现出美白的效果,在卸完……
遮瑕用在粉底液前还是后遮瑕用在哪个步骤每个女生的脸上多少会有一些想遮住的瑕疵,比如,痘痘、雀斑、疤痕、痣等,有些瑕疵单单用粉底等之类的底妆产品是无法完美遮住的,所以就需要使用遮瑕产品,那么遮瑕用在粉底液前还是后?遮……
森系妆容教程清新森女系妆容我们每个人走的风格都不一样,适合的妆容也不一样,森女系一直是很火的一种风格,很多人女孩子都走森女系,森系讲究清新自然,下面就一起来学习森系妆容教程,清新森女系妆容。森系妆容教程……
公主切发型怎么自己剪公主切发型适合脸型都说发型觉得一个人的气质颜值,我们每个人适合的发型都不一眼,公主切发型是动漫里面最常见的发型,很多女生都很喜欢公主切发型,那么公主切发型怎么自己剪?公主切发型适合脸型。公主切发……