110,502
社区成员
发帖
与我相关
我的任务
分享
//这是获取access_token
public string GetAccessToken(string appid, string appsecret, HttpContext context)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
string accessToken = string.Empty;
string respText = string.Empty;
string url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appid, appsecret);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (Stream stream = response.GetResponseStream())
{
StreamReader sr = new StreamReader(stream, Encoding.Default);
respText = sr.ReadToEnd();
sr.Close();
}
Dictionary<string, object> dic = (Dictionary<string, object>)jss.DeserializeObject(respText);
accessToken = dic["access_token"].ToString();
//缓存AccessToken
context.Session["AccessToken"] = accessToken;
context.Session.Timeout = 7200;
return accessToken;
}
public string GetJsApiInfo(string appid, string appsecret, HttpContext context)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
string timestamp = TenpayUtil.getTimestamp();//生成签名时的时间戳
string nonceStr = TenpayUtil.getNoncestr();//随机字符串
//string url = "http://yskf.weixin.wangwo.net/storelist.aspx";
string url = context.Request.Url.AbsoluteUri.ToString().Split('#')[0];//当前地址
string jsapi_ticket = "";
string token = GetTokenSession(appid, appsecret, context);
if (context.Session["jsapi_ticket"] == null)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + token + "&type=jsapi");
request.Method = "GET";
string text = "";
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
Stream stream = response.GetResponseStream();
StreamReader sr = new StreamReader(stream);
text = sr.ReadToEnd();
sr.Close();
}
Dictionary<string, object> dic = (Dictionary<string, object>)jss.DeserializeObject(text);
jsapi_ticket = dic["ticket"].ToString();
//缓存jsapi_ticket
context.Session["jsapi_ticket"] = dic["ticket"].ToString();
context.Session.Timeout = 7200;
}
else
{
jsapi_ticket = context.Session["jsapi_ticket"].ToString();
}
string[] arrayList = { "jsapi_ticket=" + jsapi_ticket, "timestamp=" + timestamp, "noncestr=" + nonceStr, "url=" + url };
Array.Sort(arrayList);//按字典序进行排序
string signature = string.Join("&", arrayList);//串联成key1=value1&key2=value2...格式
signature = FormsAuthentication.HashPasswordForStoringInConfigFile(signature, "SHA1").ToLower();//sha1加密
//string json = "{\"appId\":\"" + appid + "\",\"timestamp\":\"" + timestamp + "\",\"nonceStr\":\"" + nonceStr + "\",\"signature\":\"" + signature + "\"}";
string json = "{\"jsapi_ticket\"=\"" + jsapi_ticket + "\",\"noncestr\"=\"" + nonceStr + "\",\"url\"=\"" + url + "\",\"timestamp\"=\"" + timestamp + "\",\"token\"=\"" + token + "\"}";
return json;
}