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<TokenResult>(content);
if (!obj.errcode.HasValue)
{
token = obj.access_token;
}
}
return token;
}
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; }
}
/// <summary>
/// 获取ticket
/// </summary>
/// <param name="token">获取到的tokenid</param>
/// <returns>strticket</returns>
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<JsApiTicket>(content);
return obj.ticket;
}
//生成签名的随机串
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));
/// <summary>
/// SDK生成签名
/// 注意:需要引用System.Security.dll
/// </summary>
/// <param name="str"></param>
/// <returns>str签名</returns>
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();
}
/// <summary>
/// 获取调用微信接口用的SDKConfig
/// </summary>
/// <param name="url"></param>
/// <returns>SDKConfig整个对象</returns>
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());
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有