[msPromoCode2] Кейс. Генерация промо-кода в письме на следующий заказ


Не так давно в документации к msPromoCode2 появился интересный кейс, при помощи которого можно поднять процент повторных продаж на сайте. Работает так:

  1. Клиент оплачивает заказ,
  2. Статус заказа меняется на «Оплачено»,
  3. В письме ему приходит промо-код на следующий заказ, который действителен в течение месяца.
Дублировать код решения здесь не буду. Проходите, смотрите, внедряйте.
Павел Гвоздь
06 сентября 2020, 08:50
modx.pro
3
888
+11
Поблагодарить автора Отправить деньги

Комментарии: 5

Harry
16 августа 2021, 22:02
0
Программная генерация почему-то никак не реагирует на параметр allcart.
Все параметры задаются правильно, а вот allcart чекбокс никак не выбирается.
Пробовал и allcart => 1 и allcart=>true
    Павел Гвоздь
    22 августа 2021, 04:40
    0
    Пример кода дайте.
      Harry
      23 августа 2021, 18:39
      0
      извиняюсь за долгий ответ:
      $mspc2 = $modx->getService('mspromocode2', 'msPromoCode2',
              MODX_CORE_PATH . 'components/mspromocode2/model/mspromocode2/');
              $mspc2->initialize($modx->context->key);
              $manager = $mspc2->getManager();
              
              // Формат промо-кода в виде regex-like синтаксиса
              $format = '[a-zA-Z0-9]{12}';
              $permitted_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
              // Output: 54esmdr0qf
              $couponCode = substr(str_shuffle($permitted_chars), 0, 10);
              
              // Параметры промо-кода
              $data = [
                  // Основное
                  'code' => $couponCode,
                  'list' => 'default', // Поле "Список" для промо-кода
                  'count' => 1, // Сколько раз можно применить генерируемый промо-код
                  'discount' => $mspcDiscount, // Размер скидки для генерируемого промо-кода
                  'description' => $mspcDescription, // Описание промо-кода
                  'allcart' => 1,
                  // Конфиг
                  'showinfo' => true, // Показывать предупреждения
                  'oneunit' => false, // На одну единицу товара
                  'onlycart' => true, // Только в корзине
                  'unsetifnull' => false, // Не применять без скидки
                  'unsetifnull_msg' => '', // Текст при отмене
                  'oldprice' => false, // Без старой цены
              
                  // Время действия
                  // 'lifetime' => 60 * 20, // В секундах
                  // или
                  // 'startedon' => '', // Начало действия, timestamp
                  // 'stoppedon' => '', // Конец действия, timestamp
              ];        
              //
              $result = $manager->generateCoupon($format,$data);
        Павел Гвоздь
        24 августа 2021, 04:38
        +1
        Поправил в 1.1.19-beta.
          Harry
          24 августа 2021, 14:55
          0
          Благодарю, работает
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    5