1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hotlcc-wechat4j

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
web-weixin-api.md 35 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 10:43 db0818b

Web微信API документ

1. Логин

Web-версия страницы входа в WeChat — это https://wx.qq.com. Ниже приведён текст, который начинается с этой страницы.

1.1. Получение login uuid

После перехода на страницу входа в Web-версию WeChat, в консоли разработчика браузера можно увидеть, что перед загрузкой изображения с QR-кодом отправляется GET-запрос:

https://login.wx.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=zh_CN&_=1532078129220

Этот запрос используется для получения login uuid. Анализ показывает следующее:

Параметр Значение Описание
appid wx782c26e4c19acffb Это значение не меняется и указывает на то, что запрос исходит от Web-версии WeChat;
redirect_uri https%3A%2F%2Fwx2.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage Страница перенаправления; необязательный параметр;
fun new Фиксированное значение;
lang zh_CN Язык; zh_CN означает китайский язык;
_ 1532078129220 13-значный timestamp;

Затем сервер возвращает данные:

window.QRLogin.code = 200; window.QRLogin.uuid = "wcXrINkB9Q==";
  • window.QRLogin.code имеет значение 200, когда вход выполнен успешно, и любое другое значение, если вход не удался.
  • window.QRLogin.uuid — это полученный uuid, который будет отличаться при каждом обновлении страницы. Фактически, uuid используется сервером для идентификации каждого входа.

1.2. Получение QR-кода

Далее будет отправлен следующий GET-запрос:

https://login.weixin.qq.com/qrcode/wcXrINkB9Q==

URL в конце запроса — это ссылка на изображение QR-кода, а строка после «=» — это ранее полученный uuid.

1.3. Ожидание подтверждения входа

После получения QR-кода будет отправлен GET-запрос, ожидающий подтверждения входа или сканирования QR-кода:

https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=wcXrINkB9Q==&tip=0&r=1223005686&_=1532080293141

Если пользователь не отсканирует QR-код вовремя, этот запрос будет повторяться через некоторое время, указывая на то, что браузер периодически отправляет запросы.

Анализ параметров URL:

Параметр Значение Описание
loginicon true Фиксированное значение;
uid wcXrINkB9Q== То же, что и предыдущий uuid;
tip 0 или 1 0 означает ожидание сканирования пользователем QR-кода для подтверждения; 1 означает ожидание прямого подтверждения пользователем, используется при push-логине;
r 1223005686 10-значное случайное число;
_ 1532080293141 13-значный timestamp;

Если QR-код не сканируется вовремя, сервер вернёт данные:

window.code=408;

Это означает, что не было получено подтверждение аутентификации, и необходимо повторно отправить запрос.

Если сканирование QR-кода не происходит, сервер вернёт данные:

window.code=400;

Это указывает на то, что текущий вход с использованием этого uuid больше не действителен, и процесс входа должен быть повторён с новым uuid.

После успешного сканирования QR-кода и до нажатия кнопки подтверждения входа сервер вернёт:

window.code=201;

Это означает, что приложение WeChat на стороне клиента уже отсканировало QR-код, но пользователь ещё не нажал кнопку подтверждения.

После сканирования QR-кода и нажатия кнопки подтверждения сервер вернёт:

window.code=200;
window.redirect_uri="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=A51bGY49nxxxxxxx1wNPC3@qrticket_0&uuid=wcXrINkB9Q==&lang=zh_CN&scan=1532083897";

Здесь window.code имеет значение 200, что указывает на успешный вход в приложение на стороне клиента. window.redirect_uri содержит URL, на который нужно перейти.

1.4. Получение кода аутентификации

После успешной аутентификации приложения на стороне клиента будет отправлен новый GET-запрос:

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=A51bGY49nxxxxxxx1wNPC3@qrticket_0&uuid=wcXrINkB9Q==&lang=zh_CN&scan=1532083897&fun=new&version=v2

Он совпадает с redirect_uri, полученным после успешного входа, с добавлением &fun=new&version=v2. Этот запрос приведёт к отключению других пользователей WeChat (через Web или ПК), которые вошли в систему.

Параметры URL:

