NOVA SELECT · 星选AI

NOVA SELECT / PARTNER API

把星选接入你的商城

读取商品与库存,使用自己的星选钱包余额采购,再把实际交付结果发给你的买家。从注册到签名调用,按下面的步骤完成接入。

Dujiao-Next 1.0 · 完整原生协议异次元 3.8.5 · 本地自动卡密供货地址 https://xingxuan.si
01 / GET STARTED

先开通自己的供货账户

  1. 注册并验证邮箱。打开会员中心,按页面要求填写邮箱、密码与验证码,阅读并同意站点协议。邮箱支持范围以注册页实时提示为准。
  2. 登录后提交 API 申请。进入“API 对接”页提交申请。供货权限由站长人工审核,注册成功不代表已获得供货权限。
  3. 审核通过后保存 Key / Secret。在自己的 API 页面生成 Secret,立即妥善保存完整值。页面平时只展示掩码;重新生成后,旧 Secret 立即失效,需要同时更新商城服务端配置。
  4. API 审核不收开通费,准备采购余额。在“钱包”页查看余额并按实际开放的方式充值。采购使用你的余额,不使用你买家在下游商城的支付信息。
  5. 先连通,再导入。用 ping 测试连接,再核对少量商品的 SKU、账户报价、库存、数量限制和买家表单。正式下单会进入真实采购流程。

API 供货与托管分站分别申请。把星选作为自己商城的货源,只需按本页申请供货 API;这不会自动开通代理分站,也不会自动通过审核。

02 / COMPATIBILITY

先确认你的商城程序

商城程序接入方式当前状态
独角兽 / Dujiao-Next选择 dujiao-next 供货协议,填本站根地址及自己的 Key / Secret。支持本文协议的版本可用;下单须发送稳定的 downstream_order_no。
异次元 / AcgFaka 3.8.5选择原生异次元共享店铺,地址填 https://xingxuan.si/api/v1,使用自己的 app_id 与专用 app_key。兼容本地自动卡密,每个 SKU 独立列为商品。人工、任务、映射采购和买家表单商品不进入该目录。查看具体配置与恢复规则。
旧独角数卡 / 其他同名程序确认服务端是否支持 Dujiao-Next 1.0 与本文幂等规则。名称相近不能保证接口兼容;无对应协议时需要适配。

本页描述的是你的商城向星选进货。星选后台能连接某个外部供货站,代表星选能向它进货,不代表它的商城程序已经能反向向星选采购。

03 / DUJIAO-NEXT

独角兽这样配置

在你的 Dujiao-Next 后台新增上游连接,选择 dujiao-next,完成连接测试后导入商品。实际菜单名称可能随版本不同。

配置项填写内容
供货站根地址 / Base URLhttps://xingxuan.si。填写根域名,不重复附加 /api/v1/upstream。
协议dujiao-next / Dujiao-Next 1.0
API Key / API Secret自己的会员中心 → API 对接页面提供的凭证;不要使用后台管理员密钥或渠道 Bot 密钥。
币种 / 可用余额调用 POST /api/v1/upstream/ping 读取,以实际响应为准。
采购订单唯一号使用自己商城持久保存的采购订单号,作为 downstream_order_no;同单重试保持原号。

若连接测试成功、创建订单却返回 invalid_order_key,先检查你的版本是否发送 downstream_order_no。旧客户端只提供 trace_id 不满足采购幂等要求。

04 / AUTHENTICATION

请求头与签名

下文业务接口均使用三个签名请求头。Secret 在你的服务端参与签名,不作为参数直接发送;不使用会员登录 JWT 或 Bearer Token。

请求头内容
Dujiao-Next-Api-Key本账户 API Key 原文。
Dujiao-Next-TimestampUnix 秒级时间戳;客户端与服务端偏差不超过 60 秒。
Dujiao-Next-SignatureHMAC-SHA256 结果的小写十六进制字符串。
签名计算规则
body_md5 = lowercase_hex(MD5(实际发送的请求体字节))
sign_string = METHOD + "\n" + PATH + "\n" + TIMESTAMP + "\n" + body_md5
signature = lowercase_hex(HMAC_SHA256(API_SECRET, sign_string))

METHOD:大写,例如 GET、POST
PATH:/api/v1/upstream/products,不含域名、? 及查询参数
空请求体的 MD5:d41d8cd98f00b204e9800998ecf8427e
分隔符是实际换行,末尾没有额外换行

