国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

.NET生成微信小程序推廣二維碼

這篇具有很好參考價(jià)值的文章主要介紹了.NET生成微信小程序推廣二維碼。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

對(duì)于小程序大家可能都非常熟悉了,隨著小程序的不斷普及越來(lái)越多的公司都開始推廣使用起來(lái)了。今天接到一個(gè)需求就是生成小程序碼,并且與運(yùn)營(yíng)給的推廣圖片合并在一起做成一張漂亮美觀的推廣二維碼,掃碼這種二維碼就可以進(jìn)入小程序。為了節(jié)省服務(wù)器內(nèi)存資源,我想的就是成功調(diào)用通微信生成小程序碼的接口后直接把微信返回過(guò)來(lái)的圖片二進(jìn)制內(nèi)容(返回的圖片 Buffer)轉(zhuǎn)化為二進(jìn)制byte[]文件流,然后再轉(zhuǎn)成Image這樣就不需要在保存到本地直接讀取本地的背景圖片通過(guò)GDI+(Graphics)繪制圖片。

選擇小程序碼生成方式

首先微信小程序官方文檔提供了三種生成小程序碼的方法,如下所示(本文采用的是第三種,需要的碼數(shù)量極多的業(yè)務(wù)場(chǎng)景):

  • 文檔詳情地址:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/qr-code/getQRCode.html

1、createwxaqrcode獲取小程序二維碼,適用于需要的碼數(shù)量較少的業(yè)務(wù)場(chǎng)景。通過(guò)該接口生成的小程序碼,永久有效,有數(shù)量限制。

2、getwxacode獲取小程序碼,適用于需要的碼數(shù)量較少的業(yè)務(wù)場(chǎng)景。通過(guò)該接口生成的小程序碼,永久有效,有數(shù)量限制。

3、getwxacodeunlimit獲取小程序碼,適用于需要的碼數(shù)量極多的業(yè)務(wù)場(chǎng)景。通過(guò)該接口生成的小程序碼,永久有效,數(shù)量暫無(wú)限制。

獲取小程序全局唯一后臺(tái)接口調(diào)用憑據(jù)(access_token)

對(duì)接開發(fā)過(guò)微信相關(guān)的業(yè)務(wù)的同學(xué)應(yīng)該都清楚,調(diào)用微信接口很多情況下都會(huì)需要使用到access_token接口調(diào)用憑證。一般來(lái)說(shuō)access_token的有效時(shí)長(zhǎng)為2小時(shí),為了不頻繁調(diào)用該接口我們可以通過(guò)緩存的方法把調(diào)用憑證存起來(lái)并設(shè)置合理的過(guò)期時(shí)間(redis,cookie,memorycache都是非常不錯(cuò)的選擇)。

請(qǐng)求地址:

  • GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

請(qǐng)求參數(shù):

.NET生成微信小程序推廣二維碼,C#,.NET,.net,微信小程序,c#,asp.net,.net core,小程序,開發(fā)語(yǔ)言

返回值(JSON 數(shù)據(jù)包):

.NET生成微信小程序推廣二維碼,C#,.NET,.net,微信小程序,c#,asp.net,.net core,小程序,開發(fā)語(yǔ)言

請(qǐng)求代碼:

///?<summary>
????????///?獲取小程序全局唯一后臺(tái)接口調(diào)用憑據(jù)(access_token)
????????///?</summary>
????????///?<returns></returns>
????????public?string?GetWechatAccessToken()
????????{
????????????var?appId?=?"你的小程序AppID";//小程序唯一憑證,即?AppID
????????????var?secret?=?"你的小程序AppSecret";?//小程序唯一憑證密鑰,即?AppSecret
????????????string?Url?=?string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}",?appId,?secret);

????????????string?Result?=?HttpWebRequest(Url,?"GET",?"",?Encoding.UTF8);

????????????var?obj?=?JsonConvert.DeserializeObject<AccessToken>(Result);

