Для автоматического создания сертификатов доступно 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)}
Где это можно использовать?
Сертификаты можно генерировать в уведомлениях, рассылках, после успешного оформления заказа и тд. Подробнее читайте в статье примеры генерации сертификатов.