Демо-режим: референсная витрина для eSIM-операторов. Цены живые, оплата отключена. Запустить своего оператора →
Travel eSIM · demo
Русский

Онбординг: рельсы, сценарии и взаимодействие

Содержание

Этот гайд для eSIM-бизнесов, которые уже продают — операторов, MVNO, реселлеров, тревел-платформ — и хотят видеть ИИ-агентов среди покупателей: что такое рельсы AIMarket, что даёт подключение, как взаимодействуют части и четыре способа подключиться, сохранив свою платформу.

Другие документы: обзор · интеграции · справочник SDK · гайд оператора · гайд для агентов

1. Что такое рельсы

AIMarket — федерация хабов, где ИИ-агенты находят возможности и платят за них. Работает это на трёх механизмах, и кит использует все три:

МеханизмЧто он даёт продавцу eSIM
Федерация и поискВаш узел публикует подписанный манифест (/.well-known/ai-market.json). Хаб принимает его после вызова esim.quote с настоящей страной и вносит ваши возможности в каталог; хабы обмениваются каталогами, поэтому агент, который ищет в любом из них, находит вас.
Подписанные ответыКаждый бесплатный ответ (предложения, статус) несёт подпись Ed25519 над запросом и результатом. Хабы проверяют её, прежде чем показать или передать вас; агенты тоже могут её проверить.
Платежи x402Платный вызов (esim.order) отвечает 402 Payment Required со своей ценой. Агент подписывает авторизацию USDC в Base; ваш узел проводит её через фасилитатор прямо на ваш кошелёк.

Хаб направляет поиск, но никогда не деньги. Он не держит средства, не видит код активации и не берёт комиссию с прямых продаж.

flowchart LR
  subgraph discovery["Поиск (хаб)"]
    M["Ваш манифест<br/>подписан ключом узла"] --> ADM["Проверка при приёме<br/>esim.quote с настоящей страной"]
    ADM --> L["В каталоге: esim.quote@v1, esim.status@v1"]
    L --> S["market_search агентов<br/>на любом хабе федерации"]
  end
  subgraph trade["Сделка (напрямую)"]
    Q["предложение — бесплатно, подписано"] --> O["заказ — 402, x402 USDC"]
    O --> D["выдача — код активации"]
    D --> ST["статус — бесплатно, по токену"]
  end
  S --> Q

2. Зачем подключаться

3. Сценарии

3.1 Агент-турагент бронирует поездку и добавляет интернет

sequenceDiagram
  participant U as Путешественник
  participant Ag as Турагент (ИИ)
  participant Hub as Хаб AIMarket
  participant N as Узел продавца
  U->>Ag: "Токио, 12 дней, нужен интернет"
  Ag->>Hub: market_search "eSIM Japan"
  Hub-->>Ag: продавцы с esim.quote@v1
  Ag->>N: quote {country: JP, min_gb: 5, min_days: 12}
  N-->>Ag: 3 предложения, подписаны
  Ag->>U: "5 ГБ, 15 дней, $6.40 — покупаем?"
  U->>Ag: да
  Ag->>N: заказ + x402 USDC
  N-->>Ag: код активации, QR, ссылка установки
  Ag->>U: QR-код и шаги установки

3.2 Действующий реселлер добавляет канал агентов

Вы уже продаёте eSIM на своём сайте из своих источников. Вы запускаете кит с SUPPLIER=http и реализуете пять эндпоинтов в своей платформе. Ваша витрина остаётся как есть; витрину кита можно не включать. Каждая продажа агенту приходит в ваши системы вебхуком agent_order.delivered, а на ваш кошелёк — в USDC.

3.3 MVNO или телеком отдаёт свои профили

Ваш SM-DP+ или API выдачи создаёт профили. POST /orders HTTP-поставщика резервирует профиль, GET /profiles возвращает его код активации, когда он готов, а cancel возвращает неиспользованный на склад. Кит добавляет оплату x402, подписи и федерацию.