????????????if?(obj?!=?null?&&?obj.access_token?!=?null)
????????????{
????????????????return?obj.access_token;
????????????}
????????????else
????????????{
????????????????return?"";
????????????}
????????}


????????///?<summary>
????????///?WebRequest網(wǎng)絡(luò)請(qǐng)求
????????///?</summary>
????????///?<param?name="requestUrl">請(qǐng)求地址</param>
????????///?<param?name="method">請(qǐng)求方式(GET/POST)</param>
????????///?<param?name="data">請(qǐng)求參數(shù)(method="POST"需要攜帶)</param>
????????///?<param?name="encoding">字符編碼</param>
????????///?<param?name="contentType">請(qǐng)求數(shù)據(jù)的內(nèi)容類型</param>
????????///?<returns></returns>
????????public?string?HttpWebRequest(string?requestUrl,?string?method,?string?data,?Encoding?encoding,string?contentType="application/json;charset=UTF-8")
????????{
????????????WebRequest?webRequest?=?WebRequest.Create(requestUrl);
????????????webRequest.Method?=?method;
????????????if?(method?==?"POST")
????????????{
????????????????byte[]?bytes?=?Encoding.Default.GetBytes(data);
????????????????webRequest.ContentType?=?contentType;
????????????????webRequest.ContentLength?=?bytes.Length;
????????????????Stream?requestStream?=?webRequest.GetRequestStream();
????????????????requestStream.Write(bytes,?0,?bytes.Length);
????????????????requestStream.Close();
????????????}

????????????WebResponse?response?=?webRequest.GetResponse();
????????????Stream?responseStream?=?response.GetResponseStream();
????????????if?(responseStream?==?null)
????????????{
????????????????return?"";
????????????}

????????????StreamReader?streamReader?=?new?StreamReader(responseStream,?encoding);
????????????string?result?=?streamReader.ReadToEnd();
????????????responseStream.Close();
????????????streamReader.Close();
????????????return?result;
????????}



????///?<summary>
????///?響應(yīng)模型
????///?</summary>
????public?class?AccessToken
????{
????????///?<summary>
????????///?獲取到的憑證
????????///?</summary>
????????public?string?access_token?{?get;?set;?}

????????///?<summary>
????????///?憑證有效時(shí)間,單位:秒。目前是7200秒之內(nèi)的值
????????///?</summary>
????????public?int?expires_in?{?get;?set;?}

????????///?<summary>
????????///?錯(cuò)誤碼
????????///?</summary>
????????public?int?errcode?{?get;?set;?}

????????///?<summary>
????????///?錯(cuò)誤信息
????????///?</summary>
????????public?string?errmsg?{?get;?set;?}
????}

小程序碼獲取

請(qǐng)求地址:

  • POST https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN

請(qǐng)求參數(shù):

.NET生成微信小程序推廣二維碼,C#,.NET,.net,微信小程序,c#,asp.net,.net core,小程序,開發(fā)語(yǔ)言

請(qǐng)求成功返回值:

返回的圖片 Buffer(如果調(diào)用成功,會(huì)直接返回圖片二進(jìn)制內(nèi)容(圖片文件流),如果請(qǐng)求失敗,會(huì)返回 JSON 格式的數(shù)據(jù)。)

請(qǐng)求異常返回值:

.NET生成微信小程序推廣二維碼,C#,.NET,.net,微信小程序,c#,asp.net,.net core,小程序,開發(fā)語(yǔ)言

請(qǐng)求代碼:

注意:這個(gè)與前面獲取授權(quán)憑證的網(wǎng)絡(luò)請(qǐng)求不同的是因?yàn)橐邮照?qǐng)求返回過(guò)來(lái)的圖片二進(jìn)制內(nèi)容(buffer),然后需要把二進(jìn)制文件流轉(zhuǎn)化為byte[]二進(jìn)制字節(jié)流,然后在轉(zhuǎn)化Image。

