[PHP] Dash Payment API

  • Автор темы Автор темы reg1on
  • Дата начала Дата начала
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']);
}
?>
 
Назад
Сверху