代码直接复制就可以用。 欢迎加入QQ交流技术群:601122412
官方文档:https://www.w3cschool.cn/weixinapp/weixinapp-api-qrcode.html
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/qr-code.html
/// <summary>
/// 拉取AccessToken,微信每天公共2000次AccessToken的获取,所以需要缓存AccessToken
/// </summary>
/// <returns>用户凭证:AccessToken</returns>
public static string getTokenSession(string appid, string appsecret)
{
string TokenSession;
if (System.Web.HttpContext.Current.Session["AccessToken"] != null)
{
TokenSession = System.Web.HttpContext.Current.Session["AccessToken"].ToString();
}
else
{
TokenSession = addTokenSession(appid, appsecret);
}
return TokenSession;
}
/// <summary>
/// 将AccessToken添加到缓存
/// </summary>
/// <returns>AccessToken</returns>
public static string addTokenSession(string appid, string appsecret)
{
//获取AccessToken
string AccessToken = GetAccessToken(appid, appsecret);
HttpContext.Current.Session["AccessToken"] = AccessToken;
HttpContext.Current.Session.Timeout = 7200;
return AccessToken;
}
/// <summary>
/// 获取AccessToken
/// </summary>
/// <returns>AccessToken</returns>
public static string GetAccessToken(string appid, string appsecret)
{
string accessToken = "";
string respText = "";
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 resStream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(resStream, Encoding.Default);
respText = reader.ReadToEnd();
resStream.Close();
}
IDictionary<string, object> respDic = respText.JsonToDictionary();
accessToken = respDic["access_token"].ToString();
return accessToken;
}
/// <summary>
/// 调用微信接口获取带参数永久二维码
/// 使用方法:https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token
/// </summary>
/// <param name="scene_str">二维码带的参数</param>
public static string GetQrcode(string appid, string appsecret, string scene_str)
{
string result = "";
string err = "";
string QrcodeUrl = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={0}";//WxQrcodeAPI接口
string AccessToken = getTokenSession(appid, appsecret);//拉取AccessToken
QrcodeUrl = string.Format(QrcodeUrl, AccessToken);
//string PostJson = "{\"scene\":{\"snno\": " + scene_str + "}}";
string PostJson = "{\"scene\": " + scene_str + "}";
result = Common.HttppHelper.GetJsonDataByPost(PostJson, QrcodeUrl, ref err); 请求微信,
result = "data:image/jpeg;base64," + result;//返回的base64。转成img格式直接放到前端img标签里面。下面配图。
return result;
}
///请求微信接口
public static string GetJsonDataByPost(string paramStr, string url,ref string err)
{
string result = "";
using (WebClient wc = new WebClient())
{
try
{
Encoding en = Encoding.UTF8;
wc.Headers.Add("Content-Type", "application/json");
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
}
byte[] postData = en.GetBytes(paramStr);
byte[] data = wc.UploadData(url, "POST", postData); // 得到返回字符流
result = Convert.ToBase64String(data);//调用微信返回二进制。转成base64。
}
catch (Exception ex)
{
err = ex.Message;
}
}
return result;
}
上面是C#生成的二维码。扫码跳转小程序。小程序代码如下
谢谢观看!