///?<summary>
????????///?獲取小程序碼圖片
????????///?</summary>
????????///?<param?name="access_token">接口調(diào)用憑據(jù)</param>
????????///?<param?name="param">攜帶參數(shù)</param>
????????private?Image?GetWetchatAppletQRCodeImage(string?access_token,?string?param)
????????{
????????????string?requestData?=?"{\"scene\":\""?+?param?+?"\"}";
????????????string?requestUrl?=?"https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="?+?access_token;

????????????HttpWebRequest?request?=?(HttpWebRequest)WebRequest.Create(requestUrl);
????????????request.Method?=?"POST";
????????????request.ContentType?=?"application/json;charset=UTF-8";
????????????byte[]?payload?=?System.Text.Encoding.UTF8.GetBytes(requestData);
????????????request.ContentLength?=?payload.Length;
????????????Stream?writer?=?request.GetRequestStream();
????????????writer.Write(payload,?0,?payload.Length);
????????????writer.Close();
????????????HttpWebResponse?response;
????????????response?=?(HttpWebResponse)request.GetResponse();
????????????Stream?stream?=?response.GetResponseStream();//獲取返回的圖片?Buffer(文件流)
????????????byte[]?imageBuffer?=?StreamToBytes(stream);

????????????return?ByteArrayConvertToImage(imageBuffer);
????????}

????????///?<summary>
????????///?將文件數(shù)據(jù)流轉(zhuǎn)為二進(jìn)制byte[]字節(jié)流
????????///?</summary>
????????///?<param?name="stream">文件流</param>
????????///?<returns></returns>
????????private?byte[]?StreamToBytes(Stream?stream)
????????{
????????????List<byte>?bytes?=?new?List<byte>();
????????????int?temp?=?stream.ReadByte();
????????????while?(temp?!=?-1)
????????????{
????????????????bytes.Add((byte)temp);
????????????????temp?=?stream.ReadByte();
????????????}
????????????return?bytes.ToArray();
????????}


????????///?<summary>
????????///?byte?[]?轉(zhuǎn)化為Iamge
????????///?</summary>
????????///?<param?name="buffer"></param>
????????///?<returns></returns>
????????public?static?Image?ByteArrayConvertToImage(byte[]?buffer)
????????{
????????????using?(MemoryStream?ms?=?new?MemoryStream(buffer))
????????????{
????????????????//?直接調(diào)用Image庫(kù)類中自帶的方法使用MemoryStream實(shí)例對(duì)象獲取Image
????????????????return?Image.FromStream(ms);
????????????}
????????}

小程序碼和背景圖合并

///?<summary>
????????///?小程序推廣二維碼獲取
????????///?</summary>
????????///?<param?name="userId">小程序碼攜帶的用戶參數(shù)</param>
????????///?<returns></returns>
????????public?JsonResult?GetCompositePictureUrl(int?userId)
????????{
????????????//圖片存放物理路徑
????????????var?savePhysicalPath?=?HttpContext.Request.MapPath("~/qrcode/");

????????????var?imgBack?=?Image.FromFile(savePhysicalPath?+?"ewm.jpg");//合成背景圖片
????????????var?wechatQrcodeImg?=?GetWetchatAppletQRCodeImage(GetWechatAccessToken(),userId.ToString());//獲取小程序碼圖片
????????????var?compositePictureUrl?=?CompositePicture(imgBack,?wechatQrcodeImg,?savePhysicalPath,?232,?719,?290,?290);

????????????return?Json(new?{?code?=?0,?compositePictureUrl?=?compositePictureUrl?});
????????}

