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