微信機器人網頁版接口詳解

微信網頁版接口詳解

本系列會講述微信機器人技術的實現,第一講主要了解微信網頁版給我們提供的http接口,這一步是做一個基於微信網頁版機器人的基礎和難點。

本講將微信網頁版的主要接口羅列出,並給出了入參和返回值的含義和用法。一些不常用的接口後續會逐漸補充,也歡迎大家與我交流。

後面幾講將會在代碼中探討微信機器人的設計思路,歡迎大家持續關注。

 一、網頁版微信提供的HTTP接口

1、獲取uuid

  • 說明:用於獲取顯示二維碼以及登錄所需的uuid,標識獲取二維碼和掃碼的爲同一個用戶
  • 請求方式:GET
  • 地址https://login.wx.qq.com/jslogin
  • get參數
  • 參數 示例值 說明
    appid wx782c26e4c19acffb 固定值
    fun new 固定值
    lang zh_CN 表示中文字符集
  • 返回
    window.QRLogin.code = 200; window.QRLogin.uuid = "wb7R2kx9dA==";

2、顯示二維碼

  • 說明:展示一張用於登陸的二維碼圖片,地址裏的{uuid}傳第一步所獲取的uuid
  • 請求方式:GET
  • 地址https://login.wx.qq.com/qrcode/{uuid}
  • get參數
  • 參數 示例值 說明
    t webwx 固定值
  • 返回:二維碼的二進制流,瀏覽器打開會直接顯示一張二維碼圖片

3、輪詢登錄

  • 說明:嘗試登錄。若此時用戶手機已完成掃碼並點擊登錄,則返回一個真正用於登錄的url地址。否則接口大概10s後返回未掃碼或未登錄的狀態碼
  • 請求方式:GET
  • 地址https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login
  • get參數
  • 參數 示例值 說明
    tip 1 1:未掃描 0:一掃描
    uuid wb7R2kx9dA== 第一步所獲取的uuid
  • 返回:redirect_uri的值可以直接用於下一步的“登錄並獲取公參”請求
    window.code=200(408爲未掃碼,201爲已掃碼但未點擊登錄,200爲成功登錄);window.redirect_uri="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=AfrMMbhsnElmA7xc1R9CWUq-@qrticket_0&uuid=4ZnG7WZ0Cg==&lang=zh_CN&scan=1520738372";

4、登錄並獲取公參

  • 說明:訪問後可獲取一組公參,用於之後訪問所有的接口。這也意味着如果這部分數據泄露,代表其他人可以在這段時間內隨意操作你的微信(僅限於網頁版支持的操作)
  • 請求方式:GET
  • 地址https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage
  • get參數:直接用上一步返回的redirect_uri中的所有參數即可
  • 返回:獲取並存儲該返回值中的四個參數skeywxsidwxuinpass_ticket,以及所返回Cookie中的webwx_data_ticketwebwx_auth_ticket
    複製代碼
    <error>
      <ret>0</ret>
      <message></message>
      <skey>@crypt_8b4f09cc_a5871dc10130a48703b9afd5602152e4</skey>
      <wxsid>+urBrYI292xoIknf</wxsid>
      <wxuin>211722515</wxuin>
      <pass_ticket>qg%2BL%2BfjNnoHyqYsL3xj0KoNi5nqchsInPWWSxDwqCJ8%3D</pass_ticket>
      <isgrayscale>1</isgrayscale>
    </error>
    複製代碼

