Онлайн-руководство разработчика NetCat
Новогодние скидки до 25%!
Подробнее
Модуль «Поиск по сайту» 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

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

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

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

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

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

<? 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();

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

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