微信 获取wx.config 参数 基类

微信 获取wx.config 参数 基类
原文:微信 获取wx.config 参数 基类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Serialization;
using System.Text;
using System.Web.Caching;

namespace Saturn.TTS.WMS.WeiXiPortal.HelperService
{
public class WXToolsHelper
{
/// <summary>
/// 获取全局的access_token,程序缓存
/// </summary>
/// <param name="AppId">第三方用户唯一凭证</param>
/// <param name="AppSecret">第三方用户唯一凭证密钥,即appsecret</param>
/// <returns>得到的全局access_token</returns>
public string Getaccess_token(string AppId, string AppSecret)
{
try
{
//先查缓存数据
if (HttpContext.Current.Cache["access_token"] != null)
{
return HttpContext.Current.Cache["access_token"].ToString();
}
else
{
return Gettoken(AppId, AppSecret);
}
}
catch
{
return Gettoken(AppId, AppSecret);
}
}

/// <summary>
/// 获取全局的access_token
/// </summary>
/// <param name="AppId">第三方用户唯一凭证</param>
/// <param name="AppSecret">第三方用户唯一凭证密钥,即appsecret</param>
/// <returns>得到的全局access_token</returns>
public string Gettoken(string AppId, string AppSecret)
{
var client = new System.Net.WebClient();
client.Encoding = System.Text.Encoding.UTF8;
var url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", AppId, AppSecret);
var data = client.DownloadString(url);
var jss = new JavaScriptSerializer();
var access_tokenMsg = jss.Deserialize<Dictionary<string, object>>(data);
//放入缓存中
HttpContext.Current.Cache.Insert("access_token", access_tokenMsg["access_token"], null, DateTime.Now.AddSeconds(7100), TimeSpan.Zero, CacheItemPriority.Normal, null);

//清除jsapi_ticket缓存
HttpContext.Current.Cache.Remove("ticket");

//获取jsapi_ticket,为了同步
GetTicket(access_tokenMsg["access_token"].ToString());

return access_tokenMsg["access_token"].ToString();
}


/// <summary>
/// 获取jsapi_ticket,程序缓存
/// </summary>
/// <param name="access_token">全局的access_token</param>
/// <returns>得到的jsapi_ticket</returns>
public string GetJsapi_Ticket(string access_token)
{
try
{
//先查缓存数据
if (HttpContext.Current.Cache["ticket"] != null)
{
return HttpContext.Current.Cache["ticket"].ToString();
}
else
{
return GetTicket(access_token);
}
}
catch
{
return GetTicket(access_token);
}
}


/// <summary>
/// 获取jsapi_ticket
/// </summary>
/// <param name="access_token">全局的access_token</param>
/// <returns>得到的jsapi_ticket</returns>
public string GetTicket(string access_token)
{
var client = new System.Net.WebClient();
client.Encoding = System.Text.Encoding.UTF8;
var url = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi", access_token);
var data = client.DownloadString(url);
var jss = new JavaScriptSerializer();
var ticketMsg = jss.Deserialize<Dictionary<string, object>>(data);
try
{
//放入缓存中
HttpContext.Current.Cache.Insert("ticket", ticketMsg["ticket"], null, DateTime.Now.AddSeconds(7100), TimeSpan.Zero, CacheItemPriority.Normal, null);
return ticketMsg["ticket"].ToString();
}
catch (Exception ex)
{
return ex.Message;
}
}

/// <summary>
/// 微信权限签名的 sha1 算法
/// 签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同
/// </summary>
/// <param name="jsapi_ticket">获取到的jsapi_ticket</param>
/// <param name="noncestr">生成签名的随机串</param>
/// <param name="timestamp">生成签名的时间戳</param>
/// <param name="url">签名用的url必须是调用JS接口页面的完整URL</param>
/// <returns></returns>
public string GetShal(string jsapi_ticket, string noncestr, long timestamp, string url)
{
string strSha1 = string.Format("jsapi_ticket={0}&noncestr={1}&timestamp={2}&url={3}", jsapi_ticket, noncestr, timestamp, url);
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSha1, "sha1").ToLower();
}

/// <summary>
/// 微信权限签名( sha1 算法 )
/// 签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同
/// </summary>
/// <param name="AppId">第三方用户唯一凭证</param>
/// /// <param name="AppSecret">第三方用户唯一凭证密钥,即appsecret</param>
/// <param name="noncestr">生成签名的随机串</param>
/// <param name="timestamp">生成签名的时间戳</param>
/// <param name="url">签名用的url必须是调用JS接口页面的完整URL</param>
/// <returns></returns>
public string signature(string AppId, string AppSecret, string noncestr, long timestamp, string url)
{
string access_token = Getaccess_token(AppId, AppSecret); //获取全局的access_token
string jsapi_ticket = GetJsapi_Ticket(access_token); //获取jsapi_ticket

string strSha1 = string.Format("jsapi_ticket={0}&noncestr={1}&timestamp={2}&url={3}", jsapi_ticket, noncestr, timestamp, url);
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSha1, "sha1").ToLower();
}


