CC BY-NC-SA 4.0

通用headers

javascript
1
2
3
4
5
{
'vid': vid.toString(),
'skey': skey,
'User-Agent': 'WeRead/7.0.0 WRBrand/huawei Dalvik/2.1.0'
}

登录在微信读书逆向分析-1

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 1. 使用 refresh_token 登录
const loginResponse = await fetch(`${API_BASE}/login`, {
method: 'POST',
headers: { 'User-Agent': USER_AGENT },
body: JSON.stringify({
deviceId: '1',
refCgi: '',
refreshToken: 'your_refresh_token'
})
});

const { vid, skey } = await loginResponse.json();

// 2. 使用 vid 和 skey 调用其他 API
const userProfile = await fetch(`${API_BASE}/user/profile`, {
headers: getHeaders(vid, skey)
});

错误码

通用错误码

错误码 常量名 说明
0 SUCCESS 成功
-2001 ErrorUnknown 未知错误
-2002 ErrorUndone 未完成
-2003 ErrorInvalidParam 无效参数
-2014 ErrorOverFreq 请求过于频繁
-2016 ErrorSvrReadOnly 服务器只读模式
-2018 ErrorAppVersionOut 应用版本过期
-2020 ErrorConnFail 连接失败
-2051 ErrorOverLimit 超出限制
-2053 ErrorSensitiveWord 敏感词汇

认证相关错误码

错误码 常量名 说明
-2004 ErrorInvalidVid 无效的用户ID
-2005 ErrorInvalidSkey 无效的会话密钥
-2006 ErrorInvalidOpenid 无效的OpenID
-2010 ErrorNoVid 用户不存在
-2011 ErrorGenSkey 生成会话密钥失败
-2012 ErrorSessionTimeout 登录超时
-2013 ErrorAuth 认证失败
-2017 ErrorVidReadOnly 用户只读模式
-2041 ErrorNeedVerify 需要验证
-2050 ErrorVidBlacked 用户被拉黑
-2054 ErrorInvalidToken 无效的令牌
-2063 ErrorVerExpired 验证过期
-2080 ErrorWeChatComm 微信通信错误
-2081 ErrorWeChatConnect 微信连接错误

用户相关错误码

错误码 常量名 说明
-2026 ErrorAccountSvrFail 账户服务失败
-2060 ErrorNotFriend 不是好友
-2061 ErrorUserInfoFail 获取用户信息失败
-2090 ErrorAntispamComm 反垃圾通信错误
-2704 ErrorUserForbidChat 用户禁止聊天
-2997 ErrorAccountAlreadyDeleted 账户已删除
-2998 ErrorAccountRevoked 账户已撤销

书籍相关错误码

错误码 常量名 说明
-2008 ErrorInvalidBookid 无效的书籍ID
-2024 ErrorBookSvrFail 书籍服务失败
-2030 ErrorNoBook 书籍不存在
-2031 ErrorNoReview 书评不存在
-2032 ErrorNoRate 评分不存在
-2033 ErrorNoBookInfo 书籍信息不存在
-2034 ErrorNoMark 标记不存在
-2035 ErrorNoComment 评论不存在
-2037 ErrorNoBookInventory 书籍库存不足
-2040 ErrorBookLackContent 书籍缺少内容
-2311 ErrorBorrowFreeBook 借阅免费书籍错误
-2312 ErrorBorrowPaid 借阅已付费
-2313 ErrorBorrowNotPaid 借阅未付费
-2314 ErrorBorrowInvalidStatus 借阅状态无效
-2315 ErrorBorrowInvalidData 借阅数据无效
-2316 ErrorBorrowOut 借阅超时
-2317 ErrorBorrowing 正在借阅中
-2531 ErrorBookRunning 书籍处理中
-2533 ErrorInvalidBookInfo 无效的书籍信息
-2534 ErrorNoChapterInData 数据中无章节
-2538 ErrorPreSellBook 预售书籍
-2999 ErrorUploadBookOverLimit 上传书籍超出限制

支付相关错误码

错误码 常量名 说明
-2009 ErrorInvalidPrice 无效价格
-2027 ErrorPaySvrFail 支付服务失败
-2101 ErrorPayKvSelect 支付KV查询失败
-2102 ErrorPayKvInsert 支付KV插入失败
-2103 ErrorPayKvUpdate 支付KV更新失败
-2104 ErrorPayKvParse 支付KV解析失败
-2105 ErrorPayKvDump 支付KV导出失败
-2111 ErrorPayFetchBalance 获取余额失败
-2112 ErrorPayBalanceNotEnough 余额不足
-2113 ErrorPayPayApi 支付API错误
-2114 ErrorPayPresentApi 赠送API错误
-2115 ErrorPayMidasSysErr 米大师系统错误
-2116 ErrorPayMidasLogicErr 米大师逻辑错误
-2117 ErrorPayRollbackSucc 支付回滚成功
-2118 ErrorPayRollbackFail 支付回滚失败
-2119 ErrorPayAppType 支付应用类型错误
-2121 ErrorPayPresentAuth 赠送授权错误
-2123 ErrPayMemberCardNotEnough 会员卡不足
-2201 ErrorPayPayingBook 书籍支付中
-2202 ErrorPayBookPaidAlready 书籍已付费
-2203 ErrorPayBookNotExist 支付书籍不存在
-2204 ErrorPayFetchBookPrice 获取书籍价格失败
-2205 ErrorPayFetchNotEntireBook 获取非完整书籍失败
-2206 ErrorPayFreeBook 支付免费书籍
-2207 ErrorPayLimitFreeBook 限制免费书籍
-2208 ErrorPayNoBillno 无账单号
-2221 ErrorPayChaptersPaying 章节支付中
-2222 ErrorPayChapterIdsNull 章节ID为空
-2223 ErrorPayChapterAutoPayDisable 章节自动支付禁用
-2224 ErrorPayChapterFree 章节免费
-2225 ErrorPayChapterPriceEntireBook 章节价格为整本书
-2226 ErrorPayChapterPriceLack 章节价格不足
-2227 ErrorPayChaptersPartBoughtAlready 章节部分已购买
-2228 ErrorPayChaptersAllBoughtAlready 章节全部已购买
-2229 ErrorPayChaptersAutoPayClosed 章节自动支付关闭
-2281 ErrorPayPriceChanged 价格已变更
-2282 ErrorPayBookNumLimit 书籍数量限制
-2283 ErrorPayChargeNumLimit 充值数量限制
-2284 ErrorPaySoldOut 已售罄
-2285 ErrorPayDuplicated 重复支付
-2288 ErrorPayCollageCard 拼团卡错误
-2290 ErrorCouponUsed 优惠券已使用
-2298 ErrPayMoneyNotSendBook 付费未发书
-2299 ErrorPayUnknown 支付未知错误

书评相关错误码

