微信 获取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}×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 = 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;
}
}
}
转载于:https://www.cnblogs.com/lonelyxmas/p/6346963.html
微信 获取wx.config 参数 基类相关推荐
- 微赞dataconfig.php,php生成微信jssdk wx.config参数,调用js接口
流程 : 服务端请求微信生成config相关参数 客户端ajax请求服务器获取参数 config.php $appid = 'wx8e66f8993d'; $appsecret = '42190267 ...
- php生成微信jssdk wx.config参数,调用js接口
流程 : 服务端请求微信生成config相关参数 客户端ajax请求服务器获取参数 config.php <?php $appid = 'wx8e66f8993d'; $appsecret = ...
- 使用javascript获取wx.config内部字段解决微信分享
背景 在微信分享开发的时候我们通常的流程是 <?phprequire_once "jssdk.php";$jssdk = new JSSDK("yourAppID& ...
- javascript获取wx.config内部字段解决微信分享
转自:http://www.jb51.net/article/80679.htm 背景 在微信分享开发的时候我们通常的流程是 <?php require_once "jssdk.php ...
- 配置 wx.config 参数
var pageUrl ={url:(window.location.href).split('#')[0] }$.ajax({url:"/get-sign"+"?act ...
- 微信开发:配置 wx.config 实现图像接口(详细配置 wx.config 接口)
前言 描述一下大概的应用场景,就是微信的移动端需要拍摄实时图像上传,然后传输到后台,由于我们需要的是直接可以显示的图片,所以要转换成 base 加密后的图片,然后放到 img 标签里进行展示 概述 ...
- 微信JSSDK分享接口中wx.config 出现invalid signature问题的解决办法
先看下面的JSP代码: String rand = StringUtil.getUUID(); //随机字符串 //String timestamp = Long.toString(new ...
- 微信分享:后端参数获取PHP实现
微信分享 1.微信后台配置 2.后端代码 3.前端代码weixin-share.html 文档:https://developers.weixin.qq.com/doc/offiaccount/OA_ ...
- uniappH5 使用JSSDK微信支付出现 wx.config is not a function (jweixin is not a function) -- uni-appH5 调用 微信支付
在 main.js 中 引入,在页面使用时 找不到 首先npm 安装一下 JSSDK npm install jweixin-module --save 引入jweixin <script> ...
最新文章
- linux iostat 查看磁盘io利用率
- win7 clr20r3程序终止_mscorsvw.exe是什么进程 win7系统怎么禁用mscorsvw.exe进程【禁用方法】...
- 特斯拉三季度生产23.8万辆 交付超24万辆
- SAP License:SAP顾问你算哪根葱?
- 5 种编程语言可能注定失败!
- [原创]:善用佳软(二)
- 印度人为什么立刀切菜_印度人的刀功有多厉害?看到一刀刮掉的鱼鳞和碎洋葱,我彻底服了...
- ​杨利伟:在《太空一日》:我没有看到长城,但祖国的各个省份我大都看到了...
- Qt解决连接https报错
- 运用阿里云地图实现经纬度转换为省市县
- HTML怎么给文本添加删除线?(代码教程)
- pr使用视频素材技巧
- 【翻译】通过GSoC、GSoD、LFX和Outreachy来庆祝CNCF实习的成功五周年
- SRM采购管理系统投标管理模块:阳光招采,助力建筑材料企业智慧采购
- 微营销实战demo coffee
- Python解压常见格式的压缩文件
- 使用 ESP32 + Python 实现在线人员入侵检测
- HTTP协议-教程(一)
- 数据结构(陈越、何钦铭)学习笔记
- 牛客24479 小睿睿的数列
热门文章
- python 播放声音_如何用Python播放声音?
- 【Pytorch神经网络实战案例】11 循环神经网络结构训练语言模型并进行简单预测
- 【Pytorch神经网络实战案例】08 识别黑白图中的服装图案(Fashion-MNIST)
- ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘
- 微型计算机中存储器分成哪几个等级?它们各有什么特点?用途如何?,《微机原理》复习思考题第十二章存储器.DOC...
- LeetCode 6061. 买钢笔和铅笔的方案数
- LeetCode 1859. 将句子排序
- LeetCode 1443. 收集树上所有苹果的最少时间(自底向上DFS)
- LeetCode 第 25 场双周赛(718/1832,前39.2%)
- LeetCode 538. 把二叉搜索树转换为累加树(逆中序 根右左)