3.4 Ассистент корпоративных поездок и расходов

Ассистент, который бронирует поездки сотрудникам, покупает eSIM на каждую поездку, хранит esim_tran_no и status_token и проверяет esim.status перед возвращением сотрудника: расход трафика, оставшиеся дни. Финансы сверяют каждый платёж USDC с событиями вебхуков.

3.5 Супер-приложение или мини-приложение в Telegram

Приложение, построенное вокруг кошелька (TON, Telegram), вызывает узел продавца со своего бэкенда: предложение, затем заказ по x402 — или отправляет своих пользователей на витрину, которая принимает USDT в TON. Один и тот же узел обслуживает оба варианта.

3.6 Новый оператор, у которого есть только оптовый аккаунт

Аккаунт eSIM Access, сервер и домен: docker compose up даёт узел для агентов, узел федерации и витрину. Так работает esim-shop.modelmarket.dev в демо-режиме.

4. Четыре способа подключиться

A · Весь китB · HTTP-поставщикC · SDKD · Контракт
У вас естьаккаунт eSIM Access, Airalo или eSIM Goсистема выдачи, любой языкплатформа на Node.jsсвой API для агентов
Вы делаетеничего5 эндпоинтовобъект поставщика3 эндпоинта esim.*@v1
Кит запускаетвсёвсё, кроме поставоквнутри вашего сервисапроверку соответствия
Платежи для людей10 сетей10 сетейвашиваши
До первого предложениячасденьденьнесколько дней
flowchart TB
  subgraph A["A · весь кит"]
    A1["Caddy"] --> A2["store"] & A3["rails"] & A4["node"]
    A2 & A3 --> A5["eSIM Access"]
  end
  subgraph B["B · HTTP-поставщик"]
    B1["Caddy"] --> B2["store (по желанию)"] & B3["rails"] & B4["node"]
    B2 & B3 -->|"подписанный HTTP"| B5["Ваша система<br/>/catalog /orders /profiles /balance"]
  end
  subgraph C["C · SDK"]
    C1["Ваш сервис"] --> C2["createNode()"]
    C2 --> C3["ваш объект поставщика"]
  end
  subgraph D["D · контракт"]
    D1["Ваш API для агентов<br/>любой язык"] --> D2["esim-rails check"]
  end

Затем любой путь анонсирует себя хабу одинаково (см. гайд оператора, раздел 9): сгенерируйте node.toml, запустите aimarket node, выполните aimarket doctor, затем aimarket node knock.

5. Как взаимодействуют части

5.1 Заказ агента от начала до конца

sequenceDiagram
  autonumber
  participant Ag as Агент
  participant N as Узел продавца
  participant F as Фасилитатор x402
  participant S as Поставщик
  participant CRM as Ваши системы
  Ag->>N: POST /order {offer_id}
  N-->>Ag: 402 + PAYMENT-REQUIRED (exact, USDC, eip155:8453, цена, payTo)
  Ag->>N: POST /order + PAYMENT-SIGNATURE
  N->>F: проверить авторизацию
  N->>S: заказ {transaction_id = hash(плательщик, nonce), план, себестоимость}
  S-->>N: order_ref
  loop пока профиль не готов (≤ 45 с)
    N->>S: profiles {order_ref}
  end
  N->>F: провести
  F-->>N: проведено (USDC на вашем кошельке)
  N-->>Ag: 200, выдача
  N-)CRM: agent_order.delivered (подписанный вебхук)

Если профиль не готов за 45 секунд, агент получает 503 allocation_pending, и ничего не проводится; тот же платёж, отправленный снова, находит тот же заказ. Если провести платёж не удалось, узел отменяет профиль и отправляет agent_order.cancelled.

5.2 Заказ на витрине

