Онлайн-руководство разработчика NetCat
Модуль «Поиск по сайту» 12.2.1Начало работы с модулем 12.2.2Язык запросов 12.2.3Способы хранения индекса 12.2.4Интерфейс модуля в панели управления сайтом 12.2.5Области индексирования 12.2.6Области HTML-страниц 12.2.7Области поиска на сайте 12.2.8Индексирование по расписанию, запуск индексирования в фоновом режиме 12.2.9Правила индексирования 12.2.10Постановка задачи переиндексирования в очередь 12.2.11Интеграция модуля в макеты дизайна сайта 12.2.12Простая форма поиска 12.2.13Расширенная форма поиска 12.2.14Вывод результатов поиска 12.2.15Стилизация списка подсказок 12.2.16Расширенные настройки 12.2.17Разработка расширений модуля 12.2.18Обзор архитектуры модуля 12.2.19Обработчики документов различных типов 12.2.20Текстовые фильтры 12.2.21Анализаторы текста 12.2.22Корректировщики запросов 12.2.23Подключение других поисковых систем 12.2.24Решение проблем с поиском 12.2.25Решение проблем с индексированием 12.2.26Справочник API
Модуль «Интернет-магазин» 12.8.1Настройка модуля 12.8.2Настройка интернет-магазина 12.8.3Валюты 12.8.4Цены для разных групп пользователей 12.8.5Минимальная цена 12.8.6Способы доставки 12.8.7Способы оплаты 12.8.8Настройка шаблонов писем 12.8.9Бланки 12.8.10Скидки 12.8.11Сиюминутные скидки 12.8.12Купоны 12.8.13Редактирование заказов 12.8.14Статистика 12.8.15Компоненты товаров 12.8.16Варианты товаров 12.8.17Коллекции объектов 12.8.18Фильтр товаров 12.8.19Списки товаров 12.8.20Корзина 12.8.21Заказ 12.8.22Экспорт товаров в маркетплейсы 12.8.23Выгрузка предложений в Яндекс.Маркет 12.8.24Выгрузка предложений в Товары@Mail.Ru 12.8.25Выгрузка товаров в Google Merchant 12.8.26Обмен данными (Netcat 5.9) 12.8.27Обмен данными с 1С 12.8.28Обмен данными с 1С 8-ой версии 12.8.29Обмен данными с 1С 7-ой версии 12.8.30Обмен данными с сервисом МойСклад 12.8.31Виджеты интернет-магазина 12.8.32Классы расчёта доставки 12.8.33Интернет-магазин <5.3 12.8.34Переход с прежней версии модуля 12.8.35Справочник API

Использование без интернет-магазина

Помимо использования модуля приёма платежей совместно с модулем интернет-магазина, вы также можете использовать его отдельно, например, для пополнения баланса пользователя сайта. Разберём подобный пример.

Создайте раздел «Личный счёт» в кабинете пользователя. Воспользуемся функционалом ведения личного счёта, который уже есть в модуле «Личный кабинет». Добавьте к созданному разделу инфоблок «Личный счёт».

Модифицируем компонент. Добавим в него форму, с помощью которой пользователь сможет выбирать платёжную систему и вводить сумму пополнения. Примерный вид отображения формы:

Код формы может выглядеть так:

<? if (!$payment_system_name):?>
<form action="" method="get">
    <input type="hidden" name="order_id" value="<?= time()?>">
    <label>Платёжной системой: 
    <select name="payment_system_name">
        <option value="nc_payment_system_sberbank">Квитанция Сбербанка</option>
        <option value="nc_payment_system_qiwi">QIWI</option>
        <option value="nc_payment_system_webmoney">WebMoney</option>
        <option value="nc_payment_system_paypal">PayPal</option>
    </select></label>
    <br><br>
    <label>на сумму: 
    <input name="amount" value="" placeholder="100"> руб.</label>
    <br><br>
    <input type="submit" value="Продолжить">
</form>
<? endif; ?>

В ней мы передаём: номер заказа, платёжную систему и сумму. При нажатии на кнопку происходит перезагрузка страницы и данные отправляются в объект инвойса:

$invoice = null;
$amount = (int)$amount;
if ($payment_system_name && $amount) {

echo "Пополнение на сумму $amount руб.<br><br>";

$invoice = new nc_payment_invoice(array(
    "amount"            => $amount,
    "description"       => "Пополнение счета",
    "currency"          => 'RUB',
    "customer_id"       => $AUTH_USER_ID,
    "customer_name"     => (string)$current_user['ForumName'],
    "customer_email"    => (string)$current_user['Email'],
    "customer_phone"    => (string)$current_user['Phone'],
    "order_source"      => 'auth',
    "order_id"          => $order_id,
));
$invoice->save();
}

Здесь же необходимо вызвать форму оплаты. С помощью этих двух строк будет отображена кнопка «Оплатить» открывающая окно осуществления платежа или сформированный бланк, готовый для скачивания или распечатки.

$payment_method = nc_payment_factory::create($payment_system_name);
echo $payment_method->get_request_form($invoice);

По умолчанию будет показана кнопка «Оплатить», которая открывает сайт платёжной системы в новой вкладке.
Чтобы сразу перейти на сайт платёжной системы, передайте вторым аргументом false.
Чтобы открыть сайт платёжной системы в текущей вкладке, передайте третьим аргументом false.

// сразу перейти к сайту платёжной системы в текущей вкладке:
echo $payment_method->get_request_form($invoice, false, false);

Чтобы реагировать на успешную оплату (менять статус пользователя, пополнить его счёт и т. д.) необходимо создать класс-обработчик событий. Пример такого класса приведён на странице «Обработчики событий».

Кассовые чеки

Согласно закону РФ 54-ФЗ «О применении контрольно-кассовой техники» при получении средств через платёжные системы продавец обязан выдать кассовый чек, в котором перечислены продаваемые товары и услуги, их цена и ставка НДС.

Для выдачи чеков необходимо подключить один из кассовых сервисов или использовать платёжную систему с возможностью выдачи кассовых чеков.

Для передачи информации о товарах и услугах в чек необходимо передать в счёт список позиций чека при помощи метода set_items(), затем необходимо сохранить счёт

$invoice_items = new nc_payment_invoice_item_collection();

$invoice_items->add(new nc_payment_invoice_item(array(
    'name' => 'Название первой позиции чека',
    'item_price' => 123.45, // цена за 1 единицу (с учётом скидок)
    'qty' => 2, // количество (может быть float)
    'vat_rate' => 18, // НДС в процентах (null — не облагается НДС; 0, 10 или 18)
    'source_component_id' => null, // компонент исходного товара (может быть null)
    'source_item_id' => null, // идентификатор исходного товара (может быть null)
)));

$invoice_items->add(new nc_payment_invoice_item(array(
    'name' => 'Название второй позиции чека',
    'item_price' => 6789,
    'qty' => 1.5,
    'vat_rate' => null,
)));

$invoice->set_items($invoice_items);
$invoice->save();

Чеки будут отправлены в кассовый сервис после перехода счёта в статус «оплачен».

Описание проекта