????????///?<summary>
????????///?合成圖片
????????///?</summary>
????????///?<param?name="backgroundImage">背景圖</param>
????????///?<param?name="qrCodeImg">二維碼圖片</param>
????????///?<param?name="savePhysicalPath">圖片存放物理路徑</param>
????????///?<param?name="xDeviation">繪制圖像X軸偏差</param>
????????///?<param?name="yDeviation">繪制圖像Y軸偏差</param>
????????///?<param?name="width">繪制圖像寬</param>
????????///?<param?name="height">繪制圖像高</param>
????????///?<returns></returns>
????????public?string?CompositePicture(Image?backgroundImage,?Image?qrCodeImg,?string?savePhysicalPath,?int?xDeviation?=?0,?int?yDeviation?=?0,?int?width?=?0,?int?height?=?0)
????????{
????????????Bitmap?bitmap?=?new?Bitmap(backgroundImage.Width,?backgroundImage.Height);
????????????Graphics?graphics?=?Graphics.FromImage(bitmap);//繪圖
????????????graphics.Clear(Color.White);
????????????SolidBrush?surush?=?new?SolidBrush(Color.White);
????????????graphics.DrawImage(backgroundImage,?0,?0,?backgroundImage.Width,?backgroundImage.Height);
????????????graphics.DrawImage(qrCodeImg,?xDeviation,?yDeviation,?width,?height);
????????????GC.Collect();//垃圾清理

????????????string?compositePictureUrl?=?savePhysicalPath?+?Guid.NewGuid().ToString()?+?".jpg";
????????????//合成圖片保存
????????????bitmap.Save(compositePictureUrl,?System.Drawing.Imaging.ImageFormat.Jpeg);

????????????return?compositePictureUrl;
????????}

合成效果圖

.NET生成微信小程序推廣二維碼,C#,.NET,.net,微信小程序,c#,asp.net,.net core,小程序,開發(fā)語(yǔ)言文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-856311.html