stateDiagram-v2
  [*] --> awaiting_payment: заказ создан (цена держится 20 мин)
  awaiting_payment --> delivered: платёж найден, eSIM куплена
  awaiting_payment --> refund_due: оплачено, поставщик отказал
  awaiting_payment --> underpaid: меньше цены
  awaiting_payment --> expired: за 24 ч ничего
  delivered --> [*]
  refund_due --> [*]: вы возвращаете деньги
  underpaid --> [*]: вы возвращаете или доводите
  expired --> [*]

Каждая смена статуса — вебхук order.<status> в ваши системы.

5.3 Куда идут деньги

flowchart LR
  P["Путешественник"] -->|"USDT · USDC · TON<br/>10 сетей"| W["Ваши кошельки"]
  AG["Агент"] -->|"USDC в Base, x402"| W
  W -->|"вы пополняете"| SUP["Баланс у поставщика"]
  SUP -->|"себестоимость eSIM"| K["профили"]
  HUB["Хаб AIMarket"] -.->|"ни денег, ни комиссии"| W

5.4 Кто что видит

СторонаВидитНикогда не видит
Хаб AIMarketваш манифест, предложения, которые передаёт, их подписиплатежи, коды активации, вашу себестоимость
Агентпредложения, цены, свою выдачувашу себестоимость, других покупателей
Поставщик (eSIM Access или ваш)заказы с номером транзакции, выведенным из платежапокупателя, платёж
Ваши системы (вебхуки)заказ, цену, себестоимость, способ, ссылку на платёж, адрес плательщика, id профилякод активации, токен заказа
Диск китазаказы без кодов активации, хеш каждого токена заказакоды активации, приватные ключи

6. Подключение ваших систем

Ваша системаЧерез что подключаетсяЧто передаётся
Поставки eSIM, SM-DP+, склад профилейHTTP-поставщик (SUPPLIER=http)внутрь — планы и себестоимость; наружу — заказы, профили, отмены
CRM, хелпдесквебхуки (WEBHOOK_URL)каждый заказ и его статус
Биллинг, учёт, ERPвебхукицена, себестоимость, способ, ссылка на платёж
Ваша витрина или приложениеAPI узла продавцапредложения и заказы, как у любого агента
ЦеныMARGIN_PCT, MIN_MARGIN_USD или cost_usd каждого плана из вашей системываша цена = себестоимость + наценка

Все эндпоинты, тела запросов и подписи с кодом — в справочнике SDK.

7. Чек-лист онбординга для действующего оператора

  1. Прочитайте гайд для агентов, чтобы увидеть, что будут вызывать агенты.
  2. Выберите путь (раздел 4). Для B реализуйте пять эндпоинтов; образец — rails/examples/operator-backend.mjs.
  3. Запустите кит с DEMO_MODE=1 и вашим поставщиком; проверьте, что каталог загрузился (/agents/healthz).
  4. Направьте WEBHOOK_URL на тестовый эндпоинт вашей CRM; сделайте один тестовый заказ (гайд оператора, раздел 10).
  5. Запускайте esim-rails check https://<ваш домен>/agents --country <страна, которую вы продаёте>, пока каждая строка не станет ✓.
  6. Запустите узел федерации и анонсируйте его хабу. Найдите себя через market_search.
  7. Поставьте DEMO_MODE=0. Вы продаёте агентам.

8. Вопросы

Берут ли хабы комиссию? Не с прямых продаж: агент платит вашему узлу по x402.

Можно оставить свою витрину и свои цены? Да. Путь B или C, витрина кита выключена — или включена с вашей наценкой.

Какие агенты могут покупать? Любой клиент, который говорит на x402 v2 с USDC в Base, и любой MCP-клиент, подключённый к хабу AIMarket для поиска.

А если хаб недоступен? Ваш узел продолжает продавать агентам, которые знают его адрес; поиск вернётся, когда вернётся хаб.

Можно продавать посуточные пакеты или пополнения? Не в v1: esim.*@v1 продаёт фиксированные планы с заданным объёмом и сроком.

Нужна ли компания? Продавец — вы: ваши условия, ваши возвраты, ваши налоги. См. гайд оператора, раздел 13.

Кит на GitHub →