Плагины оплаты используются как в лицевой части, так  и в  админке. Они должны быть созданы как классы, производные от базового класса vmPaymentPlugin:

class plgVmPayment<myPlugin> extends vmPaymentPlugin {
    function plgVmPayment<myPlugin>(&$subject, $config) {
        $this->_pelement = basename(__FILE__, '.php');    // Обязательно!
        $this->_createTable();                // Обязательно, см. ниже
        parent::__construct($subject, $config);
    }
}

Ниже приведен список  событий и описание в какой момент они вызываются.

plgVmOnSelectPayment () - Это событие генерируется в процессе оформления заказа. Оно позволяет покупателю,  выбрать один из доступных способов оплаты. Оно  показывает переключатель (name: paym_id), для выбора способа оплаты. Другая информация (например, информации о кредитных картах) также может быть выбрана в зависимости от плагина.

Возвращает:
Он должен вернуть код для отображения формы (радио кнопка и необязательные дополнительные варианты выбора).

Параметры:

    (Объект VirtueMartCart) Объект корзина.
    (Целое, по умолчанию 0) ID Идентификаторы уже выбранных  способов оплаты, если таковые имеются.


plgVmOnPaymentSelectCheck () - Это событие генерируется после выбора способа оплаты. Оно может быть использовано для сохранения дополнительной информации оплаты в корзине.

Возвращает:
Плагины, которые не были выбраны должны вернуть NULL, в противном случае возвращается  True или False в случае  успеха или неудачи.

Параметры:

    (Объект VirtueMartCart) Объект корзина

plgVmOnCheckoutCheckPaymentData () - Это событие генерируется в процессе оформления заказа. Он может быть использован для проверки платежных данных введенных пользователем.

Возвращает:
Плагины, которые не были выбраны должны вернуть NULL, в противном случае возвращается  True или False в случае  успеха или неудачи.

Параметры:
   Нет.

plgVmOnConfirmedOrderStorePaymentData () - Это событие генерируется после того как платеж был обработан, он сохраняет данные специфичные для данного  метода  платежа.
Все плагины должны переопределить этот метод.

Возвращает:
Если плагин на самом деле не выполняется (не выбран способ оплаты), этот метод должен вернуть NULL
Если этот плагин выполняется, он должен вернуть код состояния чтобы, усстановить порядок. Он вызывается для обновления запасов, в случае необходимости.

Параметры:

    (Целое) Номер заказа на начало обработки
    (объект) Данные корзины
    (Массив) Информация цен для этого заказа


plgVmOnShowOrderPaymentBE () - этот метод срабатывает при показе деталей заказа в админке. Он отображает конкретные данные метод платежа.
Все плагины должны переопределить этот метод.

Возвращает:
Null для способов оплаты, которые не были выбраны, текст (HTML) в противном случае.

Параметры:

    (Целое) идентификатор заказа
    (Целое) Способ оплаты используемый для этого заказа

plgVmOnCancelPayment () - Это событие вызывается каждый раз, когда статус заказа изменяется на Отменен. Оно может быть использовано, чтобы вернуть заказ в исходное состояние  и т.д.
При переопределении этого метода  тело должно начинаться с этого кода:
$_paymethodID = $this->getPaymentMethodForOrder($_orderID);
if (!$this->selectedThisMethod($this->_pelement, $_paymethodID)) {
    return;
}

Параметры:

     (Целое) идентификатор заказа
    (Символ) Предыдущий статус заказа
    (Символ) Новый статус заказа

plgVmOnShipOrderPayment () - Это событие генерируется, когда статус заказа изменяется на Доставляется. Он может быть использован для подтверждения или получения платежа
При переопределении этого метода  тело должно начинаться с этого кода:
$_paymethodID = $this->getPaymentMethodForOrder($_orderID);
if (!$this->selectedThisMethod($this->_pelement, $_paymethodID)) {
    return;
}

Возвращает:
True в случае успешного завершения, false  в случае возникновения ошибки, Null, если этот плагин не был активирован.

Параметры:

    (Целое) ID заказа.


plgVmOnPaymentNotification () - Это событие генерируется после получения асинхронного оповещения о платеже. Он может быть использован для сохранения  специфических данных платежа.

Параметры:

    (Целое число) pElement

plgVmOnPaymentResponseReceived () - Это событие вызывается после завершения приема асинхронного ответа оплаты

Параметры:

    (Целое число) pElement

Другие вспомогательные функции, унаследованные от базового класса:

_CreateTable () - этот метод используется для создания и поддержания специфических таблиц  базы данных плагина .
Это должны быть реализованы повторно всеми плагинами.
Пример:

$_scheme = DbScheme::get_instance();
$_scheme->create_scheme('#__vm_order_payment_'.$this->_pelement);
$_schemeCols = array(
     'id' => array (
             'type' => 'int'
            ,'length' => 11
            ,'auto_inc' => true
            ,'null' => false
    )
    ,'order_id' => array (
             'type' => 'int'
            ,'length' => 11
            ,'null' => false
    )
    ,'payment_method_id' => array (
             'type' => 'text'
            ,'null' => false
    )
);
$_schemeIdx = array(
     'idx_order_payment' => array(
             'columns' => array ('order_id')
            ,'primary' => false
            ,'unique' => false
            ,'type' => null
    )
);
$_scheme->define_scheme($_schemeCols);
$_scheme->define_index($_schemeIdx);
if (!$_scheme->scheme()) {
    JError::raiseWarning(500, $_scheme->get_db_error());
}
$_scheme->reset();

getPaymentMethodForOrder () - Получить ID оплаты заказа  для  заданного номера заказа.

Возвращает:
ID способа оплаты, или -1, когда не найдено.

Параметры:

    (Целое) идентификатор заказа.

getThisMethodName () - Получить имя способа оплаты.
Этот метод не может быть переопределен.

Возвращает:
Имя метода оплаты.

Параметры:

    (Целое) способ оплаты ID.

selectedThisMethod () - Этот метод проверяет, соответствует ли выбранный способ оплаты текущему плагину.

Возвращает:
True, если вызывающий плагин имеет данную платежную ID, иначе False.

Параметры:

    (Строка) Название элемента, взятый из bvtyb файла плагина.
    (Целое) ID способа оплаты.

writePaymentData () - этот метод записывает все специфические данные плагина оплаты в таблицы плагина.


Возвращает:
True, если вызывающий плагин имеет данную платежную ID, иначе False.

Параметры:

    (Массив) индексированный массив в формате 'column_name' => 'значение'
    (Строка) Имя таблицы