Блог разработчика 1С-Битрикс

Проверка статуса оплаты по номеру заказа в CMS Битрикс

В 1С-Битрикс статус оплаты заказа можно получить с помощью модуля работы с интернет-магазином и API. Для проверки статуса оплаты по номеру заказа используется класс \Bitrix\Sale\Order.

Как в CMS Битриксе проверить статус оплаты по номеру заказа через API

Ниже приведен пример кода, который можно использовать для проверки статуса оплаты заказа:

<?php
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");

use Bitrix\Main\Loader;
use Bitrix\Sale\Order;

// Подключаем необходимые модули
if (!Loader::includeModule("sale")) {
    die("Модуль Интернет-магазин не установлен");
}

// Получаем ID заказа (номер заказа)
$orderId = 123; // Укажите нужный номер заказа

// Загружаем заказ
$order = Order::load($orderId);

if (!$order) {
    die("Заказ с ID $orderId не найден");
}

// Получаем статус оплаты
$isPaid = $order->isPaid();

if ($isPaid) {
    echo "Заказ №$orderId оплачен.";
} else {
    echo "Заказ №$orderId не оплачен.";
}
?>

Пояснение обработки:

  1. Подключение ядра Битрикс: Выполняется в начале с помощью include prolog_before.php, чтобы загрузить все необходимые классы и функции системы.
  2. Подключение модуля "sale": Это необходимо, так как именно модуль интернет-магазина отвечает за работу с заказами.
  3. Загрузка заказа: С помощью метода Order::load() загружаем объект заказа по его ID.
  4. Проверка статуса оплаты: Метод $order->isPaid() возвращает true, если заказ оплачен, и false, если нет.

Важные моменты:

  • Если заказ не найден (например, по указанному номеру), метод Order::load() вернёт null. Это нужно правильно обработать в коде.
  • Учитывайте, что номер заказа (в видимом интерфейсе) может не совпадать с его внутренним идентификатором в базе данных. Если используется кастомная нумерация заказа, уточните формат хранения.

Если вы хотите дополнить проверку данными о платёже, используйте коллекцию платежей, связанную с заказом:

$paymentCollection = $order->getPaymentCollection();

foreach ($paymentCollection as $payment) {
    if ($payment->isPaid()) {
        echo "Платёж с ID {$payment->getId()} по заказу №$orderId проведён.";
    } else {
        echo "Платёж с ID {$payment->getId()} по заказу №$orderId не проведён.";
    }
}

Этот подход полезен, если у вас может быть несколько платежей, привязанных к одному заказу.

Пример расширенного ответа через REST API:

Если нужен доступ к статусу оплаты через HTTP-запрос, нужно настроить кастомный REST-обработчик (/bitrix/services/rest/ или отдельный PHP-скрипт) и вернуть данные, например, в формате JSON.

Теги: проверка статуса оплаты, 1С-Битрикс, CMS Битрикс, статус оплаты заказа, номер заказа, обработка заказов, API Битрикс, e-commerce, веб-разработка, PHP примеры.


Валерий Макеев
09.09.2025 13:46
Этот код использует прямое обращение к данным заказа через ORM Bitrix и проверяет статус оплаты через поле 'PAYED', а также показывает дополнительную информацию о способе оплаты и дате обновления заказа.
Код
<?php
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");

use Bitrix\Main\Loader;
use Bitrix\Sale\Internals\OrderTable;

if (!Loader::includeModule("sale")) die("Модуль sale не установлен");

// Получаем заказ по ID через ORM Bitrix
$order = OrderTable::getById(1)->fetch();

if ($order) {
    // Проверяем статус оплаты через прямое обращение к полю базы данных
    $isPaid = $order['PAYED'] === 'Y' ? "оплачен" : "не оплачен";
    $orderNumber = $order['ACCOUNT_NUMBER'];
    echo "Статус заказа №{$orderNumber}: {$isPaid} (последнее обновление: " . $order['DATE_UPDATE'] . ")";
    
    // Дополнительная информация о способе оплаты
    if ($order['PAY_SYSTEM_ID']) {
        $paySystem = \Bitrix\Sale\PaySystem\Manager::getById($order['PAY_SYSTEM_ID']);
        echo "<br>Способ оплаты: " . $paySystem['NAME'];
    }
} else {
    echo "Заказ с ID 1 не найден";
}
?>

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Техническая поддержка

сайтов на CMS 1C-Битрикс

от 20 000 рублей/месяц
Оптимизация производительности действующих интернет-проектов, наполнение и сопровождение, полная техническая поддержка и продвижение в поисковых сетях.

* стоимость зависит от объема и сложности выполняемых работ

Интернет-магазин на готовом решении

от 7 дней

от 40 000 рублей
запуск сайта в максимально короткие сроки

* указана минимальная стоимость. Стоимость выбранной лицензии «1С-Битрикс» оплачивается отдельно.

Участие в проекте

привлечение в проект на part-time основе

от 30 000 рублей / неделя

Возможно участие в проекте на ежедневной основе, как разработчика. Занятость - до 20 часов в неделю
Минимальный срок - одна неделя.

* сумма фиксированная