JSON 的空格、字段顺序和 Unicode 编码都会影响签名。先序列化一次,再用同一份 UTF-8 字节签名并发送。空请求体与 {} 不相同;签名不要包含查询字符串。

05 / CATALOG & PRICING

读取商品、报价与库存

方法与完整路径响应 / 用途
POST /api/v1/upstream/pingok / site_name / protocol_version / user_id / balance / currency / member_level
GET /api/v1/upstream/categoriescategories 数组;分类名称为多语言对象,parent_id 为上级分类。
GET /api/v1/upstream/productsitems / total / page / page_size / includes_inactive
GET /api/v1/upstream/products/:id指定商品,成功响应字段为 product;这里的 id 是商品 ID。

列表参数:page 从 1 开始;page_size 默认 50、最大 50;updated_after 使用 URL 编码后的 RFC3339 时间,如 2026-11-06T00:00:00+08:00;include_inactive=true 可同步下架状态,默认不包含。已下架商品详情仍可能返回 200,请检查 is_active。

关键字段处理规则
id / skus[].id商品 ID 用于查询;采购必须使用 skus[].id 作为 sku_id。持久保存商品与 SKU 映射。
price_amount两位小数的金额字符串,API 审核通过后按高级供货价返回,无需分站套餐开通费;每个规格与100元分站档位共用供货价。另有 original_price / member_price 可供展示。实际下单会重新核对当前规格和供货价,采购款从本账户钱包支付。
min_purchase_quantity / max_purchase_quantity保留并验证数量限制;具体规格仍以本站订单校验为准。
skus[].stock_status / stock_quantity负数为 unlimited;0 为 out_of_stock;1–20 为 low_stock;20 以上为 in_stock。停用商品和 SKU 不能继续售卖。
title / description / content多语言对象;description 是可读纯文字,content 是富文本详情,需安全渲染。图片可能是相对路径。
fulfillment_type / manual_form_schema保留交付类型和买家表单定义。不要把全部商品当作无表单、立即交付的卡密。

商品库存是快照,映射到更上游的商品可能使用缓存库存。读取失败或返回 stock_unavailable 时,保留上次有效快照并稍后重试;不要把接口故障当成商品删除、价格为零或库存清零。库存快照不保证之后一定能买到。

当前买家表单限制:创建订单接口只对本站存储类型为 manual 的商品传递 manual_form_data。存储类型为 auto 或 upstream 的商品目前不会透传这些字段,可能无法采购依赖必填字段的商品。目录可能显示映射商品的原始交付类型,不能仅凭目录的 fulfillment_type 判断可用。限制解决前,请勿自动上架依赖这类字段的商品。

06 / PURCHASE & IDEMPOTENCY

采购与防重复扣款

POST /api/v1/upstream/orders 创建真实采购单,系统尝试使用本账户钱包余额支付,可能立即扣款并触发交付。没有免扣款测试模式;连接测试使用 ping。

JSON 字段要求
sku_id必填,本站返回的有效 SKU ID。
quantity必填,整数 ≥ 1,还须满足商品数量限制。
downstream_order_no必填,你商城持久保存的采购唯一号。去除首尾空白后不能为空,最多 64 个 UTF-8 字节,不含控制字符。
manual_form_data可选 JSON 对象,仅上述支持范围内的商品可用;字段对应 manual_form_schema。
callback_url可选,公网 HTTP/HTTPS 地址,推荐 HTTPS;不能指向本机或内网。
trace_id可选,请求追踪号;不替代采购唯一号。
采购请求体示例 · ID 与账号均为虚构,不可作为测试单发送
{
  "sku_id": 900001,
  "quantity": 1,
  "downstream_order_no": "EXAMPLE-SHOP-ORDER-001",
  "manual_form_data": {"account": "示例账号"},
  "callback_url": "https://your-shop.example/api/v1/upstream/callback",
  "trace_id": "attempt-1"
}
  • 幂等范围为 API 凭证 + downstream_order_no。同一业务重试保持原订单号、SKU、数量、买家表单与回调地址;只修改 trace_id 不构成新采购。
  • 同号修改采购内容返回 409 idempotency_conflict。更换订单号会被视为新业务,可能再次扣款。
  • 超时、响应丢失或 503 payment_outcome_unknown 时,先用响应中的 order_id 查原单。没拿到 ID,可用原号与原参数重试创建以恢复原单结果,不能换号重购。
  • 支付未确认时不会返回 ok:true。补充余额不代表原单会自动再次尝试扣款;先核对原单和钱包流水。
  • ok:true 表示该单已确认支付,仍需查交付;HTTP 200 也可能返回 ok:false,必须同时检查业务字段。
