對于小程式大家可能都非常熟悉了,随着小程式的不斷普及越來越多的公司都開始推廣使用起來了。今天接到一個需求就是生成小程式碼,并且與營運給的推廣圖檔合并在一起做成一張漂亮美觀的推廣二維碼,掃碼這種二維碼就可以進入小程式。為了節省伺服器記憶體資源,我想的就是成功調用通微信生成小程式碼的接口後直接把微信傳回過來的圖檔二進制内容(傳回的圖檔 Buffer)轉化為二進制byte[]檔案流,然後再轉成Image這樣就不需要在儲存到本地直接讀取本地的背景圖檔通過GDI+(Graphics)繪制圖檔。廢話不多說直接上碼,各位同學假如有什麼小程式的開發問題都歡迎評論區,或者qq私聊我有時間都可以一起學習探索。
首先微信小程式官方文檔提供了三種生成小程式碼的方法,如下所示(本文采用的是第三種,需要的碼數量極多的業務場景):
文檔詳情位址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html
1、createwxaqrcode擷取小程式二維碼,适用于需要的碼數量較少的業務場景。通過該接口生成的小程式碼,永久有效,有數量限制。 2、getwxacode擷取小程式碼,适用于需要的碼數量較少的業務場景。通過該接口生成的小程式碼,永久有效,有數量限制。 3、getwxacodeunlimit擷取小程式碼,适用于需要的碼數量極多的業務場景。通過該接口生成的小程式碼,永久有效,數量暫無限制。
對接開發過微信相關的業務的同學應該都清楚,調用微信接口很多情況下都會需要使用到access_token接口調用憑證。一般來說access_token的有效時長為2小時,為了不頻繁調用該接口我們可以通過緩存的方法把調用憑證存起來并設定合理的過期時間(redis,cookie,memorycache都是非常不錯的選擇)。
GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET<code></code>
屬性
類型
預設值
必填
說明
<code>grant_type</code>
<code>string</code>
是
填寫 client_credential
<code>appid</code>
小程式唯一憑證,即 AppID,可在「微信公衆平台 - 設定 - 開發設定」頁中獲得。(需要已經成為開發者,且帳号沒有異常狀态)
<code>secret</code>
小程式唯一憑證密鑰,即 AppSecret,擷取方式同 appid
<code>access_token</code>
擷取到的憑證
<code>expires_in</code>
<code>number</code>
憑證有效時間,機關:秒。目前是7200秒之内的值。
<code>errcode</code>
錯誤碼
<code>errmsg</code>
錯誤資訊
接口調用憑證
<code>scene</code>
最大32個可見字元,隻支援數字,大小寫英文以及部分特殊字元:<code>!#$&'()*+,/:;=?@-._~</code>,其它字元請自行編碼為合法字元(因不支援<code>%</code>,中文無法使用 <code>urlencode</code> 處理,請使用其他編碼方式)
<code>page</code>
首頁
否
必須是已經釋出的小程式存在的頁面(否則報錯),例如 <code>pages/index/index</code>, 根路徑前不要填加 <code>/</code>,不能攜帶參數(參數請放在scene字段裡),如果不填寫這個字段,預設跳首頁面
<code>width</code>
430
二維碼的寬度,機關 px,最小 280px,最大 1280px
<code>auto_color</code>
<code>boolean</code>
false
自動配置線條顔色,如果顔色依然是黑色,則說明不建議配置主色調,預設 false
<code>line_color</code>
<code>Object</code>
{"r":0,"g":0,"b":0}
auto_color 為 false 時生效,使用 rgb 設定顔色 例如 <code>{"r":"xxx","g":"xxx","b":"xxx"}</code> 十進制表示
<code>is_hyaline</code>
是否需要透明底色,為 true 時,生成透明底色的小程式
傳回的圖檔 Buffer(如果調用成功,會直接傳回圖檔二進制内容(圖檔檔案流),如果請求失敗,會傳回 JSON 格式的資料。)
注意:這個與前面擷取授權憑證的網絡請求不同的是因為要接收請求傳回過來的圖檔二進制内容(buffer),然後需要把二進制檔案流轉化為byte[]二進制位元組流,然後在轉化Image。

作者:追逐時光者 作者簡介:一個熱愛程式設計,善于分享,喜歡學習、探索、嘗試新事物,新技術的程式猿。 本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。如果該篇文章對您有幫助的話,可以點一下右下角的【♥推薦♥】,希望能夠持續的為大家帶來好的技術文章,文中可能存在描述不正确或錯誤的地方,歡迎指正、補充,不勝感激 !