Генерация сертификатов

Для автоматического создания сертификатов доступно 3 хелпера:

  • {shopGiftcertificatesPluginHelper::generateCertificate($params)} - возвращает массив с данными созданного сертификата. В дальнейшем вы должны самостоятельно обработать эти данные.
  • {shopGiftcertificatesPluginHelper::generateCertificateTemplate($params)} - возвращает HTML-код готового сертификата (шаблон).
  • {shopGiftcertificatesPluginHelper::generateOneCertificate($params, $validation_types, $return_template)} - один раз создает сертификат в зависимости от проверок. Возвращает либо массив данных, либо шаблон. Прочитайте об особенностях работы данного хелпера.

Первые 2 хелпера создают сертификаты при каждом вызове.

Параметры хелперов

Для того чтобы сертификат был сгенерирован, необходимо передать в хелпер корректные параметры.

Рассмотрим массив $params:

/**
 * Данные сертификата, который необходимо создать
 *
 * array['to'] string Поле "Кому"
 * array['from'] string Поле "От"
 * array['message'] string Поле "Сообщение"
 * array['amount'] float Поле "Сумма"
 * array['currency'] string Поле с валютой
 * array['send'] string Поле "Метод передачи сертификата". Доступные значения: email, post, user, not 
 * array['email'] string Поле "Email". Необходимо, если параметр send = email или происходит проверка email-адреса
 * array['post'] array Массив данных с адресом доставки. Необходимо, если параметр send = post
 * array['post']['country'] string Страна в формате iso3letter
 * array['post']['region'] int ID региона
 * array['post']['city'] int Название города
 * array['post']['street'] int Поле для ввода адреса
 * array['post']['postcode'] int Индекс
 * array['post']['phone'] string Телефон
 * array['contact_id'] int ID контакта, которому предназначается сертификат. Необходимо, если параметр send = user или происходит проверка контакта
 * array['state_id'] int ID статуса сертификата
 * array['use_limitations'] int Использовать ограничение или нет. Доступные значения: 1 или 0
 * array['limitations'] array Массив с информацией об ограничениях
 * array['limitations']['expired'] string Дата истечения сертификата в формате: Y-m-d
 * array['limitations']['lifetime'] int Срок действия в днях.
 * array['limitations']['max'] float Максимальная сумма, которая может быть потрачена в %. Указывайте значение от 0 до 100
 * array['limitations']['min'] array Массив в информацией о минимальной сумме заказа
 * array['limitations']['min']['value'] float Минимальная сумма заказа
 * array['limitations']['min']['currency'] string Валюта минимальной суммы заказа
 * array['usage'] array Массив с данными о количестве использований сертификата
 * array['usage']['type'] string Тип сертификата: одноразовый (disposable) или многоразовый (multiple). Доступные значения: disposable, multiple
 * array['send_notification'] int Отправлять уведомление покупателю или нет. Доступные значения: 1 или 0
 * array['default_template'] string Символьный код шаблона по умолчанию. Например, template1 или template3
 * array['template_type'] string Тип шаблона сертификата. Доступные значения: default или custom
 *                               Если указан custom, это значит, что будет использован шаблон, который передан в параметре template (см. ниже)
 * array['template'] string Индивидуальный шаблон сертификата. Если существует данный параметр, тогда параметр template_type автоматически будет custom.
 * array['free_products'] array Массив информации о бесплатных товарах
 * array['free_products']['products'][] array Массив с ID товаров
 * array['free_products']['skus'][] array Массив с ID артикулов товаров
 *
 * @param array $params (Параметры смотрите выше)
 * @return array
 **/
