HeyPay предоставляет два независимых интерфейса: быстрые межбанковские переводы по номеру телефона / @username (СБП) и HeyPay Мерчант — приём платежей на сайтах, в ботах и мобильных приложениях без комиссий (0%).
https://heycat.online
Перейдите в раздел Мерчант (https://heycat.online/heypay/api), укажите название сайта и создайте кассу. Вы получите:
merchant_id — публичный ID кассы (например, mch_8a1bc2).secret_key — секретный ключ для подписи запросов и проверки вебхуков.webhook_url — ваш адрес для получения уведомлений об успешной оплате.
Создаёт счёт для оплаты заказа и возвращает ссылку pay_url, на которую нужно перенаправить покупателя.
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"
}
Когда покупатель оплачивает счёт в HeyCat Wallet, наш сервер мгновенно отправляет POST-запрос на ваш webhook_url с заголовком X-HeyPay-Signature (SHA256 хеш).
{
"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 проект для интеграции в 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;
// }
?>
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.
curl -X GET https://heycat.online/api/heypay/banks
Проверяет существование получателя в банке по номеру телефона или @username и возвращает маскированное имя.
curl -X POST https://heycat.online/api/heypay/resolve \
-H "Content-Type: application/json" \
-d '{"query": "+79991234567", "bank_id": "heycat"}'
Мгновенно проводит межпользовательский или межбанковский перевод со счёта отправителя с формированием цифрового чека (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": "Возврат за кофе"
}'