$(function(){
varurl=location.href.split('#')[0];
vardate="url="+url;
//get中url指后台处理的url,生成签名返回给前端
$.get(url",date,function(data){
varda=$.parseJSON(data);
wx.config({
debug:false,//开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId:da.appid,//必填,公众号的唯一标识
timestamp:da.timeStamp,//必填,生成签名的时间戳
nonceStr:da.nonceStr,//必填,生成签名的随机串
signature:da.signature,//必填,签名,见附录1
jsApiList:["chooseImage","uploadImage","downloadImage"]//必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
wx.ready(function(){
//alert("wx.configsuccess.");
//config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});
wx.error(function(res){
alert("wx.configfailed.");
//config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,
//也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
});
})
})
varimages;
functionchooseImage(){
wx.chooseImage({
count:1,//默认9
sizeType:['original','compressed'],//可以指定是原图还是压缩图,默认二者都有
sourceType:['album','camera'],//可以指定来源是相册还是相机,默认二者都有
success:function(res){
varlocalIds=res.localIds;//返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
}
});
}
functionuploadImage(localId){
wx.uploadImage({
localId:localId,//需要上传的图片的本地ID,由chooseImage接口获得
isShowProgressTips:1,//默认为1,显示进度提示
success:function(res){
varserverId=res.serverId;//返回图片的服务器端ID
vardata="serverId="+serverId;
//get中url指后台处理的url,生成签名返回给前端
$.get("url",data,function(r){
if(r>0){
alert("成功");
}else
alert("系统异常!,联系管理员");
})
}
});
}
functionUpload(){
uploadImage(images);
}
//后端接收方法,生成签名的后台
[HttpGet]
publicActionResultXXXX(stringurl)
{
stringtimeStamp=getTimestamp();//时间
stringnonceStr=getNoncestr();//随机数
stringsignature=Weixinjsapi_ticket(timeStamp,nonceStr,url);
stringappid=appid;
Stringjson="{";
json+="\"timeStamp\":"+"\""+timeStamp+"\",";
json+="\"nonceStr\":"+"\""+nonceStr+"\",";
json+="\"signature\":"+"\""+signature+"\",";
json+="\"appid\":"+"\""+appid+"\"";
json+="}";
returnContent(json);
}
//后端接收方法,下载图片
[HttpGet]
publicActionResultXXXX(stringmediaId)
{
try{
if(mediaId!=null&&mediaId!=""){
xxxxx(图片的名称,mediaId);
returnContent("1");
}
}
catch(){}
returnContent("0");
}
///
///随机串
///
publicstaticstringgetNoncestr()
{
Randomrandom=newRandom();
returnMD5Util.GetMD5(random.Next(1000).ToString(),"GBK").ToLower().Replace("s","S");
}
///
///时间截,自1970年以来的秒数
///
publicstaticstringgetTimestamp()
{
TimeSpants=DateTime.UtcNow-newDateTime(1970,1,1,0,0,0,0);
returnConvert.ToInt64(ts.TotalSeconds).ToString();
}
///
///保存凭证
///
publicstaticstringAsscess{set;get;}
///
///jsp_api签名参数
///
publicstaticstringjsapi_ticket{set;get;}
///
///保存凭证时间
///
publicstaticDateTimeAsscess_Time{set;get;}
///
///保存jsp_api时间
///
publicstaticDateTimeJsp_Api_Time{set;get;}
///
///获取signature
///
///
publicstringWeixinjsapi_ticket(stringtimeStamp,stringnonceStr,stringurl)
{
if(Asscess==null)
{
stringtoken=GetToken(appid,secret);
Asscess=token;
Asscess_Time=DateTime.Now;
}
else
{
DateTimetime=DateTime.Now;
if((time-Asscess_Time).TotalSeconds>7000)
{
stringtoken=GetToken(appid,secret);
Asscess=token;
Asscess_Time=DateTime.Now;
}
}
if(jsapi_ticket==null)
{
jsapi_ticket=getjsapi_ticket(Asscess);
Jsp_Api_Time=DateTime.Now;
}
else{
DateTimetime=DateTime.Now;
if((time-Jsp_Api_Time).TotalSeconds>7000){
jsapi_ticket=getjsapi_ticket(Asscess);
Jsp_Api_Time=DateTime.Now;
}
}
stringstring1="jsapi_ticket="+jsapi_ticket+"&noncestr="+nonceStr+"×tamp="+timeStamp+"&url="+url;
stringsignature=sha1(string1);
returnsignature;
}
#region获取Token
///
///获取Token
///
publicstaticstringGetToken(stringappid,stringsecret)
{
varstrJson=HttpRequestutil.RequestUrl(string.Format("https://api./cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}",appid,secret),"get");
JavaScriptSerializerjson=newJavaScriptSerializer();
tokentk=json.Deserialize(strJson);
returntk.access_token;
}
///
///获取jsapi_ticket
///
///
publicstaticstringgetjsapi_ticket(stringAsscess){
varstrJson=RequestUrl(string.Format("https://api./cgi-bin/ticket/getticket?access_token={0}&type=jsapi",Asscess),"get");
JavaScriptSerializerjson=newJavaScriptSerializer();
tokentk=json.Deserialize(strJson);
returntk.ticket;
}
///
///请求Url,不发送数据
///Method发送类型(post,get)
///
publicstaticstringRequestUrl(stringurl,stringmethod)
{
//设置参数
HttpWebRequestrequest=WebRequest.Create(url)asHttpWebRequest;
CookieContainercookieContainer=newCookieContainer();
request.CookieContainer=cookieContainer;
request.AllowAutoRedirect=true;
request.Method=method;
request.ContentType="text/html";
request.Headers.Add("charset","utf-8");
//发送请求并获取相应回应数据
HttpWebResponseresponse=request.GetResponse()asHttpWebResponse;
//直到request.GetResponse()程序才开始向目标网页发送Post请求
StreamresponseStream=response.GetResponseStream();
StreamReadersr=newStreamReader(responseStream,Encoding.UTF8);
//返回结果网页(html)代码
stringcontent=sr.ReadToEnd();
returncontent;
}
[Serializable]
publicclasstoken
{
///
///凭证
///
publicstringaccess_token{set;get;}
///
///有效时间
///
publicstringexpires_in{set;get;}
///
///jsp_api签到凭证
///
publicstringticket{set;get;}
}
///
///SHA1加密
///
///
///
publicstaticstringsha1(stringstr)
{
returnSystem.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"sha1");
}
///
///下载微信头像图片
///
privatevoidxxxxx(stringPatnName,stringmedia)
{
if(Asscess==null)
{
stringtoken=GetToken(appid,secret);
Asscess=token;
Asscess_Time=DateTime.Now;
}
else
{
DateTimetime=DateTime.Now;
if((time-Asscess_Time).TotalSeconds>7000)
{
stringtoken=GetToken(appid,secret);
Asscess=token;
Asscess_Time=DateTime.Now;
}
}
stringurl=string.Format("https://api./cgi-bin/media/get?access_token={0}&media_id={1}",Asscess,media)
WebRequestrequest=WebRequest.Create(url);
WebResponseresponse=request.GetResponse();
Streamreader=response.GetResponseStream();
FileStreamwriter=newFileStream(GetPath(PatnName),FileMode.OpenOrCreate,FileAccess.Write);
byte[]buff=newbyte[512];
intc=0;//实际读取的字节数
while((c=reader.Read(buff,0,buff.Length))>0)
{
writer.Write(buff,0,c);
}
writer.Close();
writer.Dispose();
reader.Close();
reader.Dispose();
response.Close();
}
///
///保存图片地址
///
///
///
privatestringGetPath(stringfileName)
{
stringpath="";//写上地址
path=Server.MapPath(path);
if(!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
path+=fileName+".jpg";
returnpath;
}
publicconststringappid="";//公众号ID
publicconststringsecret="";//微信公众号的secret
相关代码地址:/qq-w/wechat.git