读取目录并设置购买上限
先调用 GET /api/auth/me 确认当前账户和余额。GET /api/catalog/services 与 GET /api/catalog/countries 提供应用和国家标识。使用 GET /api/catalog/prices?service=tg 查询报价,其中 tg 需要替换为实际服务代码;可用 country 参数进一步限定国家。
POST /api/orders 接收 service、country、max_price_micros 和 idempotency_key,country 应以字符串发送。金额上限以整数微美元计量:1,000,000 单位等于 1 美元。建议使用报价返回的 price_micros 作为上限,不要自行编造价格。报价超出上限时,应重新读取并确认新金额。
让重试指向同一笔购买
为每一次计划中的购买生成唯一 idempotency_key,并在发送前持久保存。如果响应中断,使用相同的键重试同一次操作。为网络重试生成新键,可能创建第二笔购买。
检查返回的订单状态,不要把所有 HTTP 200 都视为号码已经分配。订单可能处于购买中、等待短信、已收码、失败或待核查。待核查可能表示上游结果不明确,购买费用仍被保留,不应自动用另一笔购买替代。
在原订单上查询和操作
GET /api/orders 查询账户订单列表,GET /api/orders/{id} 读取单笔订单,POST /api/orders/{id}/refresh 请求刷新状态。请遵守频率限制,使用有间隔、有退避的轮询。验证码使用完成后,可调用 POST /api/orders/{id}/finish 结束符合条件的已收码订单。
POST /api/orders/{id}/cancel 与网页采用相同的等待期和未收码条件。取消请求发出或请求超时,都不代表已经退款。应读取订单结果,并通过 GET /api/wallet/transactions 核对资金记录。
把密钥视为账户访问凭据
不要将密钥放入前端 JavaScript、公开代码库、URL 或截图中。密钥泄露或不再使用时,请在开发者页面撤销。日志中应避免保存鉴权请求头,以及与排查无关的完整验证码内容。
接入程序需要分别处理余额不足、无库存、报价变化、频率限制和上游结果不明确等情况。使用少量、明确的操作测试流程,在自己的记录中保存订单编号,并在部署前核对交互式接口说明。