到了這里,關(guān)于.NET生成微信小程序推廣二維碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 微信小程序之生成二維碼

    微信小程序之生成二維碼

    ?var context = wx.createCanvasContext(\\\'mycanvas\\\');?// 獲取畫布 CanvasContext.fillText string text 在畫布上輸出的文本 number x 繪制文本的左上角 x 坐標(biāo)位置 number y 繪制文本的左上角 y 坐標(biāo)位置 number maxWidth 需要繪制的最大寬度,可選 CanvasContext.drawImage string imageResource 所要繪制的圖片資源(網(wǎng)絡(luò)

    2024年02月10日
    瀏覽(28)
  • 微信小程序 — 生成二維碼功能

    微信小程序 — 生成二維碼功能

    微信小程序?qū)崿F(xiàn)生成二維碼功能。需要用到canvas組件,設(shè)置 type為2d.? 需要使用js包 weapp-qrcode-canvas-2d https://github.com/DoctorWei/weapp-qrcode-canvas-2d weapp-qrcode-canvas-2d 是使用新版canvas-2d接口在微信小程序中生成二維碼(外部二維碼)的js包。canvas 2d 接口支持同層渲染且性能更佳,可大

    2024年02月09日
    瀏覽(24)
  • 微信小程序生成二維碼的 方式

    一:生成普通的二維碼 https://open.weixin.qq.com/sns/getexpappinfo?appid=xxxpath=xxx?a=123 appid:小程序的appid path: 小程序的路徑 a:小程序需要攜帶的參數(shù),不傳可以不寫 二:在微信開發(fā)文檔內(nèi)生成 步驟1.登錄微信公眾平臺(tái) 2.找到工具菜單 3.選擇生成小程序碼 具體里面的有生成規(guī)則,不懂得

    2024年02月12日
    瀏覽(24)
  • 微信小程序?qū)崿F(xiàn)預(yù)約生成二維碼

    微信小程序?qū)崿F(xiàn)預(yù)約生成二維碼

    業(yè)務(wù)需求 :點(diǎn)擊預(yù)約按鈕即可生成二維碼憑碼入校參觀~ 如下是博主自己寫的wxml: 以及wxss: 去Gitee下載工具包: 二維碼工具包 http://? https://gitee.com/WeiDoctor/weapp-qrcode-canvas-2d ? 下載zip: ? ? 將dist文件夾中的js文件全部復(fù)制到utils目錄下: 如下代碼必須完整的導(dǎo)入再頁(yè)面

    2024年04月15日
    瀏覽(34)
  • 微信小程序使用--如何生成二維碼

    微信小程序使用--如何生成二維碼

    一、生成二維碼 1.獲取token 參照官方文檔說(shuō)明: https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-access-token/getAccessToken.html 其中g(shù)rant_type是寫死的,appid和secret是注冊(cè)小程序的時(shí)候獲取的,然后會(huì)得到一個(gè)默認(rèn)兩小時(shí)失效的token 2.獲取二維碼 參照官方文檔說(shuō)明: https://developers.

    2024年02月04日
    瀏覽(23)
  • 【小程序】動(dòng)態(tài)生成微信小程序二維碼

    官方文檔中給我們提供了三個(gè)接口,分別應(yīng)用于不同的場(chǎng)景 wxacode.createQRCode - - 接口文檔地址-點(diǎn)擊跳轉(zhuǎn) 該接口需慎用,因?yàn)槲臋n描述,該接口可生成的二維碼是有限制的。 總共生成的碼數(shù)量限制為 100,000 wxacode.get - - 接口文檔地址-點(diǎn)擊跳轉(zhuǎn) 該接口需慎用,因?yàn)槲臋n描述,該

    2024年02月09日
    瀏覽(27)
  • 微信小程序生成二維碼海報(bào)并分享

    背景:點(diǎn)擊圖標(biāo),生成海報(bào)后,點(diǎn)擊保存相冊(cè),可以保存 生成海報(bào):插件wxa-plugin-canvas,此處使用頁(yè)面異步生成組件方式,官網(wǎng)地址:wxa-plugin-canvas - npm 二維碼:調(diào)用后端接口生成二維碼 需要調(diào)用獲取圖片信息接口wx.getImageInfo(),獲取到圖片的寬高以做整體寬高配置 closePos

    2024年03月21日
    瀏覽(95)
  • 生成普通的微信小程序二維碼

    生成普通的微信小程序二維碼

    1.登錄微信小程序后臺(tái)傳送門 開發(fā)管理-開發(fā)設(shè)置-掃普通鏈接二維碼打開小程序? ?在這里開通此功能,然后按微信定義的規(guī)則配置具體的地址,等正式上線的時(shí)候再發(fā)布該規(guī)則 ?2.然后按照配置的 二維碼規(guī)則 (上圖第三項(xiàng)) 去直接生成普通的二維碼(可自行攜帶參數(shù)),然后微信掃一

    2024年02月14日
    瀏覽(21)
  • 微信小程序生成攜帶參數(shù)的二維碼

    微信小程序生成攜帶參數(shù)的二維碼

    當(dāng)對(duì)需求的時(shí)候發(fā)現(xiàn) 要完成一個(gè)永久二維碼直接進(jìn)入微信小程序的對(duì)應(yīng)頁(yè)面+對(duì)應(yīng)IID參數(shù) 不要慌 這篇文章解決 滿足生成需要 微信官方提供生成微信二維碼 可滿足大部分功能 獲取不限制的小程序碼 | 微信開放文檔 可以看到官方文檔有3種二維碼的樣式 我們這里以第一種的小

    2024年02月09日
    瀏覽(91)
  • 微信小程序任意指定頁(yè)面生成二維碼

    微信小程序任意指定頁(yè)面生成二維碼

    在日常微信小程序運(yùn)營(yíng)中,文章,和朋友圈海報(bào)內(nèi)總會(huì)用到微信小程序特定頁(yè)面二維碼 ps:一定要輸入當(dāng)前小程序小程序項(xiàng)目成員的微信號(hào)

    2024年02月11日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包