AgentPay

Магазинам · Merchant API

Своя CMS: Merchant API

Tilda (через webhook), самописный бэкенд, 1С-Битрикс сайт без готового модуля. Два обязательных потока: отдать каталог и принять заказ.

Подключение бесплатно. Абонентской платы нет. Комиссия берётся только с заказов, которые агент оформил через AgentPay. Нет таких заказов, нет платежа.

Реквизиты из кабинета

  1. /business → создать магазин, коннектор Webhook / JSON.
  2. Webhook URL заказа — ваш HTTPS, например https://shop.example.ru/hooks/agentpay.
  3. Запомнить: mk_…, UUID магазина, HMAC-секрет вебхука.

1. Загрузить каталог

POST {API}/merchant/catalog/upsert

Заголовок:

Authorization: Bearer mk_ВАШ_КЛЮЧ
Content-Type: application/json

Тело (пример, 2 позиции, до 500 за запрос):

{
  "storeId": "0d9ce8c7-a3a1-4b01-ac7a-ec28bcdc8f28",
  "replaceMissing": false,
  "products": [
    {
      "id": "milk-25-1l",
      "sku": "milk-25-1l",
      "title": "Молоко 2.5% 1л",
      "price": 89,
      "currency": "RUB",
      "imageUrls": ["https://cdn.shop.example.ru/milk.jpg"],
      "inStock": true,
      "category": "dairy",
      "attributes": { "brand": "Простоквашино", "fatPercent": "2.5" }
    }
  ]
}

Локально: http://localhost:3100/merchant/catalog/upsert. Скрипт пилота в репозитории: node scripts/pilot-catalog.mjs с env MERCHANT_KEY и STORE_ID.

replaceMissing: true — товары, которых нет в этой пачке, помечаются «нет в наличии», не удаляются.

Проверка: GET {API}/merchant/catalog/products с тем же Bearer — или таблица в /business.

2. Принять заказ

AgentPay шлёт POST на ваш webhook URL:

POST https://shop.example.ru/hooks/agentpay
Content-Type: application/json
X-AgentPay-Signature: <hmac-sha256 hex тела, секрет магазина>
{
  "schemaVersion": 1,
  "event": "order.created",
  "order": {
    "externalId": "uuid-покупки-agentpay",
    "storeId": "uuid-магазина",
    "currency": "coins",
    "totalAmount": 89,
    "items": [
      { "sku": "milk-25-1l", "name": "Молоко 2.5% 1л", "quantity": 1, "unitPrice": 89 }
    ]
  }
}

Ответьте 2xx и JSON { "ok": true, "externalOrderId": "ваш-номер-заказа" }. Иначе AgentPay повторит запрос и может вернуть коины покупателю.

3. Вернуть статус

POST {API}/merchant/orders/{uuid-покупки}/status
Authorization: Bearer mk_…
{
  "status": "confirmed",
  "externalOrderId": "INS-10045",
  "message": "Собран"
}

Статусы: submitted | confirmed | fulfilled | cancelled | failed.

Обязательные поля карточки

id, title, price, currency, imageUrls (можно пустой массив), inStock. SKU настоятельно рекомендуется — по нему собирается заказ.

OpenAPI: в репозитории docs/b2b/openapi-merchant.yaml. Поддержка: help@agentpay.shop. Все платформы.