07 / DELIVERY & REFUNDS

以实际交付结果为准

GET /api/v1/upstream/orders/:id 使用本站数字 order_id 查询当前账户的订单,返回 status / amount / refunded_amount / currency / refund_records / procurement_status 等字段。

订单状态处理方式
pending_payment尚未确认支付,不发货,不创建第二笔采购。
paid / fulfilling已支付,等待或正在履约;低频查单或等回调。
partially_delivered部分交付,继续核对后续结果,不标记整单已完成。
delivered / completed交付完成,同时核对 fulfillment。
partially_refunded / refunded结合本地 refunded_amount / refund_records 处理,避免重复退款。
canceled原单取消,不继续视为采购成功。
已交付的查单响应 · 虚构示例
{
  "ok": true,
  "order_id": 900002,
  "order_no": "EXAMPLE-ORDER-900002",
  "status": "delivered",
  "amount": "10.00",
  "refunded_amount": "0.00",
  "currency": "CNY",
  "refund_records": [],
  "fulfillment": {
    "type": "auto",
    "status": "delivered",
    "payload": "EXAMPLE-DELIVERY-CONTENT",
    "delivery_data": {},
    "delivered_at": "2026-11-06T12:00:00+08:00"
  }
}

交付内容在 fulfillment.payload,可能是卡密、操作说明或任务结果;delivery_data 为附加结构。未交付时 fulfillment 可以不存在,不能当成“空卡密已发出”。任务类和人工处理商品尤其需要等待实际交付。

POST /api/v1/upstream/orders/:id/cancel 只取消符合条件的未付款订单。当前 API 没有主动申请已支付订单退款的独立入口;procurement_status 只是更上游采购状态,不代表你的账户已收到退款。

08 / CALLBACKS

接收与验证订单回调

采购时可提供 callback_url。本站使用该 API 凭证的 Key / Secret,以 POST JSON 发送 order.status_changed 或 order.fulfilled 事件。先验签,再核对自己的采购号和本站订单 ID,按订单幂等更新。

回调签名 PATH 固定为 /api/v1/upstream/callback。即使你填写的接收 URL 使用其他路径,也按这个固定值验签;这是回调与普通业务请求的区别。使用收到的原始字节验签,检查秒级时间戳,允许偏差不超过 60 秒。

回调请求体 · 虚构示例,timestamp 仅为演示
{
  "event": "order.fulfilled",
  "order_id": 900002,
  "order_no": "EXAMPLE-ORDER-900002",
  "downstream_order_no": "EXAMPLE-SHOP-ORDER-001",
  "status": "delivered",
  "fulfillment": {
    "type": "auto",
    "status": "delivered",
    "payload": "EXAMPLE-DELIVERY-CONTENT",
    "delivery_data": {}
  },
  "timestamp": 1793923200
}

成功处理后返回 HTTP 200 与 JSON {"ok":true},仅返回文本 success 不算成功。失败最多共尝试 5 次,重试间隔为 30 / 60 / 120 / 300 秒;单次请求约 15 秒超时,不跟随重定向。接收地址应直接返回响应。

回调可能重复、乱序或晚于查单结果;不要因回调重放重复发货或退款。回调没有退款明细,收到状态变化后可再查原单核对金额和记录。没有回调也可以继续低频查单。

09 / SERVER EXAMPLES

可复制的服务端示例

以下代码只在自己的服务端运行。将 XINGXUAN_API_KEY 与 XINGXUAN_API_SECRET 设置为私有环境变量;不要把密钥放进前台脚本、URL、日志或公开仓库。示例直接运行时仅调用 ping,不创建采购单。

Python 3 · 无第三方依赖 · 默认仅测试连接
import hashlib, hmac, json, os, time
from urllib import request, error, parse

BASE = "https://xingxuan.si"

class NoRedirect(request.HTTPRedirectHandler):
    def redirect_request(self, req, fp, code, msg, headers, newurl):
        return None

