Appearance
VIP 与付费章节
目录会保留 isVip/isPay,正文规则可提供 payAction。阅读器执行 payAction 后识别成功 truthy 或打开站点指定 URL。
payAction 求值规则
payAction 是一段 JS,在拿到完整 book/chapter/source 上下文后执行,结果按下面的 顺序判定:
- 结果去除首尾空白后,如果是一个
http://或https://开头的绝对地址——阅读器会把它当 作“需要打开的解锁页面”,交给用户在浏览器/WebView 里完成购买,而不是当作正文内容; - 否则做真值判断:
"true"/"1"/"yes"/"y"(大小写不敏感)视为购买成功,可以继续走 正常取正文流程; - 两者都不满足,直接判定为购买失败,提示错误而不是把 payAction 的返回值当正文显示。
json
"payAction": "java.ajax('https://example.com/api/unlock?cid='+chapter.url+'&sign='+java.md5Encode(chapter.url+'salt'))@json:$.data.unlockUrl"上面这条规则请求解锁接口,从返回 JSON 里取 data.unlockUrl;如果接口直接返回 "true"/"false" 之类的纯状态字符串而不是 URL,规则末尾就不需要 @json: 取值,直接让 JS 返回这个状态字符串即可,走第 2 步真值判断。
当前安全边界
- 本地书不执行付费;
- 没有 payAction 时显示不支持;
- payAction 获得完整 book/chapter/source context;
- 预取和验证不应调用 payAction;
- Readori 不绕过站点支付或 DRM。
付费能力以来源站点实际页面和用户明确操作为准。Readori 不保存支付凭据,也不会在批量 验证、预加载或后台更新中触发购买操作。payAction 字段说明见 书源字段参考。
