PHP:
<?php
// Dash Payment API
/**
* Создание платежа Dash
*
* @param float $amountFIAT Сумма в долларах США
* @param string $successUrl Куда перенаправить пользователя при успешной оплате
* @param string $cancelUrl Куда перенаправить при отмене или истечении времени
* @param string $webhookUrl URL для уведомлений о статусе платежа (опционально)
* @return string URL страницы оплаты
* @throws Exception если возникла ошибка
*/
function createDashPayment($amountFIAT, $successUrl, $cancelUrl, $webhookUrl = null) {
$apiUrl = 'https://pay.ongg.net';
$data = [
'amount_fiat' => (float)$amountFIAT,
'success_url' => $successUrl,
'cancel_url' => $cancelUrl,
'postback_url' => $webhookUrl
];
$options = [
'http' => [
'header' => "Content-Type: application/json\r\n",
'method' => 'POST',
'content' => json_encode($data),
'timeout' => 30
]
];
$context = stream_context_create($options);
$result = file_get_contents($apiUrl . '/create-payment', false, $context);
if ($result === false) {
throw new Exception('Не удалось подключиться к серверу оплаты');
}
$response = json_decode($result, true);
if (!isset($response['payment_url'])) {
throw new Exception('Ошибка создания платежа: ' . ($result ?: 'пустой ответ'));
}
return $response['payment_url'];
}
/**
* Обработка уведомлений от сервера оплаты
*
* @param callable $onPaymentSuccess Функция для обработки успешных платежей
* @param callable $onPaymentExpired Функция для обработки истекших платежей
* @param callable $onPaymentCancelled Функция для обработки отмененных платежей
*/
function handleDashWebhook($onPaymentSuccess = null, $onPaymentExpired = null, $onPaymentCancelled = null) {
$input = file_get_contents('php://input');
$data = json_decode($input, true);
if (empty($data) || !is_array($data)) {
http_response_code(400);
echo json_encode(['error' => 'Некорректные данные']);
return;
}
$status = $data['status'] ?? null;
$paymentId = $data['payment_id'] ?? null;
if (!$status || !$paymentId) {
http_response_code(400);
echo json_encode(['error' => 'Отсутствуют обязательные поля']);
return;
}
switch ($status) {
case 'confirmed':
if ($onPaymentSuccess) {
call_user_func($onPaymentSuccess, $data);
}
break;
case 'expired':
if ($onPaymentExpired) {
call_user_func($onPaymentExpired, $data);
}
break;
case 'cancelled':
if ($onPaymentCancelled) {
call_user_func($onPaymentCancelled, $data);
}
break;
default:
echo 'UNK STATUS';
}
http_response_code(200);
echo json_encode(['status' => 'ok']);
}
?>