在构建和运营现代网站时,尤其是当您的平台涉及优质内容或独家资源时,如何有效管理内容的访问权限是一个核心课题。安企CMS(AnQiCMS)提供了强大且灵活的API接口,让您能够精确控制文档的查看条件,其中就包括判断特定文档是否需要付费以及用户是否已完成支付。

下面我们将探讨如何利用AnQiCMS提供的API,来检查一个特定文档是否已被支付才能查看,从而确保您的付费内容得到妥善保护。

明确文档的付费属性:获取文档详情

在判断用户是否支付前,我们首先需要知道目标文档本身是否被设置为付费内容。安企CMS的文档详情接口 /api/archive/detail 能够帮助我们获取文档的详细信息,这其中就包含了文档的价格信息。

您可以通过发送一个GET请求到 {域名地址}/api/archive/detail,并附带文档的 id(或者 filename)作为参数来获取文档详情。例如,GET {域名地址}/api/archive/detail?id=123

在返回的数据中,您会找到一个名为 price 的字段。这个字段的值代表了文档的价格,单位是“分”。

  • 如果 price 的值为 0,则表示该文档是免费内容,任何用户都可以直接查看,无需进行支付验证。
  • 如果 price 的值大于 0,则说明这是一个付费文档。此时,我们才需要进一步判断当前用户是否已经支付了这篇文档。

通过这一步,我们可以有效地避免对免费文档进行不必要的支付状态检查,优化系统资源和响应时间。

检查用户是否已支付:验证订单接口

当确认文档为付费内容后,下一步便是验证当前用户是否已为该文档完成了支付。安企CMS为此提供了一个专门的接口:/api/archive/order/check

您同样需要发送一个GET请求到 {域名地址}/api/archive/order/check,并传入您想要检查的文档 id。例如,GET {域名地址}/api/archive/order/check?id=123

这个接口的响应非常直接:

  • 如果返回数据中的 data 字段为 true,则表示当前登录的用户已经支付了这篇文档,可以被允许查看文档的完整内容。
  • 如果 data 字段为 false,则说明当前用户尚未支付。此时,您可以向用户展示购买选项,引导他们完成支付流程。

值得注意的是,调用此接口需要用户处于登录状态。如果用户未登录就尝试访问付费内容,或者其会话凭证失效,API可能会返回 1001(未登录)或 1002(未授权)等错误码,您需要根据这些错误码来引导用户进行登录操作。

结合使用,实现内容权限管理

将以上两个API结合起来,您就可以构建一套完整且灵活的付费内容访问控制逻辑:

  1. 当用户尝试访问某个文档时,首先调用 /api/archive/detail 获取文档的详细信息。
  2. 检查返回数据中的 price 字段:
    • 如果 price0,直接显示文档内容。
    • 如果 price 大于 0,则文档为付费内容,需要进行支付验证。
  3. 接下来,调用 /api/archive/order/check 并传入文档 id
  4. 根据 /api/archive/order/check 返回的 data 字段:
    • 如果 datatrue,表示用户已支付,显示文档内容。
    • 如果 datafalse,表示用户未支付,向用户展示购买提示或部分内容预览。
    • 如果 API 返回未登录/未授权错误,则引导用户登录。

通过这种流程,您能够精确地为您的网站访客提供定制化的内容访问体验,既能保护您的知识产权,又能提升用户的付费意愿,实现内容价值最大化。

常见问题(FAQ)

Q1:如果文档详情接口返回的 price 字段为0,我还需不需要调用 archiveOrderCheck 接口? A1:不需要。如果 price 字段为0,这意味着该文档本身就是免费的,任何用户都无需支付即可查看。直接放行即可,无需再进行支付状态的额外验证,这也有助于优化您的系统性能。

Q2:调用 /api/archive/order/check 接口时,如果用户未登录或未授权,会得到什么结果? A2:在这种情况下,API通常会返回一个错误码(例如 code: 1001 表示未登录,code: 1002 表示未授权),而不是布尔值 truefalse。您应该捕获这些错误,并根据情况引导用户进行登录操作,或者提示他们需要登录才能购买和查看付费内容。

Q3:除了价格付费,AnQiCMS是否支持其他类型的文档访问限制,比如会员等级或密码保护? A3:是的,AnQiCMS不仅支持价格付费,还提供了其他访问控制方式。在文档详情中可能会有 read_level 字段(对应用户分组或会员等级),并且存在 archivePasswordCheck 接口用于验证文档密码。您可以根据这些字段和接口,结合支付状态,构建更复杂的文档访问权限体系。