Інтеграція обмінника з агрегаторами курсів

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1 послугУсі 1306 послуг
Інтеграція обмінника з агрегаторами курсів
Проста
~2-3 робочих дні
Часті питання
Напрямки блокчейн-розробки
Етапи блокчейн-розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1260
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1170
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1092
  • image_logo-advance_0.png
    Розробка логотипу компанії B2B Advance
    563
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    830

Інтеграція обмінника з агрегаторами курсів

Агрегатори курсів (rate aggregators) — це сервісу, які збирають котировки від безлічі обмінників та відображають найкращий курс. Інтеграції з CoinGecko, CoinMarketCap, Swapzone, Changelly Affiliate та іншими агрегаторами забезпечують трафік обміннику без прямих маркетингових затрат.

Основні агрегатори та типи інтеграцій

Swapzone / Changehero / Letsexchange

Ці агрегатори спеціалізуються саме на crypto-to-crypto обмінниках. Бізнес-модель: агрегатор показує ваш курс серед інших, користувач натискає "Exchange" — редирект до вас. Агрегатор отримує CPA або % від трансакції.

Інтеграція через API:

class SwapzoneProvider:
    """Надаємо Swapzone дані про наші курси"""

    async def handle_rate_request(self, request: RateRequest) -> RateResponse:
        """Swapzone запитує наш курс для пари"""
        rate = await self.calculator.get_rate(
            from_currency=request.from_currency,
            to_currency=request.to_currency,
            from_amount=request.amount
        )

        return RateResponse(
            from_amount=str(request.amount),
            to_amount=str(rate.to_amount),
            rate=str(rate.rate),
            min_amount=str(self.get_min_amount(request.from_currency)),
            max_amount=str(self.get_max_amount(request.from_currency)),
            estimated_time_minutes=self.estimate_time(request.from_currency),
            partner_id=self.PARTNER_ID,
            partner_extra={}  # кастомні дані
        )

    async def handle_create_order(self, order_data: dict) -> CreateOrderResponse:
        """Swapzone створює обмін від імені користувача"""
        order = await self.exchange_service.create_order(
            from_currency=order_data['from'],
            to_currency=order_data['to'],
            from_amount=Decimal(order_data['amount']),
            to_address=order_data['address'],
            refund_address=order_data.get('refund_address'),
            source='swapzone'  # відстежуємо джерело
        )

        return CreateOrderResponse(
            order_id=order.id,
            deposit_address=order.deposit_address,
            deposit_amount=str(order.from_amount),
            receive_amount=str(order.to_amount)
        )

CoinGecko Exchange API

Реєстрація біржи/обмінника на CoinGecko дає органічний трафік через їхні сторінки:

class CoinGeckoExchangeAPI:
    """Endpoints які CoinGecko вимагає від листингованих обмінників"""

    async def get_tickers(self) -> list[dict]:
        """GET /api/v1/tickers — список активних торговельних пар з обсягами"""
        pairs = await self.db.get_active_pairs_with_stats()
        return [
            {
                "base": pair.base_currency,
                "target": pair.quote_currency,
                "market": {"name": self.EXCHANGE_NAME, "identifier": self.EXCHANGE_ID},
                "last": str(pair.last_rate),
                "volume": str(pair.volume_24h),
                "bid_ask_spread_percentage": str(pair.spread_percent),
                "timestamp": datetime.utcnow().isoformat() + "Z",
                "is_anomaly": False,
                "is_stale": pair.last_updated < datetime.utcnow() - timedelta(minutes=5)
            }
            for pair in pairs
        ]

Webhook зворотних сповіщень

Агрегатори часто вимагають webhook для оновлення статусу трансакції:

@app.post("/webhooks/swapzone/status")
async def swapzone_status_webhook(data: dict):
    """Swapzone сповіщує нас про дії користувача"""
    order_id = data['order_id']
    event = data['event']  # 'payment_sent', 'cancelled', etc.

    order = await db.get_order(order_id)
    if event == 'payment_sent':
        logger.info(f"Swapzone confirmed payment sent for order {order_id}")
    elif event == 'cancelled':
        await exchange_service.cancel_order(order_id)

@app.get("/webhooks/swapzone/order/{order_id}")
async def get_order_status(order_id: str):
    """Swapzone запитує статус нашого замовлення"""
    order = await db.get_order(order_id)
    return {
        "status": map_status(order.status),  # 'waiting', 'confirming', 'finished', 'failed'
        "out_tx_hash": order.output_tx_hash,
        "in_tx_hash": order.input_tx_hash
    }

UTM та аналітика конверсій

Кожен агрегатор повинен бути помічений UTM-параметрами для точного обліку конверсій:

SOURCE_CONFIGS = {
    'swapzone': {'utm_source': 'swapzone', 'revenue_share': 0.40},
    'changehero': {'utm_source': 'changehero', 'revenue_share': 0.35},
    'letsexchange': {'utm_source': 'letsexchange', 'revenue_share': 0.30},
    'coingecko': {'utm_source': 'coingecko', 'revenue_share': 0.0},  # CPA модель
}

def track_conversion(order: Order, source: str):
    config = SOURCE_CONFIGS.get(source, {})
    margin = calculate_margin(order)
    partner_payout = margin * Decimal(str(config.get('revenue_share', 0)))
    db.create_affiliate_earning(source, order.id, partner_payout)

Інтеграція з 5-7 крупними агрегаторами забезпечує постійний потік трансакцій без прямих рекламних затрат. Ключова метрика: конверсія з переходу до завершеної угоди обміну. Зазвичай 15-35% — головна втрата на KYC friction та застарілому курсі до моменту платежу.