def signed_request(method, target, payload=None):
    method = method.upper()
    parts = parse.urlsplit(target)
    if parts.scheme or parts.netloc or not parts.path.startswith("/api/v1/upstream/"):
        raise ValueError("Expected a relative Xingxuan API path")
    body = b"" if payload is None else json.dumps(
        payload, ensure_ascii=False, separators=(",", ":")
    ).encode("utf-8")
    timestamp = str(int(time.time()))
    message = "\n".join([method, parts.path, timestamp, hashlib.md5(body).hexdigest()])
    signature = hmac.new(
        os.environ["XINGXUAN_API_SECRET"].encode("utf-8"),
        message.encode("utf-8"), hashlib.sha256
    ).hexdigest()
    return request.Request(BASE + target, data=body if body else None, method=method,
        headers={"Content-Type": "application/json",
            "User-Agent": "Xingxuan-Upstream-Client/1.0",
            "Dujiao-Next-Api-Key": os.environ["XINGXUAN_API_KEY"],
            "Dujiao-Next-Timestamp": timestamp,
            "Dujiao-Next-Signature": signature})

def call(method, target, payload=None):
    req = signed_request(method, target, payload)
    try:
        with request.build_opener(NoRedirect()).open(req, timeout=30) as response:
            return response.status, json.loads(response.read())
    except error.HTTPError as exc:
        try:
            data = json.loads(exc.read())
        except (ValueError, UnicodeDecodeError):
            data = {"ok": False, "error_code": "non_json_response"}
        return exc.code, data
    except error.URLError:
        # A purchase may already exist. Keep its original order key.
        return None, {"ok": False, "error_code": "transport_error"}

if __name__ == "__main__":
    status, data = call("POST", "/api/v1/upstream/ping")
    print(status, data)
PHP · 签名函数
function xingxuanSign(string $secret, string $method, string $path,
                      int $timestamp, string $body = ''): string {
    $path = parse_url($path, PHP_URL_PATH);
    $message = strtoupper($method) . "\n" . $path . "\n"
             . $timestamp . "\n" . md5($body);
    return hash_hmac('sha256', $message, $secret);
}
// $body = json_encode($payload,
//     JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
// 将同一份 $body 作为 HTTP 请求体发送,不要再次 json_encode。
// 回调验签时传入固定路径 /api/v1/upstream/callback。

10 / ERRORS & RETRIES

失败时保留原采购身份

HTTP / error_code处理
401 · missing_auth_headers / invalid_timestamp / timestamp_expired / invalid_signature检查三个请求头、服务端时间、原始 body 字节与签名路径。修正后仍使用原业务订单号。
403 · invalid_api_key / user_disabled检查人工审核、凭证开关、账户状态及 Secret 是否重置。
400 · invalid_order_key / sku_unavailable / product_unavailable / bad_request检查采购唯一号、SKU、数量、表单与商品状态。表单支持限制见第 05 节。
402 · insufficient_balance核对余额和原单;不要通过换采购号重试来绕过原单状态。
409 · insufficient_stock / idempotency_conflict / legacy_order_exists / cancel_not_allowed按具体错误处理。幂等冲突要核对原请求;遗留订单已存在时按返回 ID 查询,不再创建。
503 · payment_outcome_unknown采购支付结果待核对。保存响应订单 ID 和原采购号,先查原单;不要新号重购。
503 · stock_unavailable;429;网络超时或 5xx退避重试。目录保留有效快照;采购保持原号与原参数,拿到订单 ID 后查询原单。
200 · ok:false / order_canceled原单已取消。HTTP 成功不等于业务成功,始终检查 ok / status / error_code。

记录采购唯一号、本站订单 ID、状态与错误码供核对即可。不要记录 Secret、完整认证头或买家的完整敏感表单;对接口失败使用间隔递增的重试,避免高频重复调用。

11 / ACGFAKA

异次元 3.8.5 接入说明

按官方 lizhipay/acg-faka 3.8.5 稳定版核对,发布时间为 2026-10-28;版本核对日期为 2026-11-06。这里说明该版本所需的兼容范围,未将其他分支或第三方修改版当作官方版本。

兼容范围:本地自动卡密。本站提供异次元共享协议兼容入口,只列出本站本地库存、无买家表单的自动卡密;每个 SKU 会独立显示为一个商品。人工、映射到外部货源的商品、Muse/任务商品与带表单的商品均不在这个共享目录中。只有实际交付的卡密才会作为采购成功返回。

共享店铺配置

在异次元后台新增共享店铺,选择异次元原生共享协议(不要选择其他程序的 Open API 或 SharedStock 插件协议),填写:

异次元配置项应填写的内容
店铺地址https://xingxuan.si/api/v1。这里必须保留 /api/v1;异次元会自动追加 /shared/... 路径。
商户 ID / app_id自己的会员中心 → API 对接页显示的异次元 app_id(数字凭证 ID),不是 API Key,也不是会员用户 ID。
商户密钥 / app_key生成 Secret 时页面显示的异次元专用 app_key,为 64 位小写十六进制。不要填写原生 128 位 Secret。
币种与汇率本站币种以连接和报价响应为准;两端都使用人民币时选择 CNY,汇率为 1。不同币种须按自己的商城规则明确配置结算汇率。

先测试连接与余额,再读取共享目录,选择少量商品导入并设置自己的售价。空目录表示当前没有符合上述范围的商品,不能用普通商城目录补进不兼容的商品。

异次元 3.8.5 的商户密钥输入上限为 64 个字符,本站原生 Secret 为 128 位,所以两者分别提供。专用 app_key 的计算为:

异次元专用密钥派生 · 仅在自己的服务端计算
app_key = lowercase_hex(SHA256(UTF8("xingxuan/acgfaka/v1\n" + NATIVE_SECRET)))

PHP:
$appKey = hash('sha256', "xingxuan/acgfaka/v1\n" . $nativeSecret);

Python:
app_key = hashlib.sha256(("xingxuan/acgfaka/v1\n" + native_secret).encode("utf-8")).hexdigest()

\n 表示一个实际换行(LF),不要写成两个字符的反斜杠和 n。

专用 app_key 仍有采购和余额使用权限,按 Secret 同等保护。它使用同一账户的审核状态;重新生成原生 Secret 后,原生签名与旧的异次元 app_key 都立即失效,需要同时更新两个连接。

两套协议的对应关系

异次元 3.8.5 原生共享调用本站已支持的对应能力
POST /shared/authentication/connect本站完整路径为 /api/v1/shared/authentication/connect,返回 code/msg/data 与 data.shopName / balance / currency_code。
POST /shared/commodity/items、item完整路径均加 /api/v1。列表为分类树,详情按 code 读取,商品编号为 nova-sku-数字SKU编号。
inventory / inventoryState / stock / valuation按本地 SKU 返回库存、数量限制与会员/阶梯报价;valuation 返回本次购买数量的总价,不是单价。活动优惠和最终结算仍以实际订单为准。
POST /shared/commodity/trade接收原版稳定的 request_no,转换为独立命名空间中的固定采购号,复用本站原生的持久幂等和钱包支付流程,不另建扣款系统。
响应 data.secret只有已实际交付的 fulfillment.payload 才是交付结果;已支付、等待处理或请求超时不能转换成成功卡密。

上述 8 个接口均为表单 POST,携带 app_id / app_key / sign;使用异次元的 MD5 参数签名,不混用原生 HMAC 请求头。签名规则为:移除 sign,按顶层参数名排序,移除值为空字符串的顶层参数,计算 md5(urldecode(http_build_query(params) + "&key=" + app_key))。app_key 自身也在被签名的参数中。原版程序会自动完成这些步骤。

item / stock / valuation 使用 code;inventory 使用 sharedCode;inventoryState / trade 使用 shared_code。数量字段为 num。商品已按 SKU 展开,race 为空、card_id 为 0、不再传额外 SKU 选择;不支持卡号预选或买家表单。接口错误也返回 JSON code/msg/data,必须检查 code,不能只看 HTTP 200。

交付方式决定适配方案

原版异次元收到共享采购的 secret 后直接将本地订单标记为已交付。本站兼容入口会在原生支付后等待本地卡密交付,最多再等待约 10 秒,给原版约 30 秒的 HTTP 请求时限留出处理和网络余量。返回 code:200 时,data.secret 才是真实已交付内容。

处理中、超时或连接中断时,停止自动重新采购。code:202 表示原单仍在处理,code:502 可能表示已标记交付但缺少有效卡密。保存 data.order_id / order_no 与原始 request_no,在会员中心核对或用原生查单接口查询;同一请求号重试只恢复原单,不再次扣款。不要新建另一个下游订单来试。

原版异次元可能在共享调用报错后回滚本地订单;买家再次购买会生成新的订单号,从而形成另一笔真实采购。本站无法把两个不同的请求号自动判断为同一业务。未知结果必须人工核对原单,不能把错误提示理解为“尚未扣款”。

原生共享调用不支持本站的异步状态回调。要经营人工、任务或其他延迟交付商品,下游需要支持 Dujiao-Next 的插件,持久保存采购号与订单 ID,处理查单、回调和退款;带买家字段的商品还须先满足第 05 节说明的表单支持范围。此类商品不属于本页异次元原生共享兼容范围。

官方协议核对来源

12 / MUSE MAIL CODE API

Muse AI 成品号专属邮箱接码 API 与白标对接

针对本站供应的 Muse AI 10亿 / 310亿成品账号(@outlook.com 原生直注邮箱),本站提供免密令牌接码页(https://xingxuan.si/a/{token})、纯 JSON 接码 API 以及代理商白标嵌入方案,同时支持提取 6 位 Meta 登录验证码与 8 位帐户恢复安全确认码。

独立接码对接工具箱:您也可以直接访问 https://xingxuan.si/api/v1/docs 使用在线批量接码域名替换器,或一键下载白标接码单页 whitelabel.html 部署到您自己的域名下。

方式 A:Nginx 反向代理白标绑定(推荐代理商使用)

在您自己的域名 Nginx 配置中加入以下两段反向代理,即可将卡密中的 https://xingxuan.si/a/xxxx 直接替换为 https://您的域名.com/a/xxxx,客户全程只看到您的域名:

Nginx 反向代理配置
location ^~ /a/ {
    proxy_pass https://xingxuan.si/a/;
    proxy_ssl_server_name on;
    proxy_set_header Host xingxuan.si;
    proxy_set_header X-Real-IP $remote_addr;
}

location ^~ /api/v1/code/ {
    proxy_pass https://xingxuan.si/api/v1/code/;
    proxy_ssl_server_name on;
    proxy_set_header Host xingxuan.si;
    proxy_set_header X-Real-IP $remote_addr;
}

方式 B:纯 JSON 验证码读取接口(供自研前端或 TG 机器人调用)

接口项说明
请求方式与路径GET https://xingxuan.si/api/v1/code/{token_or_email}(无需鉴权头,{token_or_email} 可传卡密接码链接末尾的专属加密 Token 或绑定邮箱)
跨域支持默认返回 Access-Control-Allow-Origin: *,前端网页或后端脚本均可直接调用
返回字段ok: true、email(脱敏或对应邮箱)、code(最新 6~8 位验证码)、subject(邮件标题)、receivedAt(收件时间 ISO 字符串)
JSON 响应示例
{
  "ok": true,
  "email": "ExampleUser123@outlook.com",
  "code": "839201",
  "subject": "Your Meta confirmation code is 839201",
  "receivedAt": "2026-11-11T08:30:12Z"
}
13 / MUSE TOKEN BOOST API

Muse AI 邀请码自动助力充值与实时查单 API

如果您从本站批发采购了 Muse AI 助力卡密(M1... 或 NV1-... 格式,每张或每份对应 +10 亿 Token,最高可叠满 30 次升至 310 亿满级母号),除了让客户前往 https://xingxuan.si/muse 自助兑换外,您也可以在自己的发卡网或机器人中直接调用以下公开 API 为客户提交充值并实时查询进度:

1. 提交卡密与邀请码内置直充

参数名类型必填说明
POST 地址https://xingxuan.si/api/muse-pool/public/redeem(Content-Type: application/json)
inviteCodestring是客户的 6 位大写字母+数字 Muse 邀请码(如 A1B2C3)
voucherCodestring是从本站采购的充值卡密(支持单张或多张以空格/换行分隔批量合并提交,如 M1XXXX NV1-YYYY)
请求与响应示例 · POST /api/muse-pool/public/redeem
// POST https://xingxuan.si/api/muse-pool/public/redeem
// Request Body:
{
  "inviteCode": "A1B2C3",
  "voucherCode": "NV1-8F9A2B4C6D1E"
}

// Response (200 OK):
{
  "ok": true,
  "message": "兑换成功!已排入内置自动充值队列",
  "order": {
    "ticket": "2B113FF6",
    "inviteCode": "A1B2C3",
    "uses": 10,
    "done": 0,
    "status": "queued"
  }
}

2. 实时查询邀请码或卡密充值进度

参数名类型必填说明
GET 地址https://xingxuan.si/api/muse-pool/public/query?q={inviteCode_or_voucherCode}
qstring是客户的 6 位邀请码(A1B2C3)、工单号(ticket)或充值卡密
响应示例 · GET /api/muse-pool/public/query
{
  "ok": true,
  "order": {
    "ticket": "2B113FF6",
    "inviteCode": "A1B2C3",
    "uses": 30,
    "done": 18,
    "status": "running"
  }
}