CS2VIEW开发者文档
查看 Markdown

服务端接入

厂商后端保管应用密钥。浏览器先请求厂商后端,由厂商后端向 CS2View 申请短期进入凭证。凭证通过 SDK 传给 iframe,不放在 URL、日志或持久化存储中。

申请进入凭证

js
// 在你的后端运行;先验证本站用户、SKU、档位及允许的来源。
const response=await fetch('https://api.cs2view.com/v1/commercial/grants',{
  method:'POST',
  headers:{
    'Authorization':`Bearer ${process.env.CS2VIEW_APP_KEY}`,
    'Content-Type':'application/json',
    'Idempotency-Key':request.openId
  },
  body:JSON.stringify({
    openId:request.openId,
    parentOrigin:'https://your-company.example',
    tier:'inspect', // 由你的后端确定,不能盲信浏览器请求
    item:{inspect:trustedInspectLink} // 从已验证商品取得检视链接
  }),
  signal:AbortSignal.timeout(10000)
});
const result=await response.json();
// 成功后只将 grant、openId、expiresAt、tier 返回给本站 SDK。

该接口只接受服务端请求,不接受带浏览器 Origin 的长期密钥请求。后端不要转发任意用户提供的 API URL,也不要把自己的密钥回传给浏览器。

请求与响应

字段含义
openId本次 iframe 文档或 load 产生的 UUID;重试保持不变
parentOrigin精确来源,例如 https://your-company.example,不含路径
tierinspect、first_person、third_person 或 editor
item检视档只接受 inspect;editor 接受 query 或 inspect,二选一
Idempotency-Key厂商请求编号,建议使用 openId
json
{
  "grant":"grant_<短期凭证>",
  "openId":"00000000-0000-4000-8000-000000000001",
  "expiresAt":"2026-10-06T12:02:00.000Z",
  "tier":"inspect"
}

未兑换凭证默认 120 秒有效;兑换成功后的 visit 没有时长限制,不设置倒计时。重复申请相同编号、相同参数会得到相同凭证;改变物品或档位返回 IDEMPOTENCY_CONFLICT。过期后不要在后台无限重试:提示用户重新进入,以新的访问编号申请。

厂商必须做的校验

验证本站用户或明确的访客策略;把商品、档位和来源与自己的业务配置绑定;增加每用户/IP 的频率与每日额度限制。不要把申请凭证接口做成任何人都能使用你的余额的公共代理。

申请凭证不扣费。余额等条件会在申请及兑换时检查,最终扣费在首次批准进入的事务中完成。