Интеграция с Mercuryo

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1306 услуг
Интеграция с Mercuryo
Простой
от 1 дня до 3 дней
Часто задаваемые вопросы

Направления блокчейн-разработки

Этапы блокчейн-разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1288
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    902
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1122
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    860

Интеграция с Mercuryo

Mercuryo — on/off-ramp провайдер с широким покрытием методов оплаты для СНГ и Восточной Европы: карты Visa/Mastercard, банковские переводы, а также локальные методы. Поддерживает рублёвые платежи (до введения санкций), гривна UAH, казахстанские тенге KZT.

Widget интеграция

// Mercuryo Widget v4
const mercuryoWidget = {
  widgetId: process.env.MERCURYO_WIDGET_ID,
  type: 'buy',  // 'buy' или 'sell'
  currency: 'BTC',
  fiatCurrency: 'EUR',
  fiatAmount: '100',
  address: walletAddress,
  signature: await getSignedAddress(walletAddress),  // серверная подпись
  onStatusChange: (data) => {
    if (data.status === 'paid') {
      handlePaymentComplete(data.transactionId);
    }
  },
};

// Встройка через URL
const params = new URLSearchParams(mercuryoWidget);
const widgetUrl = `https://exchange.mercuryo.io/?${params}`;
window.open(widgetUrl, '_blank');

Подпись адреса на сервере

import hmac, hashlib

def sign_wallet_address(address: str, secret: str) -> str:
    """Mercuryo требует подпись адреса для защиты от подмены"""
    return hmac.new(
        secret.encode(),
        address.encode(),
        hashlib.sha512
    ).hexdigest()

REST API

import httpx

class MercuryoClient:
    BASE_URL = "https://api.mercuryo.io/v1.6"

    def __init__(self, api_key: str, secret: str):
        self.api_key = api_key
        self.secret = secret

    async def get_rates(self, from_currency: str, to_currency: str,
                         amount: float) -> dict:
        async with httpx.AsyncClient() as client:
            resp = await client.get(
                f"{self.BASE_URL}/public/rates",
                params={
                    "from": from_currency,
                    "to": to_currency,
                    "amount": amount,
                }
            )
        return resp.json()

    async def get_transaction(self, tx_id: str) -> dict:
        async with httpx.AsyncClient() as client:
            resp = await client.get(
                f"{self.BASE_URL}/sdk-partner/transactions/{tx_id}",
                headers={"Sdk-Partner-Token": self.api_key}
            )
        return resp.json()["data"]

Callback обработка

@app.post("/callbacks/mercuryo")
async def mercuryo_callback(request: Request):
    data = await request.json()

    # Проверка подписи
    signature = request.headers.get("X-Mercuryo-Signature")
    body = await request.body()
    expected = hashlib.sha512(body + MERCURYO_SECRET.encode()).hexdigest()

    if signature != expected:
        raise HTTPException(403)

    status = data["status"]
    if status == "paid":
        await process_crypto_delivery(data["id"], data["amount"], data["currency"])
    elif status == "failed":
        await handle_failed_transaction(data["id"])

Mercuryo комиссии: 3.95% для карт, 2.95% для банковских переводов. Для рынков СНГ и Восточной Европы — один из немногих провайдеров с реальным покрытием локальных методов оплаты. Поддерживает 150+ криптовалют, 30+ фиатных валют.