$params = [
    'to' => 'Любимому покупателю', 
    'from' => 'Лучшего магазина', 
    'message' => '', 
    'amount' => '500', 
    'currency' => 'RUB', 
    'send' => 'email', 
    'email' => 'test@test.com',
    'post' => [
        'country' => 'rus',
        'region' => '77',
        'city' => 'Москва',
        'street' => 'улица, дом, квартира',
        'postcode' => '353535',
        'phone' => '89999999999'
    ],
    'contact_id' => 5,
    'state_id' => 5,
    'use_limitations' => 1,
    'limitations' => [
        'expired' => '2040-10-28',
        'lifetime' => 30,
        'max' => 100,
        'min' => [
            'value' => 2000,    
            'currency' => 'RUB'
        ]
    ],
    'usage' => [
        'type' => 'disposable'
    ],
    'send_notification' => 0,
    'default_template' => 'template3',
    'template_type' => 'default',
    'free_products' => [
        'products' => [25, 5],
        'skus' => [345, 415]
    ]

Рассмотрим массив $validation_types:

/**
 * Виды проверок, чтобы понять, стоит ли создавать сертификат или нет 
 *
 * @param string[] $validation_types - По умолчанию используется значение 'user'
 *    Доступные значения:
 *       'user' - Проверяет, авторизован ли пользователь, и был ли ему когда-либо сгенерирован сертификат через данный хелпер
 *       'session' - Проверяет, есть ли у пользователя в сессии специальная запись о том, что был сгенерирован сертификат через данный хелпер
 *       'cookie' - Проверяет, есть ли у пользователя в куке специальная запись о том, что был сгенерирован сертификат через данный хелпер
 *       'ip' - Проверяет, был ли сгенерирован сертификат для IP через данный хелпер
 * @return array
 **/
$validation_types = ['user']

Рассмотрим параметр $return_template:

/**
 * Вернуть массив данных или шаблон сертификата
 *
 * @param bool $return_template - По умолчанию используется значение false
 *    Доступные значения:
 *        true - Возвращает шаблон сертификата в формате HTML
 *        false - Возвращает массив данных сертификата
 * @return bool
 **/
$return_template = false;

Примеры

Если вы не можете разобраться, откуда у state_id значение 19, прочитайте статью про статусы.

Простой сертификат со скидкой 700 р.

{shopGiftcertificatesPluginHelper::generateCertificateTemplate([
    'amount' => '700',
    'currency' => 'RUB',
    'state_id' => 19
])}

Сертификат пользователя

{shopGiftcertificatesPluginHelper::generateCertificateTemplate([
    'amount' => '700',
    'currency' => 'RUB',
    'state_id' => 19,
    'send' => 'user',
    'contact_id' => $wa->user()->getId()
])}

Будет сгенерирован только для авторизованного пользователя.

Сертификат по email

{shopGiftcertificatesPluginHelper::generateCertificateTemplate([
    'amount' => '700',
    'currency' => 'RUB',
    'state_id' => 19,
    'send' => 'email',
    'email' => $wa->user()->get('email', 'default')
])}

Будет прикреплен к email адресу.

Сертификат с ограничением 10 дней и 5000 руб.

Получим массив данных и выведем только код сертификата.

{$certificate = shopGiftcertificatesPluginHelper::generateCertificate([
    'amount' => '700',
    'currency' => 'RUB',
    'state_id' => 19,
    'use_limitations' => 1,
    'limitations' => [
        'lifetime' => 10,
        'min' => [
            'value' => 5000,
            'currency' => 'RUB'
        ]
    ]
])}
{if $certificate}
    <p>Для активации сертификата введите код на странице оформления: <b>{$certificate.code}</b></p>
{/if}

Бесплатные товары с минимальной суммой заказа 10000 руб на 10 дней

{shopGiftcertificatesPluginHelper::generateCertificateTemplate([
    'state_id' => 19,
    'use_limitations' => 1,
    'limitations' => [
        'lifetime' => 10,
        'min' => [
            'value' => 10000,
            'currency' => 'RUB'
        ]
    ],
    'free_products' => [
        'products' => [25, 5],
        'skus' => [30, 45, 52]
    ]
])}

В данном примере прикреплено 5 бесплатных товаров: 2 товара, 3 артикула.

Сертификат, который будет сгенерирован только 1 раз для пользователя

{shopGiftcertificatesPluginHelper::generateOneCertificate([
    'amount' => '700',
    'currency' => 'RUB',
    'contact_id' => $wa->user()->getId(),
    'state_id' => 19
], ['user'], true)}

Сертификат, который будет сгенерирован только 1 раз. Проверка сессии или куки

Получим массив данных и выведем только код сертификата.

{$certificate = shopGiftcertificatesPluginHelper::generateOneCertificate([
    'amount' => '700',
    'currency' => 'RUB',
    'state_id' => 19
], ['session', 'cookie'])}
{if $certificate}
    <p>Для активации сертификата введите код на странице оформления: <b>{$certificate.code}</b></p>
{/if}

Сертификат со своим кодом

Создадим сертификат с кодом "Распродажа года!".

{shopGiftcertificatesPluginHelper::generateOneCertificate([
    'amount' => '700',
    'code' => 'Распродажа года!',
    'currency' => 'RUB',
    'contact_id' => $wa->user()->getId(),
    'state_id' => 19
], ['user'], true)}

Где это можно использовать?

Сертификаты можно генерировать в уведомлениях, рассылках, после успешного оформления заказа и тд. Подробнее читайте в статье примеры генерации сертификатов.