OBMXPAY

Warning: session_name(): Session name cannot be changed after headers have already been sent in /var/www/u3537487/data/obmxpay/app/bootstrap.php on line 68

Warning: session_set_cookie_params(): Session cookie parameters cannot be changed after headers have already been sent in /var/www/u3537487/data/obmxpay/app/bootstrap.php on line 69

Warning: session_start(): Session cannot be started after headers have already been sent in /var/www/u3537487/data/obmxpay/app/bootstrap.php on line 70

OBMXPAY API v1

Базовый адрес: https://obmxpay.com/api/v1. Формат — JSON, кодировка UTF-8, суммы в рублях с копейками.

Авторизация

Каждый запрос подписывается секретным ключом из кабинета (раздел «API и вебхуки»). Заголовки:

X-API-Key:   pk_…                        публичный ключ
X-Timestamp: 1767200000                  текущее время unix, расхождение до 5 минут
X-Signature: hex(HMAC_SHA256(secret, timestamp + "." + METHOD + "." + path_with_query + "." + body))

Для GET тело пустое. path_with_query — путь запроса вместе со строкой параметров, например /api/v1/payments?status=paid.

Создать платёж

POST /api/v1/payments
{
  "amount": 1500.00,
  "currency": "RUB",
  "method": "card_tbank",          // код метода из GET /api/v1/methods
  "order_id": "ORDER-1001",        // ваш номер, уникальный
  "customer_id": "user_42",        // id клиента у вас (для лимитов)
  "customer_email": "[email protected]",      // необязательно
  "customer_ip": "203.0.113.5",    // необязательно
  "description": "Пополнение",     // необязательно
  "return_url": "https://…",       // необязательно, иначе из настроек
  "webhook_url": "https://…"       // необязательно, иначе из настроек
}

Ответ 201: объект payment с полями id, status, pay_url (страница оплаты для клиента) и requisites (реквизиты, если выводите их у себя). Ошибка — 422 с полем message.

Остальные методы

GET /api/v1/payments/{id}          статус платежа
GET /api/v1/payments?order_id=…    поиск по вашему номеру (status=, limit= до 100)
GET /api/v1/methods                доступные методы, лимиты и комиссии
GET /api/v1/balance                баланс: total, reserve, available

Статусы

created — ждём оплату · paid — оплачен · expired — время вышло · failed — провайдер отказал · canceled — отменён.

Вебхуки

При смене статуса шлём POST на ваш Webhook URL:

X-OBMXPAY-Timestamp: 1767200000
X-OBMXPAY-Signature: hex(HMAC_SHA256(secret, timestamp + "." + body))

{"event":"payment.paid","payment":{ …тот же объект payment… }}

Проверьте подпись и ответьте кодом 2xx. При ошибке повторим через 1, 5, 15, 60, 180 и 720 минут. Зачисляйте деньги клиенту только по payment.paid с верной подписью.

Пример (PHP)

$body = json_encode(['amount' => 1500, 'currency' => 'RUB', 'method' => 'card_tbank', 'order_id' => 'ORDER-1001']);
$ts   = time();
$sig  = hash_hmac('sha256', $ts . '.POST./api/v1/payments.' . $body, $secret);
$ch = curl_init('https://obmxpay.com/api/v1/payments');
curl_setopt_array($ch, [CURLOPT_POST => 1, CURLOPT_POSTFIELDS => $body, CURLOPT_RETURNTRANSFER => 1, CURLOPT_HTTPHEADER => [
  'Content-Type: application/json', 'X-API-Key: ' . $public, 'X-Timestamp: ' . $ts, 'X-Signature: ' . $sig]]);
$payment = json_decode(curl_exec($ch), true)['payment'];
header('Location: ' . $payment['pay_url']);

Проверка вебхука (PHP)

$raw = file_get_contents('php://input');
$ts  = $_SERVER['HTTP_X_OBMXPAY_TIMESTAMP'] ?? '';
$ok  = hash_equals(hash_hmac('sha256', $ts . '.' . $raw, $secret), $_SERVER['HTTP_X_OBMXPAY_SIGNATURE'] ?? '');
if (!$ok || abs(time() - (int)$ts) > 600) { http_response_code(401); exit; }
$event = json_decode($raw, true);

Вход в кабинет · Подключить проект

© 2026 OBMXPAY ·