能力与身份
NOWPayments 使用 OneAster 账户会话,不使用模型 API Key。先读取 GET /core/v1/billing/nowpayments 的 enabled、min_amount_usd_cents、max_amount_usd_cents;关闭时不要创建订单。当前生产已开启 NOWPayments;Stripe 仍关闭且仅支持测试模式,不能把 payment_enabled=true 当作 Stripe 或所有支付渠道可用。
创建与金额
POST /core/v1/billing/nowpayments/orders 必须带会话 Authorization 与 Idempotency-Key,正文示例为 {"amount_usd_cents":"1500","pay_currency":"usdttrc20"}。这是 USD 整数美分,不是积分;1 USD = 100 OneAster 积分,1 积分 = 10000 micro,1 美分 = 10000 micro。示例 $15 = 1500 积分 = 15000000 micro;$5 = 500 积分 = 5000000 micro 仅用于单位换算,低于当前新订单最低金额。金额以规范整数字符串和 BigInt 处理,不接受前导零,不以浮点显示值改写账务。当前生产新订单金额范围为 1500–1000000 美分($15–$10000),实际范围以账户能力接口为准;不可由客户端指定 credit_micro、回调地址或汇率。
新订单返回201;同一意图、金额和币种网络返回200和原订单,改变金额或币种网络返回409。unknown 或创建超时保留原意图,不换键重复创建 invoice。creating、unknown、open、paid、expired、failed 为订单状态。
充值能力还返回 max_pending_orders、pending_order_count 和 pending_order_states;当前上限为 50 笔未归档、付款窗口尚有效的 creating、unknown 或 open 订单。达到上限时新意图返回409,原意图重放仍优先返回原订单。数量是只读快照,创建时以服务端并发检查结果为准。
托管付款与到账
只有本人未归档且付款窗口仍有效的 open 订单可返回 checkout_url。通过服务器返回的可信链接进入 NOWPayments 托管付款页;新订单选择能力接口 payment_options 返回的 USDT、USDC 八种币种和网络之一;省略时默认 usdttrc20,创建后不能变更。不要手填收款地址。新订单本地付款窗口为 900 秒,逾期隐藏付款入口;供应商页面的倒计时可能不同,不能声称供应商 invoice 已取消。付款页返回不代表到账。
轮询 GET /core/v1/billing/nowpayments/orders/{id} 和 GET /core/v1/me 确认原订单 paid 与余额;只读 GET 不额外查询供应商。跨账号详情404,管理员列表和详情隐藏付款链接。
订单归档与管理员概览
订单列表默认只显示未归档记录,archived=true 只显示已归档记录,archived=all 显示全部;用户只能查询自己的订单。管理员可按订单 UUID、invoice ID 等精确筛选,并通过 GET /core/v1/admin/billing/nowpayments/summary 查看汇总。管理员归档接口 POST /core/v1/admin/billing/nowpayments/orders/{id}/archive 当前生产关闭,返回 503 nowpayments_archive_disabled;没有普通用户取消接口。历史归档记录仍可查询;归档保留订单、支付证据和审计记录,不取消供应商 invoice,也不会撤销已入账余额。已归档订单不占待付款名额,付款链接不再返回;晚到的有效付款证据仍按原报价核实并唯一入账。
官方通知与恢复
POST /core/v1/billing/nowpayments/ipn 由供应商发送,保留原 JSON 与 x-nowpayments-sig;后端递归排序 JSON、HMAC SHA512 验签并查询官方原支付证据。合法签名本身、confirmed、sending、partially_paid 都不证明到账;必须核对原订单、invoice、报价、凭据与实例,再确认 finished 且 actually_paid >= pay_amount,才由 Core 原子唯一入账。超额只按原报价计一次,退款状态不自动冲正已消费余额。
证据暂未同步时保留原订单并等待原通知重试。管理员 POST /core/v1/admin/billing/nowpayments/orders/{id}/reconcile 仅查询原 payment_id,不重新创建 invoice。公共文档站不收集会话或执行充值、IPN、恢复;本轮没有真实转账或供应商最终通知投递验收。