在构建和运营现代网站时,尤其是当您的平台涉及优质内容或独家资源时,如何有效管理内容的访问权限是一个核心课题。安企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结合起来,您就可以构建一套完整且灵活的付费内容访问控制逻辑:
- 当用户尝试访问某个文档时,首先调用
/api/archive/detail获取文档的详细信息。 - 检查返回数据中的
price字段:- 如果
price为0,直接显示文档内容。 - 如果
price大于0,则文档为付费内容,需要进行支付验证。
- 如果
- 接下来,调用
/api/archive/order/check并传入文档id。 - 根据
/api/archive/order/check返回的data字段:- 如果
data为true,表示用户已支付,显示文档内容。 - 如果
data为false,表示用户未支付,向用户展示购买提示或部分内容预览。 - 如果 API 返回未登录/未授权错误,则引导用户登录。
- 如果
通过这种流程,您能够精确地为您的网站访客提供定制化的内容访问体验,既能保护您的知识产权,又能提升用户的付费意愿,实现内容价值最大化。
常见问题(FAQ)
Q1:如果文档详情接口返回的 price 字段为0,我还需不需要调用 archiveOrderCheck 接口?
A1:不需要。如果 price 字段为0,这意味着该文档本身就是免费的,任何用户都无需支付即可查看。直接放行即可,无需再进行支付状态的额外验证,这也有助于优化您的系统性能。
Q2:调用 /api/archive/order/check 接口时,如果用户未登录或未授权,会得到什么结果?
A2:在这种情况下,API通常会返回一个错误码(例如 code: 1001 表示未登录,code: 1002 表示未授权),而不是布尔值 true 或 false。您应该捕获这些错误,并根据情况引导用户进行登录操作,或者提示他们需要登录才能购买和查看付费内容。
Q3:除了价格付费,AnQiCMS是否支持其他类型的文档访问限制,比如会员等级或密码保护?
A3:是的,AnQiCMS不仅支持价格付费,还提供了其他访问控制方式。在文档详情中可能会有 read_level 字段(对应用户分组或会员等级),并且存在 archivePasswordCheck 接口用于验证文档密码。您可以根据这些字段和接口,结合支付状态,构建更复杂的文档访问权限体系。