Node.js + TNWX接入微信JS-SDK

image.png

微信公眾平臺開發(fā)文檔

TMWX文檔

了解清楚流程之后,可以著手開發(fā)了。里面有個要注意的地方辉阶,access_token和jsapi_ticket需要做緩存∥撕Γ可以自己純?nèi)戦_發(fā),不想自己造輪子的話也可以用一些大佬們已經(jīng)做好的腳手架畦攘。這里直接用TMWX霸妹。

TMWX簡介

TypeScript + Node.js + WeiXin 微信系開發(fā)腳手架,支持微信公眾號知押、微信支付叹螟、微信小游戲、微信小程序台盯、企業(yè)號/企業(yè)微信首妖。最最最重要的是能快速的集成至任何 Node.js 框架(Express、Nest爷恳、Egg有缆、Koa 等)

一、安裝依賴

下面生成簽名的時候用到uuid,可以一起安裝棚壁,也可以自己寫個生成uuid的方法

$ npm install tnwx
$ npm install uuid

二杯矩、導(dǎo)入相關(guān)的模塊

這里現(xiàn)在只需要用到JS-SDK的功能,只導(dǎo)入需要用到的即可

import {
  WeChat,
  ApiConfigKit,
  ApiConfig,
} from 'tnwx'

三袖外、初始化

// ApiConfig 初始化的參數(shù)說明
// 第一個參數(shù):appId史隆。 企業(yè)微信時 appId 對應(yīng)的值為 agentId
// 第二個參數(shù):appScrect
// 第三個參數(shù):令牌 Token 可以任意填寫
// 第四個參數(shù):是否開啟加密 encryptMessage 默認(rèn)值為 false。測試號必須為 false曼验, 企業(yè)微信必須為 true
// 第五個參數(shù):消息加解密密鑰 encodingAesKey 非必須泌射。 encryptMessage 為 true 時必須
// 第六個參數(shù):企業(yè)ID 非必須。 企業(yè)微信時必須
// 第七個參數(shù):企業(yè)微信開放平臺應(yīng)用的 Ticket 非必須鬓照。

const WxConfig = {
  appId: 'wxc074fff670b6c061',
  appScrect:'d9ae6a966851889c955001cc279548a5',
  token:'kapok'
}
const devApiConfig = new ApiConfig(
  WxConfig.appId,
  WxConfig.appScrect,
  WxConfig.token,
)
// 微信公眾號熔酷、微信小程序、微信小游戲 支持多應(yīng)用
ApiConfigKit.putApiConfig(devApiConfig)
// 開啟開發(fā)模式,方便調(diào)試
ApiConfigKit.devMode = true
// 設(shè)置當(dāng)前應(yīng)用
ApiConfigKit.setCurrentAppId(devApiConfig.getAppId)

四豺裆、把wx.config配置所需要的數(shù)據(jù)在接口返回出去

export default class wechatController {
  // 獲取微信配置
  public static async getWxConfig(ctx: Context) {
    const request: any = ctx.request.body
    
    if (request.url) {
      try {
        let appId = ApiConfigKit.getApiConfig.getAppId;
        let timestamp = new Date().getTime() / 1000;
        let nonceStr = uuidv1();
        let url = request.url; //填寫完整頁面的URL包括參數(shù)
        // 生成簽名
        let signature = await WeChat.jssdkSignature(nonceStr, String(timestamp), url);
        ctx.body = ctx.body = {
          code: 200,
          msg: '請求成功',
          data: {
            appId: appId,
            timestamp: timestamp,
            nonceStr: nonceStr,
            signature: signature
          }
        }
      } catch (error) {
        console.log(error)
        ctx.status = 200
        ctx.body = {
          code: -1,
          msg: error || '獲取失敗',
        }
      }
    } else {
      ctx.status = 200
      ctx.body = {
        code: -1,
        msg: 'url為空',
      }
    }

  }
}

五拒秘、前端使用wx.config配置和使用wx接口

