/v2/redeem 请求均需要后端的开发者密钥及同一 EOA 的钱包会话。GET 请求需要 redeem:read,其他方法需要 redeem:write。提交结账还需要钱包签名。
金库地区与批次
先查询金库地区,查看钱包在各地区可兑换的卡牌数量。用户选定地区后,用countryCode(例如 HK)查询该地区可兑换的卡牌。每张卡会返回 regionCountryCode 和 vaultDisplayName。
每次结账可包含同一金库地区最多 50 个不同的代币 ID。两张香港金库的卡可以一起报价;马来西亚金库的卡需另行报价和结账,即便收件人相同。收件地另填在 address.countryCode。
从选择卡牌到下单
- 验证收货地址。 调用验证配送地址时,在请求体顶层传入
countryCode、addressLine1、city和postalCode。按需填写addressLine2和state,并根据响应中的status和detail确认地址。 - 获取运费报价。 调用查询运费,传入选定的
tokenIds,将收货地址放在address对象中。保存quoteId和expiresAt。向用户展示快递选项、保险和报价中的handlingFeeInUsd。若费用减免,该值可为零。地址表单的国家及地区列表由应用提供。 - 准备结账。 调用准备结账,传入
quoteId、courierId、recipient和insurance。保存preparationId。请用户确认卡牌、收件人、地址和总额,另行列出预估关税及税款。
核对签名内容
兑换完成后,所选 NFT 将被永久销毁。请求钱包签名前,逐项核对:- 将钱包、链、卡牌 ID、收件人、地址、快递及
totalFeeInUsdt与用户确认的订单对照。 - 确认代币及合约可信、授权未过期、钱包余额及授权额度充足。如需向 Permit2 授权 USDT,先等待交易确认。
- 核对
permitTypedData中的 witness 与redemptionTypedData中兑换批次的哈希,再请钱包签署许可。如有变化,先返回确认页。
使用 TypeScript SDK 签名
使用 TypeScript SDK 签名
preparationId 和 signature 提交一次结账。保存返回的 requestId,用于跟踪订单。
过期与恢复
报价有效期为十分钟。结账准备沿用原报价的到期时间。任一数据在提交前过期,都要重新报价并请用户核对价格。 如果未收到结账响应,先查GET /checkout/{preparationId},再判断是否需要付款。结账状态保留 24 小时。会话过期时,重新验证同一钱包即可恢复。按钱包和链保存待处理 ID,恢复日志中不要记录签名、令牌或收货信息。
订单与物流
查询订单列表可查看摘要。使用requestId 可查询单笔订单。如果新订单还未出现在列表中,可先查看结账状态或订单详情。需要更新配送进度时,刷新物流信息。
有数据时展示 shipmentStatus、trackingNumber、trackingUrl 和 trackingLastSyncedAt。支持 trackingStage 的部署可区分处理中、出库、运输和送达。创建或更新时间本身不能证明已发货。
请在目标环境的 HTTP 参考中核对是否支持 hasCancelledToken 和 total。支持时,hasCancelledToken=true 匹配至少一张卡被持有人取消的订单;total 是跨分页的匹配总数。