微信 获取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(), 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(), 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}×tamp={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}×tamp={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}×tamp={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 = ; i < ; i++)
{
sb.Append(strs[r.Next(length - )]);
}
return sb.ToString();
} /// <summary>
/// 创建时间戳
/// </summary>
/// <returns></returns>
public long CreatenTimestamp()
{
return (DateTime.Now.ToUniversalTime().Ticks - ) / ;
} }
}
微信 获取wx.config 参数 基类的更多相关文章
- javascript获取wx.config内部字段解决微信分享
转自:http://www.jb51.net/article/80679.htm 专题推荐:js微信开发_脚本之家 http://www.jb51.net/Special/879.htm 背景在微信分 ...
- 使用javascript获取wx.config内部字段解决微信分享
背景 在微信分享开发的时候我们通常的流程是 <?php require_once "jssdk.php"; $jssdk = new JSSDK("yourAppI ...
- 微信企业号 jsSDK wx.config报invalid signature错误,导致api接口无法使用
最近在做公司定制化的时候发现一个问题,使用微信的语音API的时候微信报错,错误信息为:the permission value is offline verifying 但是诡异的是:同样的代码在我们 ...
- 调用微信内置的方法及wx.config的配置问题
首先请看网址: https://www.w3cschool.cn/weixinkaifawendang/h8ap1qe5.html 重点说下怎么配置wx.config(为了安全,所有的参数都在服务端获 ...
- spring aspect获取抽象基类日志
在实际的项目开发过程中我们其实封装了很多的类似BaseService.BaseDao等的基类,然后在切日志的时候我们一般是指向继承改抽象基类的实现类的,这时候我们就会出现无法切出调用抽象基类方法的日志 ...
- 背水一战 Windows 10 (67) - 控件(控件基类): DependencyObject - CoreDispatcher, 依赖属性的设置与获取, 依赖属性的变化回调
[源码下载] 背水一战 Windows 10 (67) - 控件(控件基类): DependencyObject - CoreDispatcher, 依赖属性的设置与获取, 依赖属性的变化回调 作者: ...
- 【TP3.2.3】微信网页授权--基类
非常好用的微信授权 基类:其他的微信权限类都可以继承至该类: <?php namespace Wechat\Controller; use Think\Controller; //微信接口基础类 ...
- 微信分享图标设置,以及wx.config配置
最近公司要求我做一个关于页面分享微信显示小图和描述的功能,由于之前没有做过,所以说是从零开始,看jssdk说明文档,网上搜索各种资料,甚至连三四年前的内容都搜索出来了,也试过以前的简单方法,包括在页面 ...
- 微信JS-SDK接口上传图片以及wx.config的配置
最近做的微信网页要实现一个上传图片的功能,倒腾了半天终于搞好了,具体的步骤可以查看微信官方文档https://developers.weixin.qq.com/doc/offiaccount/OA_W ...
随机推荐
- linux中如何对一个文件的内容进行处理,文件中每行有多个字段的值,中间用空格分隔开?
需求描述: 今天在帮同事看个需求,将操作系统上的文件进行修改名字,改为特定的名字,所以呢,就先把这些原名字及对应的新名字关系放到了一个文本中,对于这个文本执行循环. 文件格式如下: .00000005 ...
- windows 环境下 ping 加时间戳 记日志
在c盘下面新建文件 ping.vbs 在 ping.vbs中输入代码如下: Dim args, flag, unsuccOut args="" otherout="&qu ...
- [Scikit-learn] 1.4 Support Vector Machines - Linear Classification
Outline: 作为一种典型的应用升维的方法,内容比较多,自带体系,以李航的书为主,分篇学习. 函数间隔和几何间隔 最大间隔 凸最优化问题 凸二次规划问题 线性支持向量机和软间隔最大化 添加的约束很 ...
- C#客户端嵌入Chrome浏览器的实现
https://blog.csdn.net/lanwilliam/article/details/79639823 客户端软件,也就是传统的Winform软件,在很多时候是很好用的.因为在做一些打印. ...
- Dubbo -- 系统学习 笔记 -- 依赖
Dubbo -- 系统学习 笔记 -- 目录 依赖 必需依赖 缺省依赖 可选依赖 依赖 必需依赖 JDK1.5+ 理论上Dubbo可以只依赖JDK,不依赖于任何三方库运行,只需配置使用JDK相关实现策 ...
- tomcat 的 server.xml配置文件
tomcat的配置文件在其安装后生成的conf目录下,其中主配置文件便是conf下的server.xml文件. server.xml文件由server->service->engine-& ...
- 关于MySQL数据库
MySQL最流行的关系型数据库管理系统 MySQL官网:http://www.mysql.com MySQL是WEB应用方面最好的RDBMS应用软件之一 RDBMS:Relational Databa ...
- 【代码审计】DouPHP_v1.3代码执行漏洞分析
0x00 环境准备 DouPHP官网:http://www.douco.com/ 程序源码下载:http://down.douco.com/DouPHP_1.3_Release_20171002. ...
- 常见微信小程序开发工具
图标: 1.iconfont图标库:http://www.iconfont.cn/home/index?spm=a313x.7781069.1998910419.2
- $.format,jquery.format 使用说明
为jquery添加 format 功能 $.format = function (source, params) { if (arguments.length == 1) return functi ...