/(ㄒoㄒ)/~~因為我的這個是個人公眾號,不支持分享類的接口調(diào)用臭猜,本來就是想做網(wǎng)站的鏈接轉(zhuǎn)發(fā)樣式別太丑的躺酒,結(jié)果還是不行∶锔瑁可以用獲取定位和掉用系統(tǒng)地圖來測試是否可以了

image.png
  <script type="text/javascript" src="https://res2.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
  <script>
    try {
      var formData = new FormData();
      formData.append('url', document.URL);
      $.ajax({
        url: 'https://xxx.xxx.com/v1/api/weChat/getWxConfig',
        method: 'POST',
        data: formData,
        contentType: false, // 注意這里應(yīng)設(shè)為false
        processData: false,
        cache: false,
        success: function(res) {
          wx.config({
            debug: true,
            appId: res.data.appId,
            timestamp: res.data.timestamp,
            nonceStr: res.data.nonceStr,
            signature: res.data.signature,
            jsApiList: [
              'getLocation',
              'openLocation'
            ]
          })

          wx.ready(function () {
            document.querySelector('#updateAppMessageShareData').onclick = function () {
              wx.getLocation({
                type: 'wgs84', // 默認(rèn)為wgs84的gps坐標(biāo)羹应,如果要返回直接給openLocation用的火星坐標(biāo),可傳入'gcj02'
                success: function (res) {
                  console.log(res)
                  var latitude = res.latitude; // 緯度次屠,浮點(diǎn)數(shù)量愧,范圍為90 ~ -90
                  var longitude = res.longitude; // 經(jīng)度,浮點(diǎn)數(shù)帅矗,范圍為180 ~ -180。
                  var speed = res.speed; // 速度煞烫,以米/每秒計
                  var accuracy = res.accuracy; // 位置精度

                  wx.openLocation({
                    latitude: res.latitude, // 緯度浑此,浮點(diǎn)數(shù),范圍為90 ~ -90
                    longitude: res.longitude, // 經(jīng)度滞详,浮點(diǎn)數(shù)凛俱,范圍為180 ~ -180。
                    name: '當(dāng)前位置', // 位置名
                    address: '詳細(xì)地址詳細(xì)說明', // 地址詳情說明
                    scale: 1, // 地圖縮放級別,整型值,范圍從1~28料饥。默認(rèn)為最大
                    infoUrl: '' // 在查看位置界面底部顯示的超鏈接,可點(diǎn)擊跳轉(zhuǎn)
                  });

                }
              });
            };

          })
        },
        error: function (jqXHR) {
            console.log(JSON.stringify(jqXHR));
        }
      })
    } catch (error) {

    }
  </script>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蒲犬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子岸啡,更是在濱河造成了極大的恐慌原叮,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異奋隶,居然都是意外死亡擂送,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門唯欣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嘹吨,“玉大人,你說我怎么就攤上這事境氢◇翱剑” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵萍聊,是天一觀的道長问芬。 經(jīng)常有香客問我,道長脐区,這世上最難降的妖魔是什么愈诚? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮牛隅,結(jié)果婚禮上炕柔,老公的妹妹穿的比我還像新娘。我一直安慰自己媒佣,他們只是感情好匕累,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著默伍,像睡著了一般欢嘿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上也糊,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天肄满,我揣著相機(jī)與錄音,去河邊找鬼徐矩。 笑死烹玉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的钞馁。 我是一名探鬼主播虑省,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼僧凰!你這毒婦竟也來了探颈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤训措,失蹤者是張志新(化名)和其女友劉穎伪节,沒想到半個月后光羞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡架馋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年狞山,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叉寂。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡萍启,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屏鳍,到底是詐尸還是另有隱情勘纯,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布钓瞭,位于F島的核電站驳遵,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏山涡。R本人自食惡果不足惜堤结,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鸭丛。 院中可真熱鬧竞穷,春花似錦、人聲如沸鳞溉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽熟菲。三九已至看政,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抄罕,已是汗流浹背允蚣。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留呆贿,地道東北人嚷兔。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像榨崩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子章母,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容