5、微信初始化

  • 說明:初始化微信首頁欄的聯繫人、公衆號等(不是通訊錄裏的聯繫人),初始化登錄者自己的信息(包括暱稱等),初始化同步消息所用的SycnKey
  • 請求方式:POST
  • 地址https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit
  • get參數
  • 參數 示例值 說明
    pass_ticket qg%2BL%2BfjNnoHyqYsL3xj0KoNi5nqchsInPWWSxDwqCJ8%3D 公參中的值
  • post參數:(json格式)
  • 複製代碼
    {
        BaseRequest: {
            Uin: 211722515,
            Sid: +urBrYI292xoIknf,
            Skey: @crypt_8b4f09cc_a5871dc10130a48703b9afd5602152e4,
            DeviceID: e545297464380306
    上邊的DeviceID可以用如下代碼生成,每次登錄過程中保持一致。String DeviceID = "e" + String.valueOf(new Random().nextLong()).substring(1, 16); } }
    複製代碼
  • 返回:獲取並存儲該返回值中的四個參數skeywxsidwxuinpass_ticket,以及所返回Cookie中的webwx_data_ticketwebwx_auth_ticket
    複製代碼
    {
        "BaseResponse": {
            "Ret": 0,
            "ErrMsg": ""
        },
        "Count": 11,
        "ContactList": [{微信首頁的聯繫人,不是保存在通訊錄中的聯繫人
            "Uin": 0,
            "UserName": "filehelper",
            "NickName": "文件傳輸助手",
            "HeadImgUrl": "/cgi-bin/mmwebwx-bin/webwxgeticon?seq=680769514&username=filehelper&skey=@crypt_8b4f09cc_a5871dc10130a48703b9afd5602152e4",
            "ContactFlag": 1,
            "MemberCount": 0,
            "MemberList": [],
            "RemarkName": "",
            "HideInputBarFlag": 0,
            "Sex": 0,
            "Signature": "",
            "VerifyFlag": 0,
            "OwnerUin": 0,
            "PYInitial": "WJCSZS",
            "PYQuanPin": "wenjianchuanshuzhushou",
            "RemarkPYInitial": "",
            "RemarkPYQuanPin": "",
            "StarFriend": 0,
            "AppAccountFlag": 0,
            "Statues": 0,
            "AttrStatus": 0,
            "Province": "",
            "City": "",
            "Alias": "",
            "SnsFlag": 0,
            "UniFriend": 0,
            "DisplayName": "",
            "ChatRoomId": 0,
            "KeyWord": "fil",
            "EncryChatRoomId": "",
            "IsOwner": 0
        }, 
            ......此處省略剩下的10個聯繫人信息
        ],
        "SyncKey": { 同步消息時用的syncKey,用於之後輪詢消息的接口
            "Count": 4,
            "List": [{
                "Key": 1,
                "Val": 700722177
            }, {
                "Key": 2,
                "Val": 700723184
            }, {
                "Key": 3,
                "Val": 700723136
            }, {
                "Key": 1000,
                "Val": 1520723642
            }]
        },
        "User": { 登錄者的信息
            "Uin": 211722515,
            "UserName": "@f4c054c78f40743b095b85409dbdc1b3", 微信隨機碼,每個聯繫人和羣都有,每次登錄由微信端隨機分配
            "NickName": "測試微信號的暱稱",
            "HeadImgUrl": "/cgi-bin/mmwebwx-bin/webwxgeticon?seq=1730335888&username=@f4c054c78f40743b095b85409dbdc1b3&skey=@crypt_8b4f09cc_a5871dc10130a48703b9afd5602152e4",
            "RemarkName": "",
            "PYInitial": "",
            "PYQuanPin": "",
            "RemarkPYInitial": "",
            "RemarkPYQuanPin": "",
            "HideInputBarFlag": 0,
            "StarFriend": 0,
            "Sex": 1,
            "Signature": "這裏是簽名",
            "AppAccountFlag": 0,
            "VerifyFlag": 0,
            "ContactFlag": 0,
            "WebWxPluginSwitch": 0,
            "HeadImgFlag": 1,
            "SnsFlag": 17
        },
        "ChatSet": "filehelper,weixin,@52d5b97ca1bed2d76b405fba4c4ded6c893bd6b28cc514344dd9a7d8cd766286,@4baf3160e84b9e726efd1a0629d16b01,@@54a4fd2c81875aac779935330b67bf7905793bb66da9c6d4029f18f4927b3c1c,@@9542a551bfcafe1ae83b931d21b318573c8c6e2c67f3eaef189e7e9179cdb2d1,@ac3532106e21aa250cc746055a0c72d5,@d593e5745931641d060cdc9fcda5d996,@34f12e07290f62677137181998bf4c1eb0a9c128f2355562e8cc7967d0f9a044,@@31e445167b2fd23404b672f6f1a4a805fffbd369d6bae8efe959240a6c50cf46,@@c5fa6cb3779e217b5ae3e9b3d53faef09d6cde9615106ebe0a115de38976c7fc,@513fcb83ccc696b9d90206f0e80eb8e341e35e1f464b08446795132d180db040,@@b944058f6fd91b850867bb1f534205e86460b4b3a947f4ca4bd49109e532116f,@@859e98412d1faf03abdf784e97ed66b25c52dccc7ec446d681b2906525262fcd,@257fb1c805c1429ca45a737143d7a7e1302487d9bbb268bf2dd8a564bf814186,filehelper,@@dc3e7f04b1ccead2ecf8c50eaa476d6c71dc3f7396696be0724002e1ee228812,@@d1758feb60b1ff7ad262b8fb05ee9f1c1821722a0376a1431cee351c75cbebc3,@@e49ba13661221be9c9f81fb952391754ee74f98d2457f46364bdb745943b2bfc,@@a5cdd9eb797807cc081bc0e3ab3f101c9dc18d86d527c5defed8e8fd9010ec06,@@dfab3cde2a39ccdf31da803381528f130dae207583a5c088514bf4e1a0af49ab,@@13776e6ea475a8e86a46e4f242917db146664572e910dcca976047cb31e660f4,@@d1999c210e6f9a19d28b4a8fcc391a7b612c9765ff5bd078aaa022e1cc8bbf5c,",
        "SKey": "@crypt_8b4f09cc_ce5178b3c156048fff69cdf1fccc31e4",
        "ClientVersion": 637927733,
        "SystemTime": 1520742050,
        "GrayScale": 1,
        "InviteStartCount": 40,
        "MPSubscribeMsgCount": 1,
        "MPSubscribeMsgList": [{
            "UserName": "@4baf3160e84b9e726efd1a0629d16b01",
            "MPArticleCount": 1,
            "MPArticleList": [{
                "Title": "不動手就能逛淘寶,這又是什麼“黑科技”?英國小哥表示:中文說得溜就是這麼方便! | 解碼新時代",
                "Digest": "張口說話就能逛淘寶,沉溺“黑科技”的英國小哥表示不想回家了!",
                "Cover": "http://mmbiz.qpic.cn/mmbiz_jpg/8vd2Hk2TS2Pfibh9ILZKicg5icBlWKHBIVibVM8Vupsg3NsfSnibzptB9XQxArqzFmfOw7nlk6ByTdNvWBoBf4NjVmQ/640?wxtype=jpeg&wxfrom=0",
                "Url": "http://mp.weixin.qq.com/s?__biz=MjM5MzI3NTI2MA==&mid=2651224106&idx=1&sn=0a5772013ae7c14dd9ac854f30fad934&chksm=bd6b54398a1cdd2f6f9c1d61c93aa3248968b8b56206a0af85341f510322b21548c975d8ebba&scene=0#rd"
            }],
            "Time": 1520732033,
            "NickName": "中國日報雙語新聞"
        }],
        "ClickReportInterval": 600000
    }
    複製代碼

6、獲取聯繫人列表

  • 說明:獲取手機通訊錄中的所有聯繫人(包括人、羣、公衆號等)
  • 請求方式:POST
  • 地址https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact
  • get參數
  • 參數 示例值 說明
    pass_ticket yp5RfCpb%2FsNVex0Uepn1BWXNCYCqTfqe8NOYzan%2B4Y4%3D 公參中的值
    skey @crypt_8b4f09cc_1b827f84b1535b6be801f00427499050 公參中的值
  • post參數:
    複製代碼
    {
        "BaseRequest": {均是公參中的值
            "Uin": 211722515,
            "Sid": "+FhlgkGS3wD/GKQw",
            "Skey": "@crypt_8b4f09cc_1b827f84b1535b6be801f00427499050",
            "DeviceID": "e609547902722302"
        }
    }
    複製代碼
  • 返回:所有通訊錄中的聯繫人信息,主要在MemberList中查看
    複製代碼
    {
        "BaseResponse": {
            "Ret": 0,
            "ErrMsg": ""
        },
        "MemberCount": 771,
        "MemberList": [{
                "Uin": 0,
                "UserName": "@9c30c8d81e75a7eff0603cdd5de860b18fe92995845473fc2f0cda6ed76053cb",(微信隨機碼,潛規則:前面@爲聯繫人,@@爲羣)
                "NickName": "Nandi Wardhana",(聯繫人的微信暱稱)
                "HeadImgUrl": "/cgi-bin/mmwebwx-bin/webwxgeticon?seq=620986971&username=@9c30c8d81e75a7eff0603cdd5de860b18fe92995845473fc2f0cda6ed76053cb&skey=@crypt_8b4f09cc_1b827f84b1535b6be801f00427499050",
                "ContactFlag": 3,
                "MemberCount": 0,(如果是羣,該字段表示成員數量)
                "MemberList": [],(羣成員列表)
                "RemarkName": "",(備註名稱,如果空則說明沒有給他備註)
                "HideInputBarFlag": 0,
                "Sex": 1,(性別,1爲男,2爲女)
                "Signature": "Stay young naturally...",(簽名)
                "VerifyFlag": 0,(用來判斷是否是公衆號或服務號的字段)
                "OwnerUin": 0,
                "PYInitial": "NANDIWARDHANA",
                "PYQuanPin": "NandiWardhana",(名字拼音全拼)
                "RemarkPYInitial": "",
                "RemarkPYQuanPin": "",
                "StarFriend": 0,
                "AppAccountFlag": 0,
                "Statues": 0,
                "AttrStatus": 2359303,
                "Province": "Jakarta Raya",(省份)
                "City": "",(城市)
                "Alias": "",
                "SnsFlag": 17,
                "UniFriend": 0,
                "DisplayName": "",(如果是羣內成員,該字段表示羣內名稱)
                "ChatRoomId": 0,
                "KeyWord": "",
                "EncryChatRoomId": "",(如果是羣,該字段表示羣的id,不同於微信隨機碼@@那個)
                "IsOwner": 0
            },
            ... 此處省略剩下770個聯繫人信息
        ]
    }
    複製代碼

7、批量獲取聯繫人詳情

  • 說明:批量獲取聯繫人詳情,人或羣均可。獲取羣詳情主要是獲取羣內聯繫人列表。獲取人詳情主要是獲取羣內的某個人的詳細信息。
  • 請求方式:POST
  • 地址https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxbatchgetcontact
  • get參數
  • 參數 示例值 說明
    pass_ticket yp5RfCpb%2FsNVex0Uepn1BWXNCYCqTfqe8NOYzan%2B4Y4%3D 公參中的值
    type ex 我也不知道這是啥意思
  • post參數:
    複製代碼
    {
        "BaseRequest": {
            "Uin": 211722515,
            "Sid": "+FhlgkGS3wD/GKQw",
            "Skey": "@crypt_8b4f09cc_1b827f84b1535b6be801f00427499050",
            "DeviceID": "e862192966399662"
        },
        "Count": 2,
        "List": [{ 這裏表示需要獲取詳情的所有聯繫人
                "UserName": "@@e203c90e07d64242336d573acd4a1db1c01ccb92ca05410444a3003c282c21db",
                "EncryChatRoomId": ""
            },
            {
                "UserName": "@ba194a63575be7fd0f4ea4e4547b2942d0dccc7fffc00ef5a6d141f93adb7739",
                "EncryChatRoomId": ""
            }
        ]
    }
    複製代碼
  • 返回:
    複製代碼
    {
        "BaseResponse": {
            "Ret": 0,
            "ErrMsg": ""
        },
        "Count": 2,
        "ContactList": [{
                "Uin": 0,
                "UserName": "@ba194a63575be7fd0f4ea4e4547b2942d0dccc7fffc00ef5a6d141f93adb7739",
                "NickName": "張三丰",
                "HeadImgUrl": "/cgi-bin/mmwebwx-bin/webwxgeticon?seq=680786093&username=@ba194a63575be7fd0f4ea4e4547b2942d0dccc7fffc00ef5a6d141f93adb7739&skey=",
                "ContactFlag": 3,
                "MemberCount": 0,
                "MemberList": [],
                "RemarkName": "豐哥",
                "HideInputBarFlag": 0,
                "Sex": 2,
                "Signature": "<span class=\"emoji emoji2600\"></span> 一定會找到<span class=\"emoji emoji1f31b\"></span>",
                "VerifyFlag": 0,
                "OwnerUin": 0,
                "PYInitial": "ZSF",
                "PYQuanPin": "zhangsanfeng",
                "RemarkPYInitial": "FG",
                "RemarkPYQuanPin": "fengge",
                "StarFriend": 0,
                "AppAccountFlag": 0,
                "Statues": 0,
                "AttrStatus": 111719,
                "Province": "北京",
                "City": "平谷",
                "Alias": "",
                "SnsFlag": 17,
                "UniFriend": 0,
                "DisplayName": "",
                "ChatRoomId": 0,
                "KeyWord": "",
                "EncryChatRoomId": "0",
                "IsOwner": 0
            }
            ...此處省略第二個聯繫人信息
        ]
    }
    複製代碼

8、消息檢查

  • 說明:同步消息檢查。這裏只做檢查不做同步,如果檢查出有新消息,再掉具體同步的接口。
  • 請求方式:POST
  • 地址https://webpush2.weixin.qq.com/cgi-bin/mmwebwx-bin/synccheck
  • get參數
  • 參數 示例值 說明
    deviceid e547171618594402 參考5中的生成方式
    sid +FhlgkGS3wD/GKQw 公參中的值
    skey @crypt_8b4f09cc_1b827f84b1535b6be801f00427499050 公參中的值
    synckey 1_700722177|2_700724323|3_700724315|1000_1520925834 微信初始化後獲取的4個key,這些key會隨着每次獲取最新消息(參見9)後的返回值更新,其目的在於每次同步消息後記錄一個當前同步的狀態。
    uin 211722515 公參中的值
  • 返回:
    複製代碼
    window.synccheck={retcode:"0",selector:"2"}
    retcode
    SUCCESS("0", "成功"),

    TICKET_ERROR("-14", "ticket錯誤"),
    PARAM_ERROR("1", "傳入參數錯誤"),
    NOT_LOGIN_WARN("1100", "未登錄提示"),
    NOT_LOGIN_CHECK("1101", "未檢測到登錄"),
    COOKIE_INVALID_ERROR("1102", "cookie值無效"),
    LOGIN_ENV_ERROR("1203", "當前登錄環境異常,爲了安全起見請不要在web端進行登錄"),
    TOO_OFEN("1205", "操作頻繁");
    selector
    NORMAL("0", "正常"),
    NEW_MSG("2", "有新消息"),
    MOD_CONTACT("4", "有人修改了自己的暱稱或你修改了別人的備註"),
    ADD_OR_DEL_CONTACT("6", "存在刪除或者新增的好友信息"),
    ENTER_OR_LEAVE_CHAT("7", "進入或離開聊天界面");
    複製代碼