错误码 常量名 说明
-2301 ErrorReviewUid 书评UID错误
-2302 ErrorReviewNotFound 书评不存在
-2303 ErrorReviewDeleted 书评已删除
-2304 ErrorReviewRefactorFail 书评重构失败
-2305 ErrorReviewFljBlock 书评被屏蔽
-2306 ErrorReviewTooLarge 书评过大
-2307 ErrorReviewInfoCorrupted 书评信息损坏
-2351 ErrorBookmarkUid 书签UID错误
-2352 ErrorBookmarkNotFound 书签不存在

网络相关错误码

错误码 常量名 说明
-2021 ErrorSQLTruncated SQL截断
-2022 ErrorSQLExecFail SQL执行失败
-2023 ErrorStrkvFail 字符串KV失败
-2025 ErrorStoreSvrFail 商店服务失败
-2028 ErrorKvFail KV操作失败
-2029 ErrorOtherSvrFail 其他服务失败
-2500 ErrorRemoteFail 远程调用失败
-2539 ErrorXingeErr 信鸽推送错误

文件操作错误码

错误码 常量名 说明
-2501 ErrorDbOpErr 数据库操作错误
-2502 ErrorParseFail 解析失败
-2503 ErrorArgsMiss 参数缺失
-2504 ErrorTypeErr 类型错误
-2505 ErrorArgsErr 参数错误
-2506 ErrorHttpDownload HTTP下载错误
-2507 ErrorFileNotExist 文件不存在
-2508 ErrorConvert 转换错误
-2509 ErrorDocNotObejct 文档非对象
-2510 ErrorOpenFile 打开文件错误
-2511 ErrorWriteFile 写文件错误
-2512 ErrorUnknownArgs 未知参数
-2513 ErrorLoadFile 加载文件错误
-2514 ErrorFileOutTime 文件超时
-2515 ErrorGetInfo 获取信息错误
-2516 ErrorNotLoadFile 未加载文件
-2517 ErrorNotArray 非数组类型
-2518 ErrorFileContent 文件内容错误
-2519 ErrorStatFileFail 文件状态失败
-2520 ErrorChapSzNotMatch 章节大小不匹配
-2521 ErrorDBNoUpdate 数据库无更新
-2522 ErrorUnknow 未知错误
-2523 ErrorkvTypeErr KV类型错误
-2524 ErrorEpubDownloadErr EPUB下载错误
-2525 ErrorParseCss CSS解析错误
-2526 ErrorZipOp ZIP操作错误
-2527 ErrorHTMLOP HTML操作错误
-2528 ErrorParseXML XML解析错误
-2529 ErrorPosTrans 位置转换错误
-2530 ErrorUidNotFound UID未找到
-2532 ErrorSerilizeStr 序列化字符串错误
-2535 ErrorCheckLevel 检查级别错误
-2536 ErrorNoUpdate 无更新
-2537 ErrorSetColumnFail 设置列失败
-2540 ErrorPosConvertErr 位置转换错误
-2541 ErrorHTMLToTextErr HTML转文本错误
-2542 ErrorGetAbstractErr 获取摘要错误
-2062 ErrorZipFail ZIP失败

特殊功能错误码

错误码 常量名 说明
-2015 ErrorPwd 密码错误
-2600 ErrorForgetSendMail 忘记发送邮件
-2601 ErrorCheckTokenFail 检查令牌失败
-2602 ErrorEmailFormat 邮件格式错误
-2603 ErrorEmail 邮件错误
-2650 ErrorInvalidAssistCount 无效助力次数
-2651 ErrorInvalidPromoBook 无效推广书籍
-2652 ErrorInvalidSelfAssist 无效自助
-2653 ErrorLimitCount 限制次数
-2654 ErrorGenerateGiftErr 生成礼品错误
-2655 ErrorSelfReceive 自己接收
-2656 ErrorActivityEnd 活动结束
-2657 ErrorGiftBagReceived 礼品袋已接收
-2666 ErrorLimitFreeNoQualified 限免无资格
-2700 ErrorMissImg 缺少图片
-2701 ErrorReject 拒绝
-2801 ErrorArticleLockOccupied 文章锁定被占用
-2809 ErrorArticleReleaseAgain 文章重复发布
-2810 ErrorArticleNoArticle 无文章
-2880 ErrorReadFundAlreadyObtained 阅读基金已获得
-2910 ErrorArticleQRScanLoginTimeOut 文章二维码扫描登录超时
-2924 ErrorTeenRestrict 青少年限制
-2958 ErrorMPArticleDeleted 公众号文章已删除
-2992 ErrorCollageExpired 拼团过期

勋章系统 API

微信读书勋章系统相关的 API 接口,包括勋章获取、展示、排序和管理功能。

获取勋章列表

GET /medal/list

获取用户的勋章列表,包括已解锁和未解锁的勋章。

请求参数 (Query):

javascript
1
2
3
4
5
{
"auto": 1, // 自动获取 (0: 手动, 1: 自动)
"userVid": "user_123456", // 用户VID
"count": 20 // 获取数量
}

请求头:

