微信支付图片上传java_微信开发-----微信公众号调用微信上传图片接口

$(function () {

var url = location.href.split('#')[0];

var date = "url=" + url;

//get中url指后台处理的url,生成签名返回给前端

$.get(url",date, function (data) {

var da = $.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.config success.");

// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。

});

wx.error(function (res) {

alert("wx.config failed.");

// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,

// 也可以在返回的res参数中查看,对于SPA可以在这里更新签名。

});

})

})

var images;

function chooseImage() {

wx.chooseImage({

count: 1, // 默认9

sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有

sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有

success: function (res) {

var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片

}

});

}

function uploadImage(localId) {

wx.uploadImage({

localId: localId, // 需要上传的图片的本地ID,由chooseImage接口获得

isShowProgressTips: 1, // 默认为1,显示进度提示

success: function (res) {

var serverId = res.serverId; // 返回图片的服务器端ID

var data="serverId="+serverId;

//get中url指后台处理的url,生成签名返回给前端

$.get("url",data,function(r){

if(r>0){

alert("成功");

}else

alert("系统异常!,联系管理员");

})

}

});

}

function Upload(){

uploadImage(images);

}

//后端接收方法,生成签名的后台

[HttpGet]

public ActionResult XXXX(string url)

{

string timeStamp = getTimestamp();//时间

string nonceStr = getNoncestr();//随机数

string signature = Weixinjsapi_ticket(timeStamp, nonceStr, url);

string appid = appid;

String json = "{";

json += "\"timeStamp\":" + "\"" + timeStamp + "\",";

json += "\"nonceStr\":" + "\"" + nonceStr + "\",";

json += "\"signature\":" + "\"" + signature + "\",";

json += "\"appid\":" + "\"" + appid + "\"";

json += "}";

return Content(json);

}

//后端接收方法,下载图片

[HttpGet]

public ActionResult XXXX(string mediaId)

{

try{

if(mediaId!=null&&mediaId!=""){

xxxxx(图片的名称,mediaId);

return Content("1");

}

}

catch(){}

return Content("0");

}

/// 

/// 随机串

/// 

public static string getNoncestr()

{

Random random = new Random();

return MD5Util.GetMD5(random.Next(1000).ToString(), "GBK").ToLower().Replace("s", "S");

}

/// 

/// 时间截,自1970年以来的秒数

/// 

public static string getTimestamp()

{

TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);

return Convert.ToInt64(ts.TotalSeconds).ToString();

}

/// 

/// 保存凭证

/// 

public static string Asscess { set; get; }

/// 

/// jsp_api 签名参数

/// 

public static string jsapi_ticket{set;get;}

/// 

/// 保存凭证时间

/// 

public static DateTime Asscess_Time { set; get; }

/// 

/// 保存jsp_api时间

/// 

public static DateTime Jsp_Api_Time { set; get; }

/// 

/// 获取signature

/// 

/// 

public string Weixinjsapi_ticket(string  timeStamp, string nonceStr,string url)

{

if (Asscess == null)

{

string token = GetToken(appid, secret);

Asscess = token;

Asscess_Time = DateTime.Now;

}

else

{

DateTime time = DateTime.Now;

if ((time - Asscess_Time).TotalSeconds > 7000)

{

string token =GetToken(appid, secret);

Asscess = token;

Asscess_Time = DateTime.Now;

}

}

if (jsapi_ticket == null)

{

jsapi_ticket = getjsapi_ticket(Asscess);

Jsp_Api_Time = DateTime.Now;

}

else {

DateTime time = DateTime.Now;

if ((time - Jsp_Api_Time).TotalSeconds > 7000) {

jsapi_ticket = getjsapi_ticket(Asscess);

Jsp_Api_Time = DateTime.Now;

}

}

string string1 = "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + nonceStr + "&timestamp=" + timeStamp + "&url="+url;

string signature = sha1(string1);

return signature;

}

#region 获取Token

/// 

/// 获取Token

/// 

public static string GetToken(string appid, string secret)

{

var strJson = HttpRequestutil.RequestUrl(string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appid, secret),"get");

JavaScriptSerializer json = new JavaScriptSerializer();

token tk = json.Deserialize(strJson);

return tk.access_token;

}

/// 

/// 获取jsapi_ticket

/// 

/// 

public static string getjsapi_ticket(string Asscess) {

var strJson = RequestUrl(string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi", Asscess), "get");

JavaScriptSerializer json = new JavaScriptSerializer();

token tk = json.Deserialize(strJson);

return tk.ticket;

}

/// 

/// 请求Url,不发送数据

///  Method  发送类型(post,get)

/// 

public static string RequestUrl(string url, string method)

{

// 设置参数

HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;

CookieContainer cookieContainer = new CookieContainer();

request.CookieContainer = cookieContainer;

request.AllowAutoRedirect = true;

request.Method = method;

request.ContentType = "text/html";

request.Headers.Add("charset", "utf-8");

//发送请求并获取相应回应数据

HttpWebResponse response = request.GetResponse() as HttpWebResponse;

//直到request.GetResponse()程序才开始向目标网页发送Post请求

Stream responseStream = response.GetResponseStream();

StreamReader sr = new StreamReader(responseStream, Encoding.UTF8);

//返回结果网页(html)代码

string content = sr.ReadToEnd();

return content;

}

[Serializable]

public class token

{

/// 

/// 凭证

/// 

public string access_token { set; get; }

/// 

/// 有效时间

/// 

public string expires_in { set; get; }

/// 

/// jsp_api签到凭证

/// 

public string ticket { set; get; }

}

/// 

/// SHA1加密

/// 

/// 

/// 

public static string sha1(string str)

{

return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "sha1");

}

/// 

/// 下载微信头像图片

/// 

private void xxxxx(string PatnName,string media)

{

if (Asscess == null)

{

string token = GetToken(appid, secret);

Asscess = token;

Asscess_Time = DateTime.Now;

}

else

{

DateTime time = DateTime.Now;

if ((time - Asscess_Time).TotalSeconds > 7000)

{

string token =GetToken(appid, secret);

Asscess = token;

Asscess_Time = DateTime.Now;

}

}

string   url = string.Format("https://api.weixin.qq.com/cgi-bin/media/get?access_token={0}&media_id={1}", Asscess , media)

WebRequest request = WebRequest.Create(url);

WebResponse response = request.GetResponse();

Stream reader = response.GetResponseStream();

FileStream writer = new FileStream(GetPath(PatnName), FileMode.OpenOrCreate, FileAccess.Write);

byte[] buff = new byte[512];

int c = 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();

}

/// 

/// 保存图片地址

/// 

/// 

/// 

private string GetPath(string fileName)

{

string path = "";//写上地址

path = Server.MapPath(path);

if (!Directory.Exists(path))

{

Directory.CreateDirectory(path);

}

path += fileName + ".jpg";

return path;

}

public const string appid = "";//公众号ID

public const string secret = "";//微信公众号的secret

相关代码地址:https://gitee.com/qq-w/wechat.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值