⚡ HeyPay API & Merchant Docs v1.2
⚡ HeyPay: Открытый протокол СБП & Мерчант

HeyPay предоставляет два независимых интерфейса: быстрые межбанковские переводы по номеру телефона / @username (СБП) и HeyPay Мерчант — приём платежей на сайтах, в ботах и мобильных приложениях без комиссий (0%).

Базовый URL: https://heycat.online
🏪 HeyPay Мерчант (Приём платежей на сайтах)
Шаг 1. Получение ключей в Личном кабинете

Перейдите в раздел Мерчант (https://heycat.online/heypay/api), укажите название сайта и создайте кассу. Вы получите:

POST /heypay/api/invoice/create
Создание счёта

Создаёт счёт для оплаты заказа и возвращает ссылку pay_url, на которую нужно перенаправить покупателя.

Пример запроса (JSON):
curl -X POST https://heycat.online/heypay/api/invoice/create \
  -H "Content-Type: application/json" \
  -d '{
    "merchant_id": "mch_YOUR_ID",
    "secret_key": "sec_YOUR_KEY",
    "order_id": "order_12345",
    "amount": 250.00,
    "description": "Подписка на 1 месяц",
    "success_url": "https://myshop.ru/success.php"
  }'
Пример ответа:
{
  "success": true,
  "invoice_id": "inv_a9b1c2d3e4f5",
  "amount": 250.00,
  "currency": "ANL",
  "order_id": "order_12345",
  "pay_url": "https://heycat.online/heypay/pay/inv_a9b1c2d3e4f5",
  "status": "pending"
}
Шаг 2. Приём Webhook (Уведомление об оплате)

Когда покупатель оплачивает счёт в HeyCat Wallet, наш сервер мгновенно отправляет POST-запрос на ваш webhook_url с заголовком X-HeyPay-Signature (SHA256 хеш).

Тело входящего Webhook:
{
  "event": "payment.success",
  "invoice_id": "inv_a9b1c2d3e4f5",
  "merchant_id": "mch_YOUR_ID",
  "order_id": "order_12345",
  "amount": 250.0,
  "currency": "ANL",
  "status": "paid",
  "utr": "HP-9A12-B4C8-D1E2",
  "payer_username": "alex"
}
🐘 Готовый PHP SDK класс (HeyPayClient.php)

Скопируйте этот класс в ваш PHP проект для интеграции в 2 строки:

<?php
class HeyPayClient {
    private $merchantId;
    private $secretKey;
    private $apiUrl = "https://heycat.online/heypay/api";

    public function __construct($merchantId, $secretKey) {
        $this->merchantId = $merchantId;
        $this->secretKey = $secretKey;
    }

    // 1. Создать счет и получить ссылку на оплату
    public function createInvoice($orderId, $amount, $description = '', $successUrl = null) {
        $payload = [
            'merchant_id' => $this->merchantId,
            'secret_key' => $this->secretKey,
            'order_id' => (string)$orderId,
            'amount' => (float)$amount,
            'description' => $description,
            'success_url' => $successUrl
        ];
        $ch = curl_init($this->apiUrl . '/invoice/create');
        curl_setopt_array($ch, [
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => json_encode($payload),
            CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
            CURLOPT_RETURNTRANSFER => true
        ]);
        $response = curl_exec($ch);
        curl_close($ch);
        return json_decode($response, true);
    }

    // 2. Проверить подлинность входящего Webhook
    public function verifyWebhook($rawBody, $receivedSignature) {
        $data = json_decode($rawBody, true);
        if (!$data) return false;
        $expected = hash('sha256', $data['invoice_id'] . $data['order_id'] . $data['amount'] . $this->secretKey);
        return hash_equals($expected, $receivedSignature);
    }
}

// --- Пример создания платежа: ---
// $heypay = new HeyPayClient('mch_xxx', 'sec_xxx');
// $result = $heypay->createInvoice(1001, 499.00, 'Заказ в магазине', 'https://myshop.ru/success.php');
// if ($result['success']) {
//     header('Location: ' . $result['pay_url']);
//     exit;
// }
?>
🐍 Готовый Python SDK (heypay.py)
import requests
import hashlib

class HeyPayClient:
    def __init__(self, merchant_id, secret_key, api_url="https://heycat.online/heypay/api"):
        self.merchant_id = merchant_id
        self.secret_key = secret_key
        self.api_url = api_url

    def create_invoice(self, order_id, amount, description="", success_url=None):
        resp = requests.post(f"{self.api_url}/invoice/create", json={
            "merchant_id": self.merchant_id,
            "secret_key": self.secret_key,
            "order_id": str(order_id),
            "amount": float(amount),
            "description": description,
            "success_url": success_url
        })
        return resp.json()

    def verify_webhook(self, invoice_id, order_id, amount, signature):
        raw = f"{invoice_id}{order_id}{amount}{self.secret_key}"
        expected = hashlib.sha256(raw.encode()).hexdigest()
        return expected == signature

# Использование:
# client = HeyPayClient("mch_xxx", "sec_xxx")
# res = client.create_invoice(order_id="123", amount=350.0, description="Товар")
# print("Ссылка на оплату:", res["pay_url"])
⚡ HeyPay Межбанковские Переводы (СБП)
GET /api/heypay/banks
Без авторизации

Возвращает список всех зарегистрированных банков-участников клиринговой сети HeyPay.

curl -X GET https://heycat.online/api/heypay/banks
POST /api/heypay/resolve
Перед переводом

Проверяет существование получателя в банке по номеру телефона или @username и возвращает маскированное имя.

curl -X POST https://heycat.online/api/heypay/resolve \
  -H "Content-Type: application/json" \
  -d '{"query": "+79991234567", "bank_id": "heycat"}'
POST /api/heypay/transfer
Исполнение

Мгновенно проводит межпользовательский или межбанковский перевод со счёта отправителя с формированием цифрового чека (UTR).

curl -X POST https://heycat.online/api/heypay/transfer \
  -H "Content-Type: application/json" \
  -d '{
    "sender_username": "alex",
    "recipient": "+79991234567",
    "bank_id": "heycat",
    "amount": 150.00,
    "comment": "Возврат за кофе"
  }'
💳 Создать кассу мерчанта В кошелёк