Skip to content

VIP 与付费章节

目录会保留 isVip/isPay,正文规则可提供 payAction。阅读器执行 payAction 后识别成功 truthy 或打开站点指定 URL。

payAction 求值规则

payAction 是一段 JS,在拿到完整 book/chapter/source 上下文后执行,结果按下面的 顺序判定:

  1. 结果去除首尾空白后,如果是一个 http://https:// 开头的绝对地址——阅读器会把它当 作“需要打开的解锁页面”,交给用户在浏览器/WebView 里完成购买,而不是当作正文内容;
  2. 否则做真值判断:"true"/"1"/"yes"/"y"(大小写不敏感)视为购买成功,可以继续走 正常取正文流程;
  3. 两者都不满足,直接判定为购买失败,提示错误而不是把 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 字段说明见 书源字段参考

Readori 使用与开发文档