/// <summary>
/// 微信权限签名( sha1 算法 )
/// 签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同
/// </summary>
/// <param name="AppId">第三方用户唯一凭证</param>
/// /// <param name="AppSecret">第三方用户唯一凭证密钥,即appsecret</param>
/// <param name="noncestr">生成签名的随机串</param>
/// <param name="timestamp">生成签名的时间戳</param>
/// <param name="url">签名用的url必须是调用JS接口页面的完整URL</param>
/// <returns></returns>
public void signatureOut(string AppId, string AppSecret, string noncestr, long timestamp, string url, out string access_token, out string jsapi_ticket, out string signature)
{
access_token = Getaccess_token(AppId, AppSecret); //获取全局的access_token

jsapi_ticket = GetJsapi_Ticket(access_token); //获取jsapi_ticket

string strSha1 = string.Format("jsapi_ticket={0}&noncestr={1}&timestamp={2}&url={3}", jsapi_ticket, noncestr, timestamp, url);

signature = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSha1, "sha1").ToLower();
}

private string[] strs = new string[]
{
"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"
};
/// <summary>
/// 创建随机字符串
/// </summary>
/// <returns></returns>
public string CreatenNonce_str()
{
Random r = new Random();
var sb = new StringBuilder();
var length = strs.Length;
for (int i = 0; i < 15; i++)
{
sb.Append(strs[r.Next(length - 1)]);
}
return sb.ToString();
}


/// <summary>
/// 创建时间戳
/// </summary>
/// <returns></returns>
public long CreatenTimestamp()
{
return (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
}


}
}

posted on 2017-01-24 13:44 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/6346963.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489177.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql的exp平方_MySQL EXP()用法及代码示例

MySQL中的EXP()函数用于将E提升为指定数字的幂。这里E(2.718281 ...)是自然对数的底数。用法:EXP(X)参数&#xff1a;此方法接受语法中上面提到并在下面描述的一个参数&#xff1a;X-一个指定的数字&#xff0c;将用作E的幂。返回值&#xff1a;它返回提高到给定数字X的幂的E。…

激荡十年:美国正在衰落和正在兴起的25个行业

来源&#xff1a;资本实验室 十年&#xff0c;在人类历史中只是非常短暂的一瞬。但是&#xff0c;十年时间又具备了足够的力量&#xff0c;能够对各行业的发展带来剧烈变革。在2009—2018这十年中&#xff0c;以互联网、移动互联网为依托的各种新兴技术层出不穷&#xff0c;不仅…

命令行参数怎么输入_太好用了!谷歌开源的命令行接口工具fire

大家使用最多的命令行工具应该是pip了&#xff0c;pip提供了很多的命令行参数和选项&#xff0c;我们在终端使用pip install --help命令可以查看install子命令的帮助文档。可以看到&#xff0c;除了最常用的pip install package命令&#xff0c;我们还可以附加很多可选选项来控…

Elasticsearch5中安装Elasticsearch-head插件

介绍 elasticsearch-head是一个用于管理Elasticsearch的web前端插件&#xff0c;搞过ES的同学应该都了解。该插件在es5中可以以独立服务的形式进行安装使用。本文将介绍如何操作。 相关链接&#xff1a;https://github.com/mobz/elasticsearch-headhttp://mobz.github.io/elast…

登录mysql一闪而过_解决MySQL 一闪而过的情况

winform中选择文件获取路径private void button1_Click(object sender, EventArgs e) { //此时弹出一个可以选择文件的窗体 OpenFileDialog fileDialog ...SQLite核心函数一览abs(X) abs(X)返回 X 的绝对值. Abs(X) returns NULL if X is NULL. Abs(X) return 0.0 if X is a s…

plsql最多可以存多少_银行内部透露:如果有10万块钱,可以都放在余额宝里吗?存银行是不是更好?...

阅读本文前&#xff0c;请您先点击上面的“蓝色字体”&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到最新文章了。每天都有分享。完全是免费订阅&#xff0c;请放心关注。声明&#xff1a;图文来源于网络&#xff0c;版权归原作者所有&#xff0c; 如有侵权请…

图解未来50年前沿科技趋势与22个预测

任何理论研究&#xff0c;必须具有符合未来发展趋势的预测&#xff0c;才能体现其可能的价值。近15年来&#xff0c;我们深入研究互联网结构的变化&#xff0c;提出在过去50年里&#xff0c;互联网从网状结构进化成为大脑模型是21世纪前沿科技爆发的根源&#xff0c;包括物联网…

centos8安装MySQL依赖_centos8安装mysql8

1&#xff0c;检查是否有mysql残留文件查找出安装的mysql软件包和依赖包rpm -pa | grep mysql依次删除yum remove mysql-xxx-xxx-查找出所用的配置文件find / -name mysql依次删除rm -rf /var/lib/mysql2&#xff0c;删除MariaDB的文件&#xff0c;装MySQL的话会和MariaDB的文件…

java format用法_java学习常用函数之日期时间函数

日期时间函数DATE_FORMAT(datetime ,fmt)和STR_TO_DATE(str, fmt)所需的日期模板使用NOW(),SYSDATE(),CURDATE(),CURTIME()获取当前时间SELECT CURTIME(),CURDATE(),NOW(),SYSDATE();DATEDIFF(date1,date2) 返回两个日期之间相差的天数SELECT DATEDIFF(CURDATE(),’2019-3-1′)…

NeurIPS 2019公布获奖论文!新增杰出新方向奖项,微软华裔研究员斩获经典论文...

来源&#xff1a;大数据文摘备受瞩目的NeurlPS 2019周日一早在温哥华拉开序幕&#xff0c;今天&#xff0c;组委会通过一篇博客公布了包括杰出论文奖、杰出新方向论文奖等五大类奖项。NeurIPS&#xff0c;全称神经信息处理系统大会(Conference and Workshop on Neural Informat…

Adobe Acrobat DC

DC: document cloud 【云服务】 但是Adobe document cloud包括&#xff1a; Acrobat DC, Adobe sign, 以及Web和移动应用程序。 参考&#xff1a; https://acrobat.adobe.com/cn/zh-Hans/acrobat.html https://helpx.adobe.com/cn/document-cloud/faq.html http://tech.163.co…

mongodb和mysql的对比_MongoDB和MySQL的区别

http://www.cnblogs.com/caihuafeng/p/5494336.htmlMongoDB(文档型数据库)&#xff1a;提供可扩展的高性能数据存储一、1、基于分布式文件存储2、高负载情况下添加更多节点&#xff0c;可以保证服务器性能3、将数据存储为一个文档二、比较1、稳定性2、索引&#xff0c;索引放在…

万字长文深度分析华为智能汽车战略

来源&#xff1a; 中信证券2019 年 4 月&#xff0c;华为首次以汽车 Tier1 的身份参加上海车展。2019 年 11 月&#xff0c;北汽新能源总经理郑刚加盟华为。2019 年 11 月&#xff0c;华为发布核心网自动驾驶白皮书。本文为中信证券团队的分析报告&#xff0c;全文超过 15000 字…

Mac下关闭Sublime Text 3的更新检查

操作如下&#xff1a; 注意&#xff1a;update_check的属性前后都要有一个逗号。 ,"update_check":false, 然后还需要一步&#xff0c;就是注册破解&#xff0c;在【Help】->【Enter License】 —– BEGIN LICENSE —– Michael Barnes Single User License EA7E-…

javascript小游戏_个人网站集成js小游戏《圈小猫》教程及源码

今天在某网站浏览帖子的时候&#xff0c;发现帖子被删除了&#xff0c;然后弹出了404页面&#xff0c;页面上集成了一个小游戏&#xff0c;小游戏长什么样子呢&#xff1f;看下面这个图&#xff01;第一步查看小游戏源码&#xff0c;发现这个小游戏完全是由JavaScript编写的&am…

阿里云数据库mysql 创建数据库服务器_如何使用mysql创建数据库服务器

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":6,"count":6}]},"card":[{"des":"云服务器 ECS(Elastic Compute Service)是一…

国家脑库:神经科学研究的基础设施

来源&#xff1a;科技日报这是一个医用冷藏柜&#xff0c;双门&#xff0c;内有搁架。架子上叠着一个个透明的盒子&#xff0c;放得有些拥挤。盒子外侧写着编号&#xff0c;再仔细看&#xff0c;泡在福尔马林溶液里的&#xff0c;就是你在电视上、在科普片里看过很多次的——人…

多商户商城源码_多商户小程序开发搭建?开达应用多商户入驻商城小程序制作教程...

多商户小程序如何搭建&#xff1f;多商户入驻商城小程序快读搭建教程多商户设置前言&#xff1a;多商户是配合商城主应用才能使用基础设置支持选择提现方式&#xff0c;多商户的用户在申请提现时使用客服图标(开启)商户距离排序(开启)商品上架审核(开启)(在多商户-->商品管理…

mysql8导出文件_windows下 Mysql 8.0.x 数据库简单的导出和导入!!!

1.首先需要进入到mysql安装目录下的bin目录&#xff0c;执行cmd进入命令窗口。2.导出(导出某个数据库&#xff0c;也可以针对某张表导出)2.1导出数据结构以及数据的命令&#xff1a;mysqldump -u root -p dbName > 想要导出的目录例如&#xff1a;mysqldump -u root -p bigd…

mysql数据库中的校对集

校对集就是数据比较的方式&#xff0c;共有三种格式&#xff1a; _bin&#xff1a;binary, 二进制比较, 区分大小写; _cs: case sensitive, 大小写敏感; _ci: case insensitice, 大小写不敏感; 查看数据库支持的所有校对集&#xff1a; show collation; 注意&#xff1a;校…