快速完成 NFT 挂单:Order API 全流程图文详解

·

用一条接口就能把 NFT 上架到主流交易市场,听起来不可思议?掌握「Order API」后,开发者只需不到 5 分钟即可完成 NFT 挂单 流程。本指南围绕 Web3 API 的「Create a listing」接口,拆分链路地址、参数说明、示例代码、验签要点与 智能合约 交互细节,让你一次性学会“从钱包签名到市场曝光”的所有步骤。


1. 接口职责与应用场景

核心关键词:NFT 挂单、订单创建、Web3 API、市场销售、区块链

Order API 属于 Marketplace API 套件,解决以下高频需求:

与传统 DEX 仅支持 Token Swap 不同,该接口专为 ERC-721 / ERC-1155 设计,实现链上挂单 + 撮合的完整闭环。


2. 请求地址 & 网络环境

POST

https://web3.okx.com/api/v5/mktplace/nft/markets/create-listing

请求头需带 Content-Type: application/json,并用 API Key 完成鉴权;若身处 企业内网,需开放出网 443 端口。👉 跟着示例 3 分钟生成你的第一条挂单


3. 必传参数逐条拆解

参数名类型必填说明
chainString欲挂载的 区块链网络。例如 EthereumOKTCPolygon 等,仅支持已在官方支持链列表中备案的链。
walletAddressString卖家钱包地址。接口会先对该地址做 链上余额校验授权检测
collectionAddressStringNFT 合约地址。格式需符合该链地址规范,字母大小写不敏感。
tokenIdStringNFT 标识符,支持字符串形式数字或十六进制。
priceStringNFT 挂单价格,以最小精度单位的十进制字符串表示。举例:"2000000" 表示 2 USDT,因为 USDT 精度为 6。
currencyAddressString支付代币地址。若使用链原生币(ETH、OKT、BNB),固定填 0x0000000000000000000000000000000000000000
countStringNFT 数量。1 针对单个 ERC-721;若为 ERC-1155,则可填大于 1 的数量。
validTimeString挂单过期时间,Unix 时间戳(秒)。示例:2200000000 对应 2039-09-19 07:06:40。
platformString目标市场,可在集成市场清单中选择,如 "OKX.market""Element""OpenSea" 等,支持多平台同时曝光。

4. 组合请求报文实例

以下 JSON 将单个 ERC-721 NFT 以 2 USDT 的价格挂在以太坊主网 OKX.market,有效期 2030-01-01 00:00:00:

{
  "chain": "Ethereum",
  "walletAddress": "0xABC123...",
  "collectionAddress": "0x09e...",
  "tokenId": "1234",
  "price": "2000000",
  "currencyAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
  "count": "1",
  "validTime": "1893456000",
  "platform": "OKX.market"
}

发请求前,确保钱包已 Approve collectionAddress 给系统托底合约地址,否则接口会返回 403 Unauthorized.


5. 幂等签名机制

为防止重放攻击,系统在后台要求:

  1. 计算 plaintext:把全部参数按 ASCII 升序排序后组合
  2. 读取钱包私钥对上述字符串签名
  3. 把签名值 + 公钥放入 Header X-Signature

示例做法(JavaScript):

const sorted = JSON.stringify(payload, Object.keys(payload).sort());
const signature = await signer.signMessage(sorted);
headers['X-Signature'] = signature;

若签名不匹配,会返回 401 Signature Error


6. 成功响应 JSON

合规响应统一格式,状态码 200

{
  "code": 0,
  "msg": "success",
  "data": {
    "orderId": "ord-20250604-00001",
    "hash": "0xf8f...",
    "platformStatus": {
      "OKX.market": "listing",
      "Element": "pending"
    }
  }
}

拿到 orderId 即可在 SDK 中监听订单状态或通过 Webhook 实时推送。👉 检查挂单状态变化,别忘了这一步


异常码速查手册

错误码含义解决建议
40001参数格式错误请检查 price 是否为十进制字符串
40002invalid contractcollectionAddress 未部署或 ABI 不符
40003insufficient approvalNFT 授权数量不足,重新 Approve
50001internal error服务端繁忙,15 分钟后重试

FAQ

Q1:可以一次挂多件同合约不同 tokenId 吗?
A1:该接口一次单件。批量场景建议并发调用,或使用 batchCreateListing 进阶接口。

Q2:挂单后 NFT 会不会立刻被转移?
A2:不会。系统仅在撮合成功时才真正链上划转,挂单期间 NFT 仍在你的地址内。

Q3:是否支持自定义版税?
A3:版税跟随合约为准,平台不支持额外抬高。

Q4:validTime 能否设在过去?
A4:限制严格,若时间早于当前时间戳 60 秒,将直接返回 400 Bad Request

Q5:取消挂单怎么做?
A5:使用同一套 Order APIcancelListing 端点,加传 orderId 及相同签名即可。

Q6:挂在多个市场会不会出现双重成交?
A6:前端撮合逻辑会自动去重;真正成交以链上事件为准,平台会第一优先实时广播撤单。


结语

通过 Order API 创建挂单,你的 NFT 多平台可见度、流动性与交易效率都将大幅提升。关注 validTime、签名校验与链上授权三步,就能安心把注意力转回艺术创作与社区运营。若正准备上线大型 NFT 系列,不妨立刻动手调用接口,体验秒级上架的丝滑!