javascript
1
2
3
4
5
{
"vid": "12345",
"skey": "your_skey",
"User-Agent": "WeRead/7.0.0 WRBrand/huawei Dalvik/2.1.0"
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
{
"errcode": 0,
"data": {
"medals": [
{
"medalId": "medal_001",
"name": "阅读达人",
"description": "连续阅读30天",
"icon": "https://example.com/medal1.png",
"level": 3,
"progress": 100,
"maxProgress": 100,
"unlocked": true,
"unlockTime": 1640995200000,
"category": "reading",
"rarity": "rare",
"requirements": {
"type": "consecutive_days",
"target": 30,
"current": 30
}
},
{
"medalId": "medal_002",
"name": "书评专家",
"description": "发表100篇书评",
"icon": "https://example.com/medal2.png",
"level": 2,
"progress": 75,
"maxProgress": 100,
"unlocked": false,
"category": "social",
"rarity": "epic",
"requirements": {
"type": "review_count",
"target": 100,
"current": 75
}
}
],
"totalCount": 50,
"unlockedCount": 25,
"displayMedals": ["medal_001", "medal_003", "medal_005"],
"categories": [
{
"name": "reading",
"displayName": "阅读成就",
"count": 15
},
{
"name": "social",
"displayName": "社交成就",
"count": 10
},
{
"name": "special",
"displayName": "特殊成就",
"count": 5
}
]
}
}

勋章排序管理

POST https://i.weread.qq.com/medal/sort

更改用户展示勋章的排序。

请求参数:

javascript
1
2
3
{
"medals": ["medal_001", "medal_003", "medal_005"] // 勋章ID数组(按显示顺序)
}

请求头:

javascript
1
2
3
4
5
6
{
"vid": "12345",
"skey": "your_skey",
"User-Agent": "WeRead/7.0.0 WRBrand/huawei Dalvik/2.1.0",
"Content-Type": "application/json"
}

响应示例:

javascript
1
2
3
4
5
6
7
8
{
"errcode": 0,
"data": {
"success": true,
"displayMedals": ["medal_001", "medal_003", "medal_005"],
"message": "勋章排序更新成功"
}
}

勋章展示设置

设置展示勋章

POST https://i.weread.qq.com/medal/display

设置在个人资料中展示的勋章。

前端实现:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
async function setDisplayMedals(medalIds, vid, skey) {
// 限制最多展示3个勋章
const displayMedals = medalIds.slice(0, 3);

const response = await fetch('https://i.weread.qq.com/medal/display', {
method: 'POST',
headers: {
'vid': vid.toString(),
'skey': skey,
'User-Agent': 'WeRead/7.0.0 WRBrand/huawei Dalvik/2.1.0',
'Content-Type': 'application/json'
},
body: JSON.stringify({
medals: displayMedals
})
});

return await response.json();
}

// 使用示例
const displayResult = await setDisplayMedals(['medal_001', 'medal_002'], vid, skey);

勋章进度查询

获取勋章进度

查询特定勋章的解锁进度。

前端实现:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
async function getMedalProgress(medalId, vid, skey) {
const medals = await getMedalList(1, vid, 100, vid, skey);

if (medals.errcode === 0) {
const medal = medals.data.medals.find(m => m.medalId === medalId);
if (medal) {
return {
medalId: medal.medalId,
name: medal.name,
progress: medal.progress,
maxProgress: medal.maxProgress,
progressPercentage: Math.round((medal.progress / medal.maxProgress) * 100),
unlocked: medal.unlocked,
requirements: medal.requirements
};
}
}

return null;
}

纸质书与章节 API

微信读书纸质书服务和章节服务相关的 API 接口,包括购物车管理和章节信息获取。

纸质书购物车 API

添加到购物车

POST https://i.weread.qq.com/paper/commonset

将纸质书添加到购物车。

请求参数:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
{
"content": { // 内容对象
"bookId": "book_id_here",
"title": "书籍标题",
"author": "作者姓名",
"price": 29.99,
"quantity": 1,
"cover": "封面URL",
"isbn": "978-7-xxx-xxxxx-x"
},
"type": "add" // 操作类型
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"errcode": 0,
"data": {
"cartId": "cart_123456",
"items": [
{
"bookId": "book_id_here",
"title": "书籍标题",
"author": "作者姓名",
"price": 29.99,
"quantity": 1,
"cover": "封面URL",
"addTime": 1640995200
}
],
"totalCount": 1,
"totalPrice": 29.99,
"synckey": 123456789
}
}

获取购物车

GET /paper/commonget

获取用户的纸质书购物车内容。

请求参数 (Query):

javascript
1
2
3
4
{
"synckey": 123456789, // 同步键
"type": "cart" // 类型
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{
"errcode": 0,
"data": {
"cartId": "cart_123456",
"items": [
{
"bookId": "book_1",
"title": "书籍1",
"author": "作者1",
"price": 29.99,
"quantity": 2,
"cover": "封面URL1",
"addTime": 1640995200,
"available": true
},
{
"bookId": "book_2",
"title": "书籍2",
"author": "作者2",
"price": 39.99,
"quantity": 1,
"cover": "封面URL2",
"addTime": 1640995300,
"available": true
}
],
"totalCount": 3,
"totalPrice": 99.97,
"synckey": 123456790,
"lastUpdateTime": 1640995400
}
}

购物车操作类型

购物车支持多种操作类型:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const CartOperations = {
ADD: 'add', // 添加商品
REMOVE: 'remove', // 移除商品
UPDATE: 'update', // 更新数量
CLEAR: 'clear' // 清空购物车
};

// 移除商品
async function removeFromCart(bookId, vid, skey) {
const content = { bookId: bookId };
return await addShoppingCart(content, CartOperations.REMOVE, vid, skey);
}

// 更新商品数量
async function updateCartQuantity(bookId, quantity, vid, skey) {
const content = {
bookId: bookId,
quantity: quantity
};
return await addShoppingCart(content, CartOperations.UPDATE, vid, skey);
}

// 清空购物车
async function clearCart(vid, skey) {
return await addShoppingCart({}, CartOperations.CLEAR, vid, skey);
}

章节信息 API

基础章节信息获取

POST https://i.weread.qq.com/book/chapterInfos

获取书籍的章节信息列表。

请求参数:

javascript
1
2
3
4
5
6
7
{
"bookIds": ["book1", "book2"], // 书籍ID数组
"synckeys": [123456789, 123456790], // 同步键数组
"teenmode": 0, // 青少年模式
"updateTimes": [1640995200, 1640995300], // 更新时间数组(可选)
"maxfreeIdx": [5, 10] // 最大免费章节索引(可选)
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{
"errcode": 0,
"data": {
"book1": {
"chapters": [
{
"chapterUid": 1,
"title": "第一章 开始",
"level": 1,
"wordCount": 2500,
"readingTime": 300,
"isFree": true,
"price": 0,
"updateTime": 1640995200
},
{
"chapterUid": 2,
"title": "第二章 发展",
"level": 1,
"wordCount": 3000,
"readingTime": 360,
"isFree": false,
"price": 0.99,
"updateTime": 1640995300
}
],
"synckey": 123456791,
"totalChapters": 20,
"freeChapters": 5
}
}
}

带付费数量的章节信息

POST https://i.weread.qq.com/book/chapterInfos

获取包含付费章节数量信息的章节列表。

请求参数:

javascript
1
2
3
4
5
6
7
{
"bookIds": ["book1", "book2"], // 书籍ID数组
"synckeys": [123456789, 123456790], // 同步键数组
"paidCount": [10, 15], // 已付费章节数量数组
"maxfreeIdx": [5, 8], // 最大免费章节索引(可选)
"teenmode": 0 // 青少年模式
}

带价格的章节信息

POST https://i.weread.qq.com/book/chapterInfos

获取包含章节价格信息的章节列表。

请求参数:

javascript
1
2
3
4
5
6
7
{
"bookIds": ["book1", "book2"], // 书籍ID数组
"synckeys": [123456789, 123456790], // 同步键数组
"price": [0.99, 1.99], // 章节价格数组
"maxfreeIdx": [5, 8], // 最大免费章节索引(可选)
"teenmode": 0 // 青少年模式
}

支付服务 API

微信读书支付服务相关的 API 接口,包括书籍购买、章节购买、会员卡、账户余额、消费记录等功能。

书籍购买 API

购买整本书籍

POST https://i.weread.qq.com/pay/buyBook

购买完整的书籍。

请求参数:

javascript
1
2
3
4
5
6
7
8
9
10
11
{
"bookId": "book_123456", // 书籍ID
"pf": "android", // 平台标识
"zoneid": "zone_001", // 区域ID
"price": 29.99, // 价格
"release": 1, // 发布版本
"cpName": "出版社名称", // 版权方名称
"payType": 1, // 支付类型
"isMCard": 0, // 是否使用会员卡 (0: 否, 1: 是)
"discount": 85 // 折扣(可选,百分比)
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"errcode": 0,
"data": {
"orderId": "order_789012",
"bookId": "book_123456",
"title": "人工智能简史",
"originalPrice": 29.99,
"finalPrice": 25.49,
"discount": 85,
"paymentMethod": "wechat_pay",
"transactionId": "tx_345678",
"purchaseTime": 1640995200000,
"status": "success",
"receipt": {
"receiptId": "receipt_901234",
"downloadUrl": "https://example.com/receipt.pdf"
},
"bookAccess": {
"unlocked": true,
"expiryTime": null, // null表示永久有效
"downloadAllowed": true,
"printAllowed": false
}
}
}

免费获取书籍

POST https://i.weread.qq.com/gift/newuser

新用户免费获取书籍。

请求参数:

javascript
1
2
3
4
{
"bookId": "book_123456", // 书籍ID
"from": "newuser_gift" // 来源标识
}

章节购买 API

购买指定章节

POST https://i.weread.qq.com/pay/buyChapters

购买书籍的指定章节。

请求参数:

javascript
1
2
3
4
5
6
7
8
9
10
11
{
"bookId": "book_123456", // 书籍ID
"chapterIds": "1,2,3", // 章节ID列表(逗号分隔)
"isautopay": "0", // 是否自动支付
"totalprice": 5.99, // 总价格
"pf": "android", // 平台标识
"zoneid": "zone_001", // 区域ID
"release": 1, // 发布版本
"payType": 1, // 支付类型
"isMCard": 0 // 是否使用会员卡
}

使用优惠券购买章节

GET /coupon/buyChapter

使用优惠券购买章节。

请求参数 (Query):

javascript
1
2
3
4
{
"bookId": "book_123456", // 书籍ID
"chapterIds": "1,2,3" // 章节ID列表(逗号分隔)
}

取消自动购买

POST https://i.weread.qq.com/pay/cancelAutoBuy

取消书籍的自动购买设置。

请求参数:

javascript
1
2
3
4
5
6
{
"bookId": "book_123456", // 书籍ID
"type": 1, // 类型
"userVid": 123456789, // 用户VID
"isautopay": 0 // 自动支付状态
}

消费记录 API

获取消费记录

GET /pay/consumeHistory

获取用户的消费历史记录。

请求参数 (Query):

javascript
1
2
3
4
5
6
{
"synckey": 123456789, // 同步键
"maxIdx": 100, // 最大索引
"count": 20, // 获取数量(可选)
"pf": "android" // 平台标识
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{
"errcode": 0,
"data": {
"records": [
{
"recordId": "record_123456",
"type": "book_purchase",
"bookId": "book_789012",
"title": "人工智能简史",
"amount": 29.99,
"currency": "CNY",
"paymentMethod": "wechat_pay",
"transactionId": "tx_345678",
"purchaseTime": 1640995200000,
"status": "completed",
"refundable": true,
"chapterInfo": null
},
{
"recordId": "record_123457",
"type": "chapter_purchase",
"bookId": "book_789013",
"title": "机器学习实战",
"amount": 2.99,
"currency": "CNY",
"paymentMethod": "balance",
"transactionId": "tx_345679",
"purchaseTime": 1640995100000,
"status": "completed",
"refundable": false,
"chapterInfo": {
"chapterIds": [1, 2],
"chapterTitles": ["第一章", "第二章"]
}
}
],
"synckey": 123456790,
"maxIdx": 102,
"hasMore": true,
"totalAmount": 156.78,
"totalCount": 25
}
}

删除消费记录

GET /pay/consumeHistory/delete

删除指定的消费记录。

请求参数 (Query):

javascript
1
2
3
4
{
"hid": "record_123456", // 记录ID
"source": "user_delete" // 删除来源
}

获取自动购买历史

GET /pay/autoBuyHistory

获取自动购买的历史记录。

请求参数 (Query):

javascript
1
2
3
4
5
{
"synckey": 123456789, // 同步键
"maxIdx": 100, // 最大索引
"count": 20 // 获取数量(可选)
}

会员卡服务 API

获取会员卡消费历史

GET /pay/consumeHistory

获取会员卡的消费历史记录。

请求参数 (Query):

javascript
1
2
3
4
5
6
{
"synckey": 123456789, // 同步键
"maxIdx": 100, // 最大索引
"source": "member_card", // 来源
"pf": "android" // 平台标识
}

购买产品

POST https://i.weread.qq.com/pay/buygoodid

购买指定的产品(如会员卡等)。

请求参数:

javascript
1
2
3
4
5
6
7
{
"pf": "android", // 平台标识
"zoneid": "zone_001", // 区域ID
"num": 1, // 购买数量
"goodid": "member_monthly", // 商品ID
"price": 19 // 价格
}

活动与礼品 API

接收活动书籍

POST https://i.weread.qq.com/act/sendGift

接收活动赠送的书籍。

请求参数:

javascript
1
2
3
4
5
{
"act": "newuser_gift", // 活动标识
"actType": "book_gift", // 活动类型
"bookIds": ["book_123", "book_456"] // 书籍ID列表
}

接收无限卡

GET /act/sendinfinite

接收无限阅读卡。

请求参数 (Query):

javascript
1
2
3
4
5
6
{
"bitmapId": "bitmap_123", // 位图ID
"type": "infinite_card", // 类型
"source": "activity", // 来源
"cmd": "receive" // 命令
}

新接收无限卡

GET /act/recvinfinite

新版本的无限卡接收接口。

请求参数 (Query):

javascript
1
2
3
4
5
{
"cmd": "receive", // 命令
"action": "get_card", // 动作
"from": "activity" // 来源
}

取消激励

POST https://i.weread.qq.com/incentive/cancelFirstCharge

取消首次充值激励。

请求参数:

javascript
1
2
3
4
{
"bookId": "book_123456", // 书籍ID
"chapterUid": 1 // 章节UID
}

阅读数据 API

阅读数据相关的 API 接口,包括阅读统计和挑战数据。

获取阅读数据详情

GET /readdata/detail

获取用户的阅读数据详情,支持不同时间维度的数据查询。

数据模式枚举:

javascript
1
2
3
4
5
6
const ReadDataMode = {
WEEKLY: 'weekly', // 周数据
MONTHLY: 'monthly', // 月数据
ANNUALLY: 'anually', // 年数据
OVERALL: 'overall' // 总体数据
};

请求参数 (Query):

javascript
1
2
3
4
5
{
"baseTime": "0", // 基准时间
"defaultPreferBook": "0", // 默认偏好书籍
"mode": "overall" // 数据模式
}

请求头:

javascript
1
2
3
4
5
6
{
"vid": "12345",
"skey": "your_skey",
"User-Agent": "WeRead/7.0.0 WRBrand/huawei Dalvik/2.1.0",
"v": "7.4.2.23"
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{
"errcode": 0,
"data": {
"readingTime": 86400, // 总阅读时长(秒)
"readingDays": 30, // 阅读天数
"readingCount": 150, // 阅读书籍数量
"noteCount": 200, // 笔记数量
"reviewCount": 50, // 书评数量
"readingGoal": {
"target": 50, // 目标书籍数
"current": 30, // 当前完成数
"progress": 0.6 // 完成进度
},
"readingStats": {
"avgReadingTime": 2880, // 平均每日阅读时长(秒)
"longestStreak": 15, // 最长连续阅读天数
"currentStreak": 5, // 当前连续阅读天数
"favoriteGenre": "科技" // 最喜欢的类型
},
"monthlyData": [
{
"month": "2024-01",
"readingTime": 7200,
"booksRead": 5,
"notesCount": 20
}
],
"weeklyData": [
{
"week": "2024-W01",
"readingTime": 1800,
"readingDays": 5
}
]
}
}

获取挑战详情

GET /challenge/detail

获取阅读挑战的详情信息。

请求参数 (Query):

javascript
1
2
3
{
"scene": "1" // 场景ID
}

请求头:

javascript
1
2
3
4
5
6
{
"vid": "12345",
"skey": "your_skey",
"User-Agent": "WeRead/7.0.0 WRBrand/huawei Dalvik/2.1.0",
"v": "7.4.2.23"
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
{
"errcode": 0,
"data": {
"challenges": [
{
"id": 1,
"title": "30天阅读挑战",
"description": "连续30天每天阅读至少30分钟",
"type": "daily_reading",
"status": "in_progress", // in_progress, completed, failed
"progress": {
"current": 15,
"target": 30,
"percentage": 0.5
},
"startTime": 1640995200,
"endTime": 1643587200,
"reward": {
"type": "badge",
"name": "阅读达人",
"icon": "https://example.com/badge.png"
}
},
{
"id": 2,
"title": "月度阅读目标",
"description": "本月完成10本书的阅读",
"type": "monthly_books",
"status": "completed",
"progress": {
"current": 12,
"target": 10,
"percentage": 1.2
},
"reward": {
"type": "points",
"amount": 500
}
}
],
"totalChallenges": 2,
"completedChallenges": 1,
"activeChallenges": 1
}
}

通用记录系统 API

微信读书通用记录系统相关的 API 接口,用于存储和管理各种用户数据记录。

获取所有记录

POST https://i.weread.qq.com/comm/record

获取用户的所有通用记录数据。

请求参数:

javascript
1
2
3
{
"cmd": "get" // 命令类型
}

请求头:

javascript
1
2
3
4
5
6
{
"vid": "12345",
"skey": "your_skey",
"User-Agent": "WeRead/7.0.0 WRBrand/huawei Dalvik/2.1.0",
"Content-Type": "application/json"
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
"errcode": 0,
"data": {
"records": {
"reading_preferences": {
"fontSize": 16,
"theme": "light",
"autoBookmark": true,
"timestamp": 1640995200
},
"reading_goals": {
"dailyMinutes": 60,
"weeklyBooks": 2,
"monthlyPages": 1000,
"timestamp": 1640995200
},
"user_settings": {
"notifications": true,
"autoSync": true,
"privacy": "friends",
"timestamp": 1640995200
}
},
"totalRecords": 3,
"lastUpdated": 1640995200
}
}

获取指定记录

POST https://i.weread.qq.com/comm/record

获取指定键的记录数据。

请求参数:

javascript
1
2
3
4
{
"key": "record_key", // 记录键
"cmd": "get" // 命令类型
}

请求头:

javascript
1
2
3
4
5
6
{
"vid": "12345",
"skey": "your_skey",
"User-Agent": "WeRead/7.0.0 WRBrand/huawei Dalvik/2.1.0",
"Content-Type": "application/json"
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"errcode": 0,
"data": {
"key": "reading_preferences",
"value": {
"fontSize": 16,
"theme": "light",
"autoBookmark": true
},
"timestamp": 1640995200,
"version": 1
}
}

设置记录

POST https://i.weread.qq.com/comm/record

设置或更新通用记录值。

请求参数:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"key": "record_key", // 记录键
"value": { // 记录值(任意JSON对象)
"data": "value_data",
"type": "string",
"settings": {
"option1": true,
"option2": "value"
}
},
"timestamp": 1640995200, // 时间戳
"signature": "signature_string", // 签名(可选)
"cmd": "set" // 命令类型
}

请求头:

javascript
1
2
3
4
5
6
{
"vid": "12345",
"skey": "your_skey",
"User-Agent": "WeRead/7.0.0 WRBrand/huawei Dalvik/2.1.0",
"Content-Type": "application/json"
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
{
"errcode": 0,
"data": {
"success": true,
"key": "record_key",
"timestamp": 1640995200,
"version": 2
}
}

好友 API

好友相关的 API 接口,包括社交功能和排行榜查询。

查询阅读排名

GET /friend/ranking

查询好友阅读排名,获取好友间的阅读数据对比。

请求头:

javascript
1
2
3
4
5
{
"vid": "12345",
"skey": "your_skey",
"User-Agent": "WeRead/7.0.0 WRBrand/huawei Dalvik/2.1.0"
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{
"errcode": 0,
"data": {
"ranking": [
{
"vid": 12345,
"name": "张三",
"avatar": "https://example.com/avatar1.jpg",
"readingTime": 7200, // 本周阅读时长(秒)
"readingDays": 5, // 本周阅读天数
"rank": 1, // 排名
"readingMinutes": 120 // 本周阅读分钟数
},
{
"vid": 12346,
"name": "李四",
"avatar": "https://example.com/avatar2.jpg",
"readingTime": 5400,
"readingDays": 4,
"rank": 2,
"readingMinutes": 90
}
],
"myRank": {
"vid": 12345,
"name": "我的昵称",
"avatar": "https://example.com/my_avatar.jpg",
"readingTime": 7200,
"readingDays": 5,
"rank": 1,
"readingMinutes": 120
},
"totalFriends": 50,
"weekStartTime": 1640995200,
"weekEndTime": 1641599999
}
}

错误响应:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
// 用户不存在
{
"errcode": -2010,
"errlog": "C3LkAop",
"errmsg": "用户不存在"
}

// 登录超时
{
"errcode": -2012,
"errlog": "C6rM756",
"errmsg": "登录超时"
}

好友关注 API

关注/取消关注用户

POST https://i.weread.qq.com/friend/follow

关注或取消关注指定用户。

请求参数:

javascript
1
2
3
4
5
{
"vid": 123456, // 用户VID
"isUnfollow": 0, // 是否取消关注 (0: 关注, 1: 取消关注)
"isBlack": 0 // 是否拉黑 (0: 否, 1: 是)
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"errcode": 0,
"data": {
"success": true,
"userVid": 123456,
"nickname": "张三",
"avatar": "https://example.com/avatar.jpg",
"action": "followed", // 操作结果: followed/unfollowed
"followTime": 1640995200000,
"mutualFollow": false, // 是否互相关注
"followerCount": 1250, // 该用户的粉丝数
"followingCount": 89, // 该用户的关注数
"relationshipStatus": {
"isFollowing": true, // 我是否关注了他
"isFollower": false, // 他是否关注了我
"isFriend": false // 是否为好友(互相关注)
}
}
}

批量关注/取消关注

POST https://i.weread.qq.com/friend/follow

批量关注或取消关注多个用户。

请求参数:

javascript
1
2
3
4
{
"vids": [123456, 789012, 345678], // 用户VID列表
"isUnfollow": 0 // 是否取消关注 (0: 关注, 1: 取消关注)
}

获取关注列表

GET /friend/following

获取我关注的用户列表。

请求参数 (Query):

javascript
1
2
3
4
{
"synckey": 123456789, // 同步键
"syncver": 987654321 // 同步版本
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
"errcode": 0,
"data": {
"users": [
{
"userVid": "user_123456",
"nickname": "张三",
"avatar": "https://example.com/avatar1.jpg",
"level": 15,
"followTime": 1640995200000,
"mutualFollow": true,
"lastActiveTime": 1640995300000,
"readingStats": {
"totalBooks": 156,
"readingTime": 25600,
"weeklyReadingTime": 1200
},
"recentActivity": {
"type": "review",
"content": "刚刚发布了一篇书评",
"time": 1640995250000
}
}
],
"totalCount": 89,
"synckey": 123456790,
"syncver": 987654322,
"hasMore": true
}
}

获取粉丝列表

GET /friend/follower

获取关注我的用户列表(粉丝)。

请求参数 (Query):

javascript
1
2
3
4
{
"synckey": 123456789, // 同步键
"syncver": 987654321 // 同步版本
}

订阅/取消订阅用户

POST https://i.weread.qq.com/friend/subscribe

订阅或取消订阅用户的动态。

请求参数:

javascript
1
2
3
4
{
"vid": [123456, 789012], // 用户VID列表
"unsubscribe": 0 // 是否取消订阅 (0: 订阅, 1: 取消订阅)
}

隐藏/显示我的状态

POST https://i.weread.qq.com/friend/hideMe

对指定用户隐藏或显示我的在线状态。

请求参数:

javascript
1
2
3
4
{
"vid": [123456, 789012], // 用户VID列表
"unhideMe": 0 // 是否取消隐藏 (0: 隐藏, 1: 显示)
}

好友申请 API

获取关注申请列表

GET /friend/applylist

获取申请关注我的用户列表。

请求参数 (Query):

javascript
1
2
3
{
"synckey": 123456789 // 同步键
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{
"errcode": 0,
"data": {
"applications": [
{
"applyVid": 123456,
"nickname": "申请者1",
"avatar": "https://example.com/avatar1.jpg",
"level": 12,
"applyTime": 1640995200000,
"applyMessage": "希望能关注您,一起交流读书心得",
"mutualFriends": [
{
"userVid": "user_789",
"nickname": "共同好友1"
}
],
"mutualFriendsCount": 3,
"readingStats": {
"totalBooks": 89,
"readingTime": 15600
},
"commonInterests": ["科技", "历史", "文学"]
}
],
"totalCount": 5,
"unreadCount": 3,
"synckey": 123456790,
"hasMore": false
}
}

同意关注申请

POST https://i.weread.qq.com/friend/agreeFollow

同意单个用户的关注申请。

请求参数:

javascript
1
2
3
4
{
"applyVid": 123456, // 申请者VID
"cmd": 1 // 命令 (1: 同意, 0: 拒绝)
}

批量同意关注申请

POST https://i.weread.qq.com/friend/agreeFollow

批量同意多个用户的关注申请。

请求参数:

javascript
1
2
3
4
{
"batchvid": [123456, 789012, 345678], // 申请者VID列表
"cmd": 1 // 命令 (1: 同意, 0: 拒绝)
}

微信好友 API

获取微信授权状态

GET /wx/scope

获取微信授权的状态信息。

请求参数 (Query):

javascript
1
2
3
4
{
"vid": "123456789", // 用户VID
"refresh": 0 // 是否刷新 (0: 否, 1: 是)
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"errcode": 0,
"data": {
"authStatus": {
"isAuthorized": true,
"scope": ["snsapi_userinfo", "snsapi_base"],
"authTime": 1640995200000,
"expireTime": 1672531200000,
"refreshToken": "refresh_token_string"
},
"permissions": {
"canReadFriends": true,
"canShareToTimeline": true,
"canSendMessage": true
},
"userInfo": {
"openid": "openid_string",
"unionid": "unionid_string",
"nickname": "微信昵称",
"avatar": "https://example.com/wx_avatar.jpg"
}
}
}

获取微信好友列表

GET /friend/wechat

获取微信好友在微信读书中的信息。

请求参数 (Query):

javascript
1
2
3
4
5
6
7
{
"synckey": 123456789, // 同步键
"syncver": 987654321, // 同步版本
"detailInfo": 1, // 是否获取详细信息
"force": 0, // 是否强制刷新
"userClick": 1 // 是否用户点击
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{
"errcode": 0,
"data": {
"wechatFriends": [
{
"userVid": "user_123456",
"wechatInfo": {
"openid": "openid_123",
"nickname": "微信昵称",
"avatar": "https://example.com/wx_avatar.jpg"
},
"wereadInfo": {
"nickname": "微信读书昵称",
"avatar": "https://example.com/wr_avatar.jpg",
"level": 15,
"isRegistered": true,
"registrationTime": 1640995200000
},
"relationshipStatus": {
"isFollowing": false,
"isFollower": false,
"isFriend": false
},
"readingStats": {
"totalBooks": 89,
"readingTime": 15600,
"lastActiveTime": 1640995300000
},
"commonBooks": 12,
"mutualFriends": 5
}
],
"totalCount": 156,
"registeredCount": 89,
"synckey": 123456790,
"syncver": 987654322,
"hasMore": true
}
}

邀请好友

GET /friend/invite

获取可邀请的好友列表。

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
"errcode": 0,
"data": {
"inviteUsers": [
{
"userVid": "user_123456",
"nickname": "潜在用户1",
"avatar": "https://example.com/avatar1.jpg",
"source": "wechat", // 来源:wechat/phone/email
"inviteStatus": "not_invited", // 邀请状态
"mutualFriends": 3,
"estimatedInterest": 0.85 // 预估兴趣度
}
],
"totalCount": 25,
"inviteQuota": {
"daily": 10,
"used": 3,
"remaining": 7
},
"inviteRewards": {
"perInvite": 100, // 每邀请一人的奖励
"currency": "reading_coins"
}
}
}

获取好友排名

GET /friend/ranking

获取好友阅读排名信息。

请求参数 (Query):

javascript
1
2
3
4
{
"synckey": 123456789, // 同步键
"mine": 1 // 是否包含我的排名
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
{
"errcode": 0,
"data": {
"rankings": [
{
"rank": 1,
"userVid": "user_123456",
"nickname": "阅读达人",
"avatar": "https://example.com/avatar1.jpg",
"readingTime": 3600, // 本周阅读时间(秒)
"readingDays": 7, // 本周阅读天数
"booksFinished": 2, // 本周完成书籍数
"trend": "up", // 排名趋势:up/down/stable
"lastWeekRank": 3,
"isMe": false
},
{
"rank": 5,
"userVid": "user_789012",
"nickname": "我",
"avatar": "https://example.com/my_avatar.jpg",
"readingTime": 2400,
"readingDays": 5,
"booksFinished": 1,
"trend": "up",
"lastWeekRank": 8,
"isMe": true
}
],
"myRanking": {
"rank": 5,
"totalFriends": 89,
"percentile": 0.75, // 超过75%的好友
"weeklyGoal": 3600, // 周目标
"progress": 0.67 // 目标完成度
},
"synckey": 123456790,
"updateTime": 1640995200000
}
}

点赞好友排名

POST https://i.weread.qq.com/friend/like

为好友的排名点赞。

请求参数:

javascript
1
2
3
4
5
{
"vid": 123456, // 好友VID
"like": 1, // 点赞操作 (1: 点赞, 0: 取消点赞)
"type": 1 // 点赞类型
}

礼品接收

GET /friend/invited

接收邀请好友的礼品奖励。

请求参数 (Query):

javascript
1
2
3
4
{
"actionType": "receive_gift", // 操作类型
"extInfo": "invite_reward_123" // 扩展信息
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"errcode": 0,
"data": {
"gift": {
"giftId": "gift_123456",
"type": "reading_coins",
"amount": 100,
"description": "邀请好友奖励",
"receiveTime": 1640995200000
},
"totalRewards": {
"readingCoins": 500,
"freeBooks": 2,
"vipDays": 7
},
"inviteStats": {
"totalInvited": 5,
"successfulInvites": 3,
"pendingInvites": 2
}
}
}

好友书架 API

获取好友书架

GET /shelf/friendCommon

获取好友的共同书架信息。

请求参数 (Query):

javascript
1
2
3
4
5
6
7
{
"userVid": "123456789", // 好友用户VID
"minCount": 3, // 最小数量
"synckey": 123456789, // 同步键
"showPrivate": 0, // 是否显示私密书籍 (0: 否, 1: 是)
"album": 0 // 专辑标识
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{
"errcode": 0,
"data": {
"friendInfo": {
"userVid": "123456789",
"nickname": "张三",
"avatar": "https://example.com/avatar.jpg",
"readingStats": {
"totalBooks": 156,
"readingTime": 25600,
"readingDays": 89
}
},
"commonBooks": [
{
"bookId": "book_123456",
"title": "人工智能简史",
"author": "张三",
"cover": "https://example.com/cover1.jpg",
"category": "科技",
"myProgress": 0.75, // 我的阅读进度
"friendProgress": 0.85, // 好友的阅读进度
"myRating": 4.5, // 我的评分
"friendRating": 4.0, // 好友的评分
"addTime": 1640995200000, // 添加时间
"isPrivate": false, // 是否私密
"commonNotes": 3 // 共同笔记数量
}
],
"recommendBooks": [ // 基于共同兴趣推荐的书籍
{
"bookId": "book_789012",
"title": "机器学习实战",
"author": "李四",
"cover": "https://example.com/cover2.jpg",
"reason": "你们都喜欢科技类书籍",
"similarity": 0.85
}
],
"synckey": 123456790,
"hasMore": false
}
}

设置虚拟书架

POST https://i.weread.qq.com/shelf/setTaste

设置用户的阅读品味书架(虚拟书架)。

请求参数:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"items": [ // 虚拟书籍列表
{
"bookId": "fake_book_001",
"title": "推荐书籍1",
"author": "作者1",
"cover": "https://example.com/cover1.jpg",
"category": "文学",
"reason": "展示阅读品味"
},
{
"bookId": "fake_book_002",
"title": "推荐书籍2",
"author": "作者2",
"cover": "https://example.com/cover2.jpg",
"category": "科技",
"reason": "个人兴趣"
}
]
}

作品列表 API

获取用户作品列表

GET /shelf/opus

获取用户的作品列表(如书评、笔记等)。

请求参数 (Query):

javascript
1
2
3
4
5
6
7
{
"userVid": "123456789", // 用户VID
"count": 20, // 获取数量
"listType": 1, // 列表类型
"listMode": 1, // 列表模式
"album": 0 // 专辑标识
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
{
"errcode": 0,
"data": {
"userInfo": {
"userVid": "123456789",
"nickname": "张三",
"avatar": "https://example.com/avatar.jpg",
"level": 15,
"totalWorks": 45
},
"works": [
{
"workId": "work_123456",
"type": "review", // 作品类型: review(书评), note(笔记), quote(摘录)
"title": "《人工智能简史》读后感",
"content": "这本书深入浅出地介绍了人工智能的发展历程...",
"bookInfo": {
"bookId": "book_789012",
"title": "人工智能简史",
"author": "张三",
"cover": "https://example.com/cover.jpg"
},
"stats": {
"likeCount": 25, // 点赞数
"commentCount": 8, // 评论数
"shareCount": 3, // 分享数
"readCount": 156 // 阅读数
},
"createTime": 1640995200000,
"updateTime": 1640995300000,
"isPublic": true, // 是否公开
"tags": ["科技", "AI", "读后感"]
},
{
"workId": "work_123457",
"type": "note",
"title": "关于机器学习的思考",
"content": "机器学习的核心在于数据和算法的结合...",
"bookInfo": {
"bookId": "book_789013",
"title": "机器学习实战",
"author": "李四",
"cover": "https://example.com/cover2.jpg"
},
"chapterInfo": {
"chapterUid": 5,
"chapterTitle": "第五章:神经网络"
},
"stats": {
"likeCount": 12,
"commentCount": 3,
"shareCount": 1,
"readCount": 89
},
"createTime": 1640995100000,
"updateTime": 1640995150000,
"isPublic": true,
"tags": ["机器学习", "笔记"]
}
],
"hasMore": true,
"nextCursor": "cursor_abc123"
}
}

黑名单管理 API

获取黑名单

GET /friend/blacklist

获取用户的黑名单列表。

请求参数 (Query):

javascript
1
2
3
{
"type": 1 // 黑名单类型
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
{
"errcode": 0,
"data": {
"blacklist": [
{
"userVid": "user_123456",
"nickname": "被拉黑用户1",
"avatar": "https://example.com/avatar1.jpg",
"blackTime": 1640995200000,
"blackReason": "spam",
"blackType": 1, // 黑名单类型
"isGlobalBlack": false, // 是否全局拉黑
"canUnblock": true // 是否可以解除拉黑
},
{
"userVid": "user_789012",
"nickname": "被拉黑用户2",
"avatar": "https://example.com/avatar2.jpg",
"blackTime": 1640995100000,
"blackReason": "harassment",
"blackType": 1,
"isGlobalBlack": true,
"canUnblock": false
}
],
"totalCount": 15,
"blacklistStats": {
"userBlackCount": 12, // 用户拉黑数量
"globalBlackCount": 3, // 全局拉黑数量
"recentBlackCount": 2 // 最近拉黑数量
},
"blackReasons": [
{
"reason": "spam",
"count": 8,
"description": "发送垃圾信息"
},
{
"reason": "harassment",
"count": 4,
"description": "骚扰行为"
},
{
"reason": "inappropriate",
"count": 3,
"description": "不当内容"
}
]
}
}

全局拉黑/解除拉黑用户

POST https://i.weread.qq.com/friend/globalBlack

对用户进行全局拉黑或解除拉黑操作。

请求参数:

javascript
1
2
3
4
{
"vid": [123456, 789012, 345678], // 用户VID列表
"unBlack": 0 // 是否解除拉黑 (0: 拉黑, 1: 解除拉黑)
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{
"errcode": 0,
"data": {
"success": true,
"processedUsers": [
{
"userVid": 123456,
"nickname": "用户1",
"status": "success",
"action": "blocked" // 操作结果: blocked/unblocked
},
{
"userVid": 789012,
"nickname": "用户2",
"status": "success",
"action": "blocked"
},
{
"userVid": 345678,
"nickname": "用户3",
"status": "failed",
"error": "用户不存在"
}
],
"successCount": 2,
"failedCount": 1,
"operationTime": 1640995200000
}
}

移除粉丝

POST https://i.weread.qq.com/friend/removeFollowers

移除指定的粉丝。

请求参数:

javascript
1
2
3
{
"vid": [123456, 789012, 345678] // 要移除的粉丝VID列表
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{
"errcode": 0,
"data": {
"success": true,
"removedFollowers": [
{
"userVid": 123456,
"nickname": "粉丝1",
"status": "removed",
"removeTime": 1640995200000
},
{
"userVid": 789012,
"nickname": "粉丝2",
"status": "removed",
"removeTime": 1640995200000
},
{
"userVid": 345678,
"nickname": "粉丝3",
"status": "failed",
"error": "用户未关注"
}
],
"successCount": 2,
"failedCount": 1,
"remainingFollowers": 1248
}
}

配置管理 API

微信读书配置管理相关的 API 接口,包括设备配置、Hub Token 管理和应用宝配置。

解绑 Hub Token

POST https://i.weread.qq.com/updateConfig

解绑设备的 Hub Token。

请求参数:

javascript
1
2
3
4
{
"disHubToken": 123456789, // 要解绑的 Hub Token
"deviceId": "device_id_here" // 设备 ID
}

请求头:

javascript
1
2
3
4
5
6
{
"vid": "12345",
"skey": "your_skey",
"User-Agent": "WeRead/7.0.0 WRBrand/huawei Dalvik/2.1.0",
"Content-Type": "application/json"
}

响应示例:

javascript
1
2
3
4
{
"errcode": 0,
"errmsg": "success"
}

更新应用宝配置

POST https://i.weread.qq.com/updateConfig

更新应用宝相关配置。

请求参数:

javascript
1
2
3
4
{
"trackId": "track_id_here", // 跟踪 ID
"deviceId": "device_id_here" // 设备 ID
}

请求头:

javascript
1
2
3
4
5
6
{
"vid": "12345",
"skey": "your_skey",
"User-Agent": "WeRead/7.0.0 WRBrand/huawei Dalvik/2.1.0",
"Content-Type": "application/json"
}

响应示例:

javascript
1
2
3
4
5
6
7
8
{
"errcode": 0,
"errmsg": "success",
"data": {
"trackId": "track_id_here",
"status": "updated"
}
}

设备配置管理

批量配置更新

POST https://i.weread.qq.com/updateConfig

支持批量更新多种配置项。

请求参数:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"deviceId": "device_id_here",
"disHubToken": 123456789, // 可选:解绑 Hub Token
"trackId": "track_id_here", // 可选:应用宝跟踪 ID
"accountsets": { // 可选:账户设置
"setting1": "value1",
"setting2": "value2"
},
"pushSettings": { // 可选:推送设置
"enablePush": true,
"pushTypes": ["reading", "social"]
}
}

英文阅读 API

微信读书英文阅读功能相关的 API 接口,包括英文书籍阅读状态管理、翻译功能等。

英文书籍阅读

POST https://i.weread.qq.com/en/bookread

处理英文书籍的阅读状态、翻译和免费试读功能。

请求参数:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
"bookId": "book_id_here", // 书籍ID
"read": [ // 阅读状态数组
{
"chapterUid": 1, // 章节UID
"status": "reading", // 阅读状态: reading, completed, paused
"progress": 0.5, // 阅读进度 (0-1)
"readTime": 1800, // 阅读时长(秒)
"startTime": 1640995200, // 开始时间戳
"endTime": 1640997000 // 结束时间戳
}
],
"reference": { // 参考信息
"type": "translation", // 类型: translation, dictionary, grammar
"source": "google", // 翻译源: google, baidu, youdao
"targetLanguage": "zh-CN", // 目标语言
"originalText": "Hello world", // 原文
"translatedText": "你好世界" // 译文
},
"freeTrial": 1, // 免费试读标识 (0: 否, 1: 是)
"settings": { // 阅读设置
"autoTranslate": true, // 自动翻译
"showPinyin": false, // 显示拼音
"fontSize": 16, // 字体大小
"lineSpacing": 1.5 // 行间距
}
}

请求头:

javascript
1
2
3
4
5
6
{
"vid": "12345",
"skey": "your_skey",
"User-Agent": "WeRead/7.0.0 WRBrand/huawei Dalvik/2.1.0",
"Content-Type": "application/json"
}

响应示例:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"errcode": 0,
"data": {
"success": true,
"readingProgress": {
"totalChapters": 20,
"completedChapters": 5,
"currentChapter": 6,
"overallProgress": 0.25
},
"translationStats": {
"wordsTranslated": 150,
"phrasesLearned": 25,
"dailyGoal": 200
},
"achievements": [
{
"type": "reading_streak",
"days": 7,
"reward": "连续阅读7天"
}
]
}
}

翻译功能

实时翻译

支持多种翻译源的实时翻译功能。

翻译源配置:

javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const TranslationSources = {
GOOGLE: 'google',
BAIDU: 'baidu',
YOUDAO: 'youdao',
MICROSOFT: 'microsoft'
};

const SupportedLanguages = {
ENGLISH: 'en',
CHINESE_SIMPLIFIED: 'zh-CN',
CHINESE_TRADITIONAL: 'zh-TW',
JAPANESE: 'ja',
KOREAN: 'ko',
FRENCH: 'fr',
GERMAN: 'de',
SPANISH: 'es'
};