国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

記一次難忘的微信藍(lán)牙硬件入坑過程

wing324 / 3465人閱讀

摘要:前幾個(gè)月的時(shí)候,開發(fā)了一個(gè)微信硬件相關(guān)的項(xiàng)目,其業(yè)務(wù)相對比較簡單,就是一個(gè)微信的藍(lán)牙硬件設(shè)備,通過微信硬件傳輸一些數(shù)據(jù)到我們這邊的服務(wù)器。

前幾個(gè)月的時(shí)候,開發(fā)了一個(gè)微信硬件相關(guān)的項(xiàng)目,其業(yè)務(wù)相對比較簡單,就是一個(gè)微信的藍(lán)牙硬件設(shè)備,通過微信硬件 JSAPI 傳輸一些數(shù)據(jù)到我們這邊的服務(wù)器。

有開發(fā)微信硬件的朋友,應(yīng)該都會有了解,這個(gè)流程大致如下:

但是最近客戶向我反饋,收不到硬件發(fā)送的信息了。

這怎么可能,代碼、服務(wù)器都沒有變過,怎么可能會出問題呢?但畢竟客戶就是上帝,這個(gè)問題得檢查一下啊,我懷著一顆忐忑的心,看了一下服務(wù)器的 Log 日志。

看到了這段日志,更覺得奇怪,easywechat 的擴(kuò)展包從來沒有升級過,此版本 3.1。怎么可能會出這個(gè)問題呢?我打開了Guard.php這個(gè)文件的代碼:

    /** 
     * Handle message.
     *
     * @param array $message
     *
     * @return mixed
     */
    protected function handleMessage(array $message)
    {
        $handler = $this->messageHandler;

        if (!is_callable($handler)) {
            Log::debug("No handler enabled.");

            return null;
        }

        Log::debug("Message detail:", $message);

        $message = new Collection($message);

        $type = $this->messageTypeMapping[$message->get("MsgType")];

        $response = null;

        if ($this->messageFilter & $type) {
            $response = call_user_func_array($handler, [$message]);
        }

        return $response;
    }

第 393 行的代碼是這一行:

$type = $this->messageTypeMapping[$message->get("MsgType")];

從日志來看,錯(cuò)誤很明顯,我打印了一下$message->get("MsgType") ,結(jié)果為 null。

各種 Google 無果,最終找來了超哥,easywechat 的作者,在超哥的幫助下,定位到了錯(cuò)誤。

從 wechat 的 log 日志中看,有收到硬件發(fā)送來的數(shù)據(jù),但是收到的數(shù)據(jù)是這樣的:

{
    "device_id": "gh_e6a24fdc82b6_69b49a3ee626ee55",
    "device_type": "gh_e6a24fdc82b6",
    "msg_id": "524313758",
    "msg_type": "device_text",
    "create_time": "1516171166",
    "open_id": "o7iyW0sUwv4wH6PWhextVbtPkNVE",
    "session_id": "380219",
    "content": "AQAPAgATAwAWBAAA"
}

而正常的文本消息數(shù)據(jù)包是這樣的:

{
    "ToUserName": "gh_e6a24fdc82b6",
    "FromUserName": "o7iyW0sUwv4wH6PWhextVbtPkNVE",
    "CreateTime": "1516171641",
    "MsgType": "text",
    "Content": "123",
    "MsgId": "6511907613782547557"
}

MsgType ??

msg_type ??

WTF?微信開發(fā)的程序員們?你們是在逗我嗎?

這個(gè)數(shù)據(jù)結(jié)構(gòu)……

這個(gè)命名規(guī)范……

無力吐槽……

問題已經(jīng)確認(rèn),微信的協(xié)議發(fā)生了變更,我調(diào)整了一下 easywechat 的變量命名和一些細(xì)節(jié)程序,感興趣的小伙伴點(diǎn)擊這里:https://github.com/todayqq/we...

修改的部分已經(jīng)提交 PR 到原先的 wechat 擴(kuò)展包中,希望有開發(fā)微信硬件的小伙伴,不要重復(fù)入坑。

最后,感謝超哥的幫助!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/28130.html

相關(guān)文章

  • 一次使用Fiddler抓包工具抓取Https協(xié)議數(shù)據(jù)的踩坑過程

    摘要:直到今天,突然看到一個(gè)有意思的微信小游戲。后來試了幾次之后才發(fā)現(xiàn),這個(gè)小游戲比較刁,不僅做了微信的登錄授權(quán),而且做了手機(jī)端訪問的判斷,更甚至竟然用的還是協(xié)議的網(wǎng)頁。調(diào)用的目標(biāo)發(fā)生了異常。 記一次使用Fiddler抓包工具抓取Https協(xié)議數(shù)據(jù)的踩坑過程 前言 記得從剛?cè)腴T前端第一天開始,當(dāng)時(shí)的師傅就跟我介紹了一個(gè)可以抓取一些必須要在微信瀏覽器打開的鏈接的工具Fiddler,主要用來抓取...

    JackJiang 評論0 收藏0
  • 世間最美好的相遇是久別重逢、猶如你在什么時(shí)候選擇軟件測試、不思量 自難忘...

    摘要:軟件測試,遠(yuǎn)遠(yuǎn)不是簡簡單單的事。下面是我整理出來的一份軟件測試工程師學(xué)習(xí)與發(fā)展知識架構(gòu)體系圖。 軟件測試,遠(yuǎn)遠(yuǎn)不是簡簡單單的事。然后就Java,Python,說只...

    JouyPub 評論0 收藏0
  • 一次使iview庫的Radio可取消的過程

    摘要:概述庫用的是是我們非常常用的組件。有一個(gè)特征是選中之后無法取消。現(xiàn)實(shí)中取消的需求是常見且可以理解的。所以看到這個(gè)需求之后第一嘗試在組件之上搞一搞,這一搞就入坑了,現(xiàn)在就來理一理我的入坑之路吧。 概述 ui庫用的是iview . radio、radioGroup是我們非常常用的組件。radio有一個(gè)特征是選中之后無法取消。現(xiàn)實(shí)中取消radio的需求是常見且可以理解的。所以看到這個(gè)需求之后...

    荊兆峰 評論0 收藏0
  • 一次修復(fù)微信支付吊起非常慢的問題

    摘要:記一次修復(fù)微信支付吊起非常慢的問題微信接支付調(diào)用有些安卓手機(jī)吊起非常慢,因?yàn)檎{(diào)支付寫法就是這樣子,實(shí)在定位不到問題所在,正在打算放棄的時(shí)候。定位會導(dǎo)致支付吊起不了嗎原來之前把瀏覽器定位換成了微信定位,解決安卓下面會頻繁彈授權(quán)的問題。 記一次修復(fù)微信支付吊起非常慢的問題 微信h5接支付調(diào)用 window.wx.invoke(getBrandWCPayRequest) 有些安卓手機(jī)吊起非常...

    Mertens 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<