9、獲取最新消息

  • 說明:當同步檢查接口顯示有新消息時,調用該接口獲取具體的新消息。此處的新消息爲廣義的,包括消息,修改羣名,羣內成員變化,加好友等。
  • 請求方式:POST
  • 地址https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsync
  • get參數
  • 參數 示例值 說明
    sid +FhlgkGS3wD/GKQw 公參中的值
    skey @crypt_8b4f09cc_1b827f84b1535b6be801f00427499050 公參中的值
    uin 211722515 公參中的值
  • post參數
    複製代碼
    {
        "BaseRequest": {
            "Uin": 211722515,
            "Sid": "+FhlgkGS3wD/GKQw",
            "Skey": "@crypt_8b4f09cc_1b827f84b1535b6be801f00427499050",
            "DeviceID": "e304534670317808"
        },
        "SyncKey": {
            "Count": 4,
            "List": [{
                "Key": 1,
                "Val": 700722177
            }, {
                "Key": 2,
                "Val": 700724323
            }, {
                "Key": 3,
                "Val": 700724315
            }, {
                "Key": 1000,
                "Val": 1520925834
            }]
        },
        "rr": -508959981  String.valueOf(-new Date().getTime() / 1000)
    }
    複製代碼
  • 返回主要有AddMsgList,ModContactList,DelContactList,新一輪消息同步的synckey
    複製代碼
    {
        "BaseResponse": {
            "Ret": 0,
            "ErrMsg": ""
        },
        "AddMsgCount": 1, 新增信息
        "AddMsgList": [{
            "MsgId": "320984672637990367", 服務端返回的消息id,可用於撤回接口參數。如果是圖片,該參數還可以作爲調用微信獲取圖片接口的參數之一。
            "FromUserName": "@abf90232027117affa7f0c0df3d1bf20", 發消息的人
            "ToUserName": "@abf90232027117affa7f0c0df3d1bf20", 發給誰
            "MsgType": 51, 消息類型,1爲文字,3爲圖片...,具體請參照消息類型表
            "Content": "",
            "Status": 3,
            "ImgStatus": 1,
            "CreateTime": 1520927383,
            "VoiceLength": 0,
            "PlayLength": 0,
            "FileName": "",
            "FileSize": "",
            "MediaId": "",
            "Url": "",
            "AppMsgType": 0,
            "StatusNotifyCode": 4,
            "ForwardFlag": 0,
            "AppInfo": {
                "AppID": "",
                "Type": 0
            },
            "HasProductId": 0,
            "Ticket": "",
            "ImgHeight": 0,
            "ImgWidth": 0,
            "SubMsgType": 0,
            "NewMsgId": 320984672637990367,
            "OriContent": "",
            "EncryFileName": ""
        }],
        "ModContactCount": 0, 聯繫人修改
        "ModContactList": [],
        "DelContactCount": 0, 聯繫人刪除
        "DelContactList": [],
        "ModChatRoomMemberCount": 0, 羣內成員變動
        "ModChatRoomMemberList": [],"ContinueFlag": 0,
        "SyncKey": { 新一輪消息更新用這些SyncKey
            "Count": 7,
            "List": [{
                "Key": 1,
                "Val": 700722177
            }, {
                "Key": 2,
                "Val": 700724325
            }, {
                "Key": 3,
                "Val": 700724315
            }, {
                "Key": 11,
                "Val": 700724093
            }, {
                "Key": 201,
                "Val": 1520927383
            }, {
                "Key": 1000,
                "Val": 1520925834
            }, {
                "Key": 1001,
                "Val": 1520917874
            }]
        },
        "SKey": "",
        "SyncCheckKey": { 新一輪消息同步用這些Key
            "Count": 7,
            "List": [{
                "Key": 1,
                "Val": 700722177
            }, {
                "Key": 2,
                "Val": 700724325
            }, {
                "Key": 3,
                "Val": 700724315
            }, {
                "Key": 11,
                "Val": 700724093
            }, {
                "Key": 201,
                "Val": 1520927383
            }, {
                "Key": 1000,
                "Val": 1520925834
            }, {
                "Key": 1001,
                "Val": 1520917874
            }]
        }
    

}

複製代碼

10、創建羣聊

11、修改羣聊

12、發送消息

  • 說明:發送文本消息(包括表情),不能發送圖片或文件。
  • 請求方式:POST
  • 地址https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsg
  • get參數
  • 參數 示例值 說明
    pass_ticket yp5RfCpb%2FsNVex0Uepn1BWXNCYCqTfqe8NOYzan%2B4Y4%3D 公參中的值
  • post參數
    複製代碼
    {
        "BaseRequest": {
            "Uin": 211722515,
            "Sid": "+FhlgkGS3wD/GKQw",
            "Skey": "@crypt_8b4f09cc_1b827f84b1535b6be801f00427499050",
            "DeviceID": "e107694022625701"
        },
        "Msg": {
            "Type": 1,
            "Content": "呵呵",
            "FromUserName": "@abf90232027117affa7f0c0df3d1bf20",
            "ToUserName": "filehelper",
            "LocalID": "15209344559450477", 時間戳左移4位隨後補上4位隨機數
            "ClientMsgId": "15209344559450477"
         "MediaId": "" 如果是圖片才傳這個值 }, "Scene": 0 }
    複製代碼
  • 返回:
    複製代碼
    {
        "BaseResponse": {
            "Ret": 0,
            "ErrMsg": ""
        },
        "MsgID": "7615282929538795099", 服務端返回的消息id,可用於撤回等接口的參數
        "LocalID": "15209344559450477" 本地的消息id,是你自己發請求時的參數
    }
    複製代碼

13、上傳文件到微信服務器

  • 說明:發送圖片時需要先調用該接口將圖片上傳至微信服務器,微信會返回一個圖片的id,發送消息時攜帶該id即可發送圖片。
  • 請求方式:POST(此處的Content-Type應該設置爲multipart/form-data; boundary=…------------------41184676334)
  • 地址https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxuploadmedia
  • get參數
  • 參數 示例值 說明
    pass_ticket yp5RfCpb%2FsNVex0Uepn1BWXNCYCqTfqe8NOYzan%2B4Y4%3D 公參中的值
  • post參數
    複製代碼
    -----------------------------41184676334
    Content-Disposition: form-data; name="id" 此處隨意
    

WU_FILE_0
-----------------------------41184676334
Content
-Disposition: form-data; name=name圖片名稱

Desert.jpg
-----------------------------41184676334
Content
-Disposition: form-data; name=type圖片類型

image/jpeg
-----------------------------41184676334
Content
-Disposition: form-data; name=lastModifiedDate發送時間,該參數可無

Tue Jul 14 2009 13:32:31 GMT+0800
-----------------------------41184676334
Content
-Disposition: form-data; name=size圖片大小

845941
-----------------------------41184676334
Content
-Disposition: form-data; name=chunks總共分多少批上傳

2
-----------------------------41184676334
Content
-Disposition: form-data; name=chunk當前是第幾批

0
-----------------------------41184676334
Content
-Disposition: form-data; name=mediatype當傳圖片時,此處寫pic

pic
-----------------------------41184676334
Content
-Disposition: form-data; name=uploadmediarequest

  {
    "UploadType": 2, 固定爲2
    "BaseRequest": {
      "Uin": 211722515,
      "Sid": "+FhlgkGS3wD/GKQw",
      "Skey": "@crypt_8b4f09cc_1b827f84b1535b6be801f00427499050",
      "DeviceID": "e787605163473377"
    },
    "ClientMediaId": 1520935168955,
    "TotalLen": 845941, 文件大小
    "StartPos": 0,
    "DataLen": 845941, 文件大小
    "MediaType": 4, 固定爲4,表示圖片
    "FromUserName": "@abf90232027117affa7f0c0df3d1bf20", 該參數可填可不填
    "ToUserName": "filehelper", 該參數可填可不填
    "FileMd5": "ba45c8f60456a672e003a875e469d0eb" 該參數隨機一個uuid即可
  }

-----------------------------41184676334
Content-Disposition: form-data; name="webwx_data_ticket"

gSenocajd7UaXQesCD3smJ5p
-----------------------------41184676334
Content
-Disposition: form-data; name=pass_ticket

yp5RfCpb/sNVex0Uepn1BWXNCYCqTfqe8NOYzan+4Y4=
-----------------------------41184676334
Content
-Disposition: form-data; name=filename; filename=Desert.jpg
Content
-Type: application/octet-stream

此處爲該文件的流,前端寫成<input type=“file”>就是這個效果

複製代碼
  • 返回:可能分批次上傳,最後上傳成功時返回如下結果
    複製代碼
    {
        "BaseResponse": {
            "Ret": 0,
            "ErrMsg": ""
        },
    下面的MediaId參數,作爲下一步發送圖片接口的入參,就可以發送該圖片了 "MediaId": "@crypt_14402eb3_bb9eee20e7239fcd3323a0ea5a36cfd5e7fd162b72e03088efa4f63f53219c6f672c6be3ec1865291a70f38bb82bc5bf1d42166996b4a0313abe95454bff0316c19bfd29b71f4f98ccb7d301eed7b74995e35eabfd3f8264a3d684b8e9f08485ad00c3955cdc5b60ac96e67a9ca24bf7a01b9363ae0364f75fa0c9e6235e2dc91aef95b34c71c503deada9898a28ce5bf13d908f7834f7cae427aaba68aff5500125314f73b79f5a63103d430aa162420262e3d1a5e5f110cba0f2ee20017aaf0f127303153dcf63f9e5a56ff8c64f5dfb3f229011374b34fe7a905b0ee055d85b76827e2e68b8947c7b5fcd56c98ede9f012b6160a193762f63842886dca36872727db0c3cd4761af96c56bfdfb0a42630fee9954c764b5cd31f6ff666649b028bb1852366e639e1008cee678d5e587aabbe78014307ae1fbe638e2c0b52115", "StartPos": 845941, "CDNThumbImgHeight": 75, "CDNThumbImgWidth": 100, "EncryFileName": "Desert.jpg" }
    複製代碼
  • 14、發送圖片

    • 說明:上一步上傳文件到微信服務器成功後,調用該發送圖片接口。
    • 請求方式:POST
    • 地址https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsgimg
    • get參數
    • 參數 示例值 說明
      pass_ticket yp5RfCpb%2FsNVex0Uepn1BWXNCYCqTfqe8NOYzan%2B4Y4%3D 公參中的值
      fun async  
    • post參數同發文本消息,只是多一個MediaId
    • 返回:同發文本消息

    15、獲取圖片

    • 說明:上一步上傳文件到微信服務器成功後,調用該發送圖片接口。
    • 請求方式:GET
    • 地址https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsgimg
    • get參數
    • 參數 示例值 說明
      MsgID 3176600141007621447 服務端返回的消息id
      skey @crypt_8b4f09cc_1b827f84b1535b6be801f00427499050 公參中的值 
      type slave 該參數有則爲縮略圖,沒有則爲原圖
    • 攜帶3個cookie的值wxuin,wxsid,webwx_data_ticket
    • 返回:圖片的流

     

     二、一些狀態碼code值的說明

    1. BaseResponse裏的Ret
      複製代碼
      SUCCESS("0", "成功"),
      TICKET_ERROR("-14", "ticket錯誤"),
      PARAM_ERROR("1", "傳入參數錯誤"),
      NOT_LOGIN_WARN("1100", "未登錄提示"),
      NOT_LOGIN_CHECK("1101", "未檢測到登錄"),
      COOKIE_INVALID_ERROR("1102", "cookie值無效"),
      LOGIN_ENV_ERROR("1203", "當前登錄環境異常,爲了安全起見請不要在web端進行登錄"),
      TOO_OFEN("1205", "操作頻繁");
      複製代碼
    2. 同步消息檢查返回值中retcode和selector
      複製代碼
      retcode
        SUCCESS("0", "成功"),
        TICKET_ERROR("-14", "ticket錯誤"),
        PARAM_ERROR("1", "傳入參數錯誤"),
        NOT_LOGIN_WARN("1100", "未登錄提示"),
        NOT_LOGIN_CHECK("1101", "未檢測到登錄"),
        COOKIE_INVALID_ERROR("1102", "cookie值無效"),
        LOGIN_ENV_ERROR("1203", "當前登錄環境異常,爲了安全起見請不要在web端進行登錄"),
        TOO_OFEN("1205", "操作頻繁");
      selector
        NORMAL("0", "正常"),
        NEW_MSG("2", "有新消息"),
        MOD_CONTACT("4", "有人修改了自己的暱稱或你修改了別人的備註"),
        ADD_OR_DEL_CONTACT("6", "存在刪除或者新增的好友信息"),
        ENTER_OR_LEAVE_CHAT("7", "進入或離開聊天界面");
      複製代碼
    3. 消息類型
      複製代碼
      TEXT(1, "文本消息類型"),
      IMAGE(3, "圖片消息"),
      VOICE(34, "語音消息"),
      VIDEO(43, "小視頻消息"),
      MICRO_VIDEO(62, "短視頻消息"),
      EMOTI_CON(47, "表情消息"),
      MEDIA(49, "多媒體消息"),
      VOIP_MSG(50, ""),
      VOIP_NOTIFY(52, ""),
      VOIP_INVITE(53, ""),
      LOCATION(48, ""),
      STATUS_NOTIFY(51, "狀態通知,自己訪問了某一個聊天頁面"),
      SYS_NOTICE(9999, ""),
      POSSIBLE_FRIEND_MSG(40, ""),
      VERIFY_MSG(37, "好友請求"),
      SHARE_CARD(42, "分享名片"),
      SYS(10000, "系統消息"),
      RECALLED(10002, "撤回消息");
      複製代碼
    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章