Параметр Значение Описание
ticket A51bGY49nxxxxxxx1wNPC3@qrticket_0 Сохраняется неизменным;
uuid wcXrINkB9Q== То же самое, что и раньше;
lang zh_CN Язык; zh_CN обозначает китайский язык;
scan 1532083897 Время сканирования QR-кода пользователем;
fun new Фиксированное значение;
version v2 Фиксированное значение;

Сервер вернёт следующие данные:

<error>
  <ret>0</ret>
  <message></message>
  <skey>@crypt_jkde99da_b4xxxxxxxxxxxxxxx76d9yualp</skey>
  <wxsid>8rwxxxxxxxxxHq2P</wxsid>
  <wxuin>26xxx7</wxuin>
  <pass_ticket>AFsdZ7eHxxxxxxxxxxxxxxxxfr1vjHPn=</pass_ticket>
  <isgrayscale>1</isgrayscale>
</error>

(Для обеспечения конфиденциальности данные ответа были изменены.)

  • ret имеет значение 0, указывающее на успешное выполнение запроса.
  • skey, wxsid и wxuin содержат информацию о конкретном пользователе WeChat и остаются неизменными в последующих коммуникациях. Они необходимы для дальнейшей работы.
  • pass_ticket используется при инициализации страницы и должен быть сохранён.

1.5. Выход из системы

При нажатии кнопки выхода будут отправлены два POST-запроса:

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxlogout?redirect=1&type=0&skey=%40crypt_jkde99da_b4xxxxxxxxxxxxxxx76d9yualp
https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxlogout?redirect=1&type=1&skey=%40crypt_jkde99da_b4xxxxxxxxxxxxxxx76d9yualp

Эти запросы отличаются только значением параметра type, которое сначала равно 0, а затем 1.

Параметры URL:

Параметр Значение Описание
redirect 1 Фиксированное значение;
type 0 или 1 0 или 1, фиксированное значение;
skey %40crypt_jkde99da_b4xxxxxxxxxxxxxxx76d9yualp Получен во время входа; требует urlencode;

Данные формы:

Поле Значение Описание
sid Получено во время входа;
uin Получено во время входа;

Сервер возвращает данные:

Запрос приводит к перенаправлению страницы, без дополнительных данных.

1.6. Быстрый вход

После выхода из системы появится страница быстрого входа. После нажатия кнопки входа будет отправлен запрос webwxpushloginurl:

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxpushloginurl?uin=26xxx7

Этот метод не требует сканирования QR-кода. Он используется после ручного выхода из системы для получения нового uuid и продолжения процесса входа, описанного в пункте 1.3.

Параметры URL:

Параметр Значение Описание
uin 26xxx7 То же значение, что и полученное во время предыдущего входа;

Сервер возвратит данные:

{
    "ret": "0",
    "msg": "all ok",
    "uuid": "A_1_xxxw=="
}
  • Здесь ret равен 0 и указывает на успешное выполнение. Если uin указан неверно, ret будет иметь значение 1 или другое, указывающее на ошибку.
  • uuid — это новый uuid. После многократного выполнения действий «выход — быстрый вход — выход — быстрый вход» было обнаружено, что uin остаётся неизменным, а uuid изменяется. |r|1219172280|10-битное случайное число;| |lang|zh_CN|язык; zh_CN обозначает китайский;| |pass_ticket|AFsdZ7eHxxxxxxxxxxxxxxxxfr1vjHPn=|полученный на предыдущем шаге;|

POST данные (JSON):

{
    "BaseRequest": {
        "DeviceID": "e659xxxxxxxx3006",
        "Sid": "8rwxxxxxxxxxHq2P",
        "Skey": "@crypt_jkde99da_b4xxxxxxxxxxxxxxx76d9yualp",
        "Uin": "26xxx7"
    }
}

Анализ параметров POST:

Числовое имя Пример значения Описание
BaseRequest.DeviceID e659xxxxxxxx3006 идентификатор устройства, e с добавлением 15 случайных символов;
BaseRequest.Sid rwxxxxxxxxxHq2P полученный на предыдущем этапе wxsid;
BaseRequest.Skey crypt_jkde99da_b4xxxxxxxxxxxxxxx76d9yualp полученный на предыдущем этапе skey;
BaseRequest.Uin 6xxx7 полученный на предыдущем этапе uin;

Данные ответа сервера:

{
    "BaseResponse": {
        "Ret": 0,
        "ErrMsg": ""
    },
    "Count": 11,
    "ContactList": [{
        "Uin": 0,
        "UserName": "filehelper",
        "NickName": "...",
        "HeadImgUrl": "...",
        "ContactFlag": 5,
        "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
    }],
    "SyncKey": {
        "Count": 4,
        "List": [{
            "Key": 1,
            "Val": 704152857
        }, {
            "Key": 2,
            "Val": 704152894
        }, {
            "Key": 3,
            "Val": 704152870
        }, {
            "Key": 1000,
            "Val": 1532075042
        }]
    },
    "User": {...},
    "ChatSet": "...",
    "SKey": "@crypt_jkde99da_b4xxxxxxxxxxxxxxx76d9yualp",
    "ClientVersion": 3697797,
    "SystemTime": 1132000000,
    "GrayScale": 1,
    "InviteStartCount": 40,
    "MPSubscribeMsgCount": 0,
    "MPSubscribeMsgList": [],
    "ClickReportInterval": 600000
}
  • BaseResponse.Ret указывает на статус запроса, 0 означает успех.
  • ContactList содержит список последних контактов. Пользователи в списке контактов имеют имя пользователя, начинающееся с @, как друзья, и имя пользователя с двумя @, как группа.
  • MPSubscribeMsg представляет собой сообщение о подписке на публичный аккаунт.
  • User — это информация о текущем зарегистрированном пользователе.

2.2. Включение уведомления о состоянии сообщения

Далее необходимо включить уведомление о состоянии сообщений. Мы видим следующий запрос POST:

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxstatusnotify?lang=zh_CN&pass_ticket=AFsdZ7eHxxxxxxxxxxxxxxxxfr1vjHPn=

Параметры URL:

числовое имя пример значения описание
lang zh_CN язык, zh_CN означает китайский язык;
pass_ticket AFsdZ7eHxxxxxxxxxxxxxxxxfr1vjHPn= как и раньше;

Данные POST (JSON):

{
    "BaseRequest": {
        "DeviceID": "e81xxxxxxxxx7686",
        "Sid": "8rwxxxxxxxxxHq2P",
        "Skey": "@crypt_jkde99da_b4xxxxxxxxxxxxxxx76d9yualp",
        "Uin": "26xxx7"
    },
    "ClientMsgId": 1532xxxxx3374,
    "Code": 3,
    "FromUserName": "@56a0a9xxxxxxxxxxxxx54w0dxxxxbfab",
    "ToUserName": "@56a0a9xxxxxxxxxxxxx54w0dxxxxbfab"
}

Анализ параметров POST:

Параметр Пример значения Описание
BaseRequestB {
"DeviceID":"e81xxxxxxxxx7686",
"Sid":"8rwxxxxxxxxxHq2P",
"Skey":"@crypt_jkde99da_b4xxxxxxxxxxxxxxx76d9yualp",
"Uin":"26xxx7"
Каждый запрос POST отправляет BaseRequest, где DeviceID — буква e, за которой следуют 15 случайных строк, а остальные три параметра — это предыдущая аутентифицированная информация.
ClientMsgId 1532xxxxx3374 13-значный временной штамп;
Code 3 фиксированное значение;
FromUserName @56a0a9xxxxxxxxxxxxx54w0dxxxxbfab получено при загрузке страницы;
ToUserName @56a0a9xxxxxxxxxxxxx54w0dxxxxbfab то же, что и FromUserName;

Ответ сервера:

{
    "BaseResponse": {
        "Ret": 0,
        "ErrMsg": ""
    },
    "MsgID": "2271xxxxxxxxxxxxx44"
}
  • BaseResponse.Ret представляет статус запроса, 0 указывает на успех. |skey|%40crypt_jkde99da_b4xxxxxxxxxxxxxxx76d9yualp|То же, что и выше; необходимо urlencode;| |sid|8rwxxxxxxxxxHq2P|То же, что и выше;| |uin|26xxx7|То же, что и выше;| |deviceid|e35077xxxx772148|Идентификатор устройства, e с 15 случайными символами;| |synckey|1_704152857%7C2_704152996%7C3_704152955%7C1000_1532127722|Составлен из списка Sync в виде списка, полученного на странице инициализации входа; необходимо urlencode;| |_|1532145290777|13-значный временной штамп;|

Сервер возвращает данные:

window.synccheck={retcode:"0",selector:"2"}

Анализ возвращаемых данных:

Название Пример значения Описание
retcode 0 Указывает текущее состояние онлайн.
0: нормально
1100: сбой/выход из WeChat
1101: вход в WeChat с другого устройства
selector 2 Указывает состояние сообщения.
0: нормально
2: есть новые сообщения
4: обнаружено изменение примечания контакта
7: действие на телефоне

3. Контактный менеджер

3.1. Получение полного списка контактов

Далее можно увидеть запрос GET для получения полного списка контактов:

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact?lang=zh_CN&pass_ticket=AFsdZ7eHxxxxxxxxxxxxxxxxfr1vjHPn%253D&r=1532190636970&seq=0&skey=@crypt_jkde99da_b4xxxxxxxxxxxxxxx76d9yualp

Параметры URL:

Параметр Пример значения Описание
lang zh_CN Язык;
pass_ticket AFsdZ7eHxxxxxxxxxxxxxxxxfr1vjHPn%253D То же самое, что и раньше;
r 1532190636970 13-значное время;
seq 0 Фиксированное значение;
skey @crypt_jkde99da_b4xxxxxxxxxxxxxxx76d9yualp То же самое, что и раньше;

Сервер возвращает данные:

{
    "BaseResponse": {
        "Ret": 0,
        "ErrMsg": ""
    },
    "MemberCount": 1,
    "MemberList": [{
        "Uin": 0,
        "UserName": "weixin",
        "NickName": "微信团队",
        "HeadImgUrl": "/cgi-bin/mmwebwx-bin/webwxgeticon?seq=1&username=weixin&skey=@crypt_4fb399da_91a345e0be9deca5d61b183fc36a3a93",
        "ContactFlag": 1,
        "MemberCount": 0,
        "MemberList": [],
        "RemarkName": "",
        "HideInputBarFlag": 0,
        "Sex": 0,
        "Signature": "微信团队官方帕啷",
        "VerifyFlag": 56,
        "OwnerUin": 0,
        "PYInitial": "WXTD",
        "PYQuanPin": "weixintuandui",
        "RemarkPYInitial": "",
        "RemarkPYQuanPin": "",
        "StarFriend": 0,
        "AppAccountFlag": 0,
        "Statues": 0,
        "AttrStatus": 4,
        "Province": "",
        "City": "",
        "Alias": "",
        "SnsFlag": 0,
        "UniFriend": 0,
        "DisplayName": "",
        "ChatRoomId": 0,
        "KeyWord": "wei",
        "EncryChatRoomId": "",
        "IsOwner": 0
    }],
    "Seq": 0
}
  • BaseResponse.Ret равен 0, что указывает на успешное выполнение запроса.
  • MemberCount указывает общее количество контактов.
  • MemberList содержит список контактов, который включает друзей, группы и публичные аккаунты. Друзья и публичные аккаунты различаются по ContactFlag: 1 — друг, 2 — группа, 3 — публичный аккаунт.

Описание полей в User:

   "Uin": 0,
   "UserName": имя пользователя, один "@" обозначает друга, два "@" обозначают группу
   "NickName": псевдоним
   "HeadImgUrl": URL-адрес изображения аватара
   "ContactFlag": 1-друг, 2-группа, 3-публичный аккаунт
   "MemberCount": количество членов группы, действует только в информации о группе
   "MemberList": список участников
   "RemarkName": примечание к имени
   "HideInputBarFlag": 0,
   "Sex": пол, 0-не установлен (публичный аккаунт, конфиденциальность), 1-мужской, 2-женский
   "Signature": описание публичного аккаунта или личная подпись друга
   "VerifyFlag": 0,
   "OwnerUin": 0,
   "PYInitial": аббревиатура имени пользователя
   "PYQuanPin": полное написание имени пользователя
   "RemarkPYInitial":аббревиатура примечания
   "RemarkPYQuanPin":полное написание примечания
   "StarFriend": является ли друг отмеченным
   0-нет
   1-да
   "AppAccountFlag": 0,
   "Statues": 0,
   "AttrStatus": 119911,
   "Province": провинция
   "City": город
   "Alias":
   "SnsFlag": 17,
   "UniFriend": 0,
   "DisplayName": "",
   "ChatRoomId": 0,
   "KeyWord":
   "EncryChatRoomId": ""

3.2. Пакетное получение информации о конкретных пользователях

Затем можно увидеть пакетный запрос POST для получения информации о конкретных контактах:

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxbatchgetcontact?type=ex&r=1532246093335&lang=zh_CN&pass_ticket=AFsdZ7eHxxxxxxxxxxxxxxxxfr1vjHPn%253D

Этот запрос используется для пакетного получения информации о друзьях или пакетного получения информации об участниках группового чата.

Параметры URL:

Параметр Пример значения Описание
type ex Неизвестно, что это значит;
r 1532246093335 13-значное время;
lang zh_CN Язык;
pass_tickt AFsdZ7eHxxxxxxxxxxxxxxxxfr1vjHPn%253D Ранее полученный;

Данные POST (JSON):

{
    "BaseRequest": {
        "DeviceID": "e81xxxxxxxxx7686",
        "Sid": "8rwxxxxxxxxxHq2P",
        "Skey": "@crypt_jkde99da_b4xxxxxxxxxxxxxxx76d9yualp",
        "Uin": "26xxx7"
    },
    "Count": 2,
    "List": [
        {
            "EncryChatRoomId": "",
            "UserName": "@@76feaa87c63576aaxxxxxxxxeaaa7030c60a09d33"

        },
        {
            "ChatRoomId": "",
            "UserName": "@@55664b9ab69bbe5e6aaxxxxxxxxx778c17e11e9dab09c9a1"

        }
    ]
}

Параметры POST:

Параметр Пример значения Описание
BaseRequest Основные параметры запроса, такие же, как и ранее;
Count Количество пользователей, которых нужно запросить;

Сформированный список, в котором содержится информация о пользователях, чьи данные необходимо получить. Если необходимо получить информацию о друзьях, то поля EncryChatRoomId или ChatRoomId должны быть пустыми, а поле UserName должно содержать имя друга. Если же необходимо получить информацию об участниках группового чата, то в полях EncryChatRoomId и ChatRoomId указывается идентификатор группового чата, а в поле UserName — имя участника.|

Сервер возвращает следующие данные:

{
    "BaseResponse": {
        "Ret": 0,
        "ErrMsg": ""
    },
    "Count": 2,
    "ContactList": [{
        "Uin": 0,
        "UserName": "@@76feaa87c635763438059aaeaaa7030c60a09d33",
        "NickName": "一啣ç<span class=\"emoji emoji1f525\"></span>¾¤)",
        "HeadImgUrl": "/cgi-bin/mmwebwx-bin/webwxgetheadimg?seq=704138898&username=@@76feaa87c635763438059aaeaaa7030c60a09d33&skey=",
        "ContactFlag": 3,
        "MemberCount": 80,
        "MemberList": [
            {
                "Uin": 0,
                "UserName": "@3a13860046f9f5cac66faba26f2bd0537f535",
                "NickName": "龎",
                "AttrStatus": 2147437,
                "PYInitial": "",
                "PYQuanPin": "",
                "RemarkPYInitial": "",
                "RemarkPYQuanPin": "",
                "MemberStatus": 0,
                "DisplayName": "",
                "KeyWord": ""
            }, ...
        ],
        "RemarkName": "",
        "HideInputBarFlag": 0,
        "Sex": 0,
        "Signature": "",
        "VerifyFlag": 0,
        "OwnerUin": 0,
        "PYInitial": "",
        "PYQuanPin": "",
        "RemarkPYInitial": "",
        "RemarkPYQuanPin": "",
        "StarFriend": 0,
        "AppAccountFlag": 0,
        "Statues": 0,
        "AttrStatus": 0,
        "Province": "",
        "City": "",
        "Alias": "",
        "SnsFlag": 0,
        "UniFriend": 0,
        "DisplayName": "",
        "ChatRoomId": 0,
        "KeyWord": "",
        "EncryChatRoomId": "@5fd8877457351e3a697",
        "IsOwner": 0
    }, {
        "Uin": 0,
        "UserName": "@f7dee38d1c3626c0e421c1f66deac0906559ac",
        "NickName": "尕娅",
        "HeadImgUrl": "/cgi-bin/mmwebwx-bin/webwxgeticon?seq=686458815&username=@f7dee38d1c3626c0e421c1f66deac0906559ac&skey=",
        "ContactFlag": 259,
        "MemberCount": 0,
        "MemberList": [],
        "RemarkName": "啢潧",
        "HideInputBarFlag": 0,
        "Sex": 2,
        "Signature": "ä½ è<span class=\"emoji emoji1f48b\"></span>",
        "VerifyFlag": 0,
        "OwnerUin": 0,
        "PYInitial": "XY",
        "PYQuanPin": "",
        "RemarkPYInitial": "",
        "RemarkPYQuanPin": "",
        "StarFriend": 0,
        "AppAccountFlag": 0,
        "Statues": 0,
        "AttrStatus": 1047,
        "Province": "å京",
        "City": "",
        "Alias": "",
        "SnsFlag": 49,
        "UniFriend": 0,
        "DisplayName": "",
        "ChatRoomId": 0,
        "KeyWord": "",
        "EncryChatRoomId": "0",
        "IsOwner": 0
    }]
}

ContactList — это список полученных данных о контактах.

3.3. Изменение примечания контакта

При изменении примечания контакта браузер отправляет следующий POST-запрос:

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxoplog

Данные POST (JSON):

{
    "BaseRequest": {
        "DeviceID": "e81xxxxxxxxx7686",
        "Sid": "8rwxxxxxxxxxHq2P",
        "Skey": "@crypt_jkde99da_b4xxxxxxxxxxxxxxx76d9yualp",
        "Uin": "26xxx7"
    },
    "CmdId": 2,
    "RemarkName": "Новый примечание",
    "UserName": "@07a2e8b4a1f98eb78a7xxxxxxxxxxxx5b7bc4908376xxx05917b"
}

Анализ параметров POST:

Параметр Пример значения Описание
BaseRequest Основные параметры запроса, такие же, как и в других запросах;
CmdId 2 Фиксированное значение; возможно, есть и другие значения для обозначения различных типов операций.
RemarkName Новое примечание Новое примечание;
UserName @07a2e8b4a1f98eb78a7xxxxxxxxxxxx5b7bc4908376xxx05917b Имя пользователя, чьё примечание нужно изменить.

Ответ сервера:

{
    "BaseResponse": {
        "Ret": 0,
        "ErrMsg": ""
    }
}

BaseResponse.Ret означает успешное выполнение операции.

4. Отправка и получение сообщений

4.1. Получение новых сообщений с сервера

В запросе 2.4 при каждом ответе на запрос с параметрами selector равными 2 или 6 происходит следующий POST-запрос для получения новых сообщений с сервера:

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsync?sid=8rwxxxxxxxxxHq2P&skey=@crypt_jkde99da_b4xxxxxxxxxxxxxxx76d9yualp&pass_ticket=AFsdZ7eHxxxxxxxxxxxxxxxxfr1vjHPn%253D

Параметры URL:

Параметр Пример значения Описание
sid 8rwxxxxxxxxxHq2P Такой же, как в предыдущих запросах;
skey @crypt_jkde99da_b4xxxxxxxxxxxxxxx76d9yualp Такой же, как в предыдущих запросах;
pass_ticket AFsdZ7eHxxxxxxxxxxxxxxxxfr1vjHPn%253D Такой же, как в предыдущих запросах.

Данные POST (JSON):

{
    "BaseRequest": {
        "DeviceID": "e2089xxxxx902803",
        "Sid": "8rwxxxxxxxxxHq2P",
        "Skey": "@crypt_jkde99da_b4xxxxxxxxxxxxxxx76d9yualp",
        "Uin":
} **Ответ:**

POST параметры:

Параметр Пример значения Описание
BaseRequest {«DeviceID»: «e81xxxxxxxxx7686», «Sid»: «8rwxxxxxxxxxHq2P», «Skey»: «@crypt_jkde99da_b4xxxxxxxxxxxxxxx76d9yualp», «Uin»: «26xxx7»} Каждый POST запрос отправляет BaseRequest, где DeviceID — это буква e и 15 случайных символов, а остальные три параметра — это ранее полученные данные аутентификации.
SyncKey {«Count»: ..., «List»: [...]} Ранее полученный SyncKey, который обновляется в каждом запросе после первого получения данных. Первый раз данные получаются при инициализации, затем — в последующих запросах.

Сервер возвращает данные: { "BaseResponse": { "Ret": 0, "ErrMsg": "" }, "AddMsgCount": 1, "AddMsgList": [{ "MsgId": "462399962004142457", "FromUserName": "@56a0a9xxxxxxxxxxxxx54w0dxxxxbfab", "ToUserName": "@56a0a9xxxxxxxxxxxxx54w0dxxxxbfab", "MsgType": 51, "Content": "", "Status": 3, "ImgStatus": 1, "CreateTime": 1532190642, "VoiceLength": 0, "PlayLength": 0, "FileName": "", "FileSize": "", "MediaId": "", "Url": "", "AppMsgType": 0, "StatusNotifyCode": 4, "StatusNotifyUserName": "...", "RecommendInfo": { "UserName": "", "NickName": "", "QQNum": 0, "Province": "", "City": "", "Content": "", "Signature": "", "Alias": "", "Scene": 0, "VerifyFlag": 0, "AttrStatus": 0, "Sex": 0, "Ticket": "", "OpCode": 0 }, "ForwardFlag": 0, "AppInfo": { "AppID": "", "Type": 0 }, "HasProductId": 0, "Ticket": "", "ImgHeight": 0, "ImgWidth": 0, "SubMsgType": 0, "NewMsgId": 462399962004142457, "OriContent": "", "EncryFileName": "" }], "ModContactCount": 0, "ModContactList": [], "DelContactCount": 0, "DelContactList": [], "ModChatRoomMemberCount": 0, "ModChatRoomMemberList": [], "Profile": { "BitFlag": 0, "UserName": { "Buff": "" }, "NickName": { "Buff": "" }, "BindUin": 0, "BindEmail": { "Buff": "" }, "BindMobile": { "Buff": "" }, "Status": 0, "Sex": 0, "PersonalCard": 0, "Alias": "", "HeadImgUpdateFlag": 0, "HeadImgUrl": "", "Signature": "" }, "ContinueFlag": 0, "SyncKey": { "Count": 7, "List": [{ "Key": 1, "Val": 704153081 }, { "Key": 2, "Val": 704153169 }, { "Key": 3, "Val": 704153152 }, { "Key": 11, "Val": 704152941 }, { "Key": 201, "Val": 1532190642 }, { "Key": 1000, "Val": 1532190561 }, { "Key": 1001, "Val": 1532180114 }] }, "SKey": "", "SyncCheckKey": { "Count": 7, "List": [{ "Key": 1, "Val": 704153081 }, { "Key": 2, "Val": 704153169 }, { "Key": 3, "Val": 704153152 }, { "Key": 11, "Val": 704152941 }, { "Key": 201, "Val": 1532190642 }, { "Key": 1000, "Val": 1532190561 }, { "Key": 1001, "Val": 1532180114 }] } }


* *AddMsgCount* — количество новых сообщений.
* *AddMsgList* — список новых сообщений.  
  * *MsgType* может принимать следующие значения:  
    * 1 — текстовое сообщение;  
    * 3 — изображение;  
    * 34 — голосовое сообщение;  
    * 37 — VERIFYMSG (подтверждающее сообщение). |Msg.Type|3|消息类型;同3.1中接收的消息类型;|
|Msg.MediaId||4.3接口中返回的MediaId;|
|Scene|0|固定值;|

Сервис возвращает данные:

```json
{
    "BaseResponse": {
        "Ret": 0,
        "ErrMsg": ""
    },
    "MsgID": "28832......8291836",
    "LocalID": "1536.....54390527"
}

Web-версия WeChat отправляет изображение. Необходимо сначала использовать интерфейс 4.3 для загрузки медиафайла на сервер, а затем использовать интерфейс 4.4 для отправки информации об изображении.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/hotlcc-wechat4j.git
git@api.gitlife.ru:oschina-mirror/hotlcc-wechat4j.git
oschina-mirror
hotlcc-wechat4j
hotlcc-wechat4j
master