Создание единого случайного купона Magento

У меня проблемы. То, что я хочу сделать, автоматически генерирует единый случайный код купона в Magento каждый раз, когда кто-то подписывается на наш информационный бюллетень. Купон от 10 долларов от чего угодно и будет иметь exp. дата двух недель после подписки.

Итак, я пытаюсь написать простой скрипт, который отправляется, когда отправляется форма «подписаться на нашу новостную рассылку», которая будет говорить с Magento, спросить Magento за один случайный код купона, установить несколько базовых правил цены (всего 10 баксов) , одно использование на одного клиента, одно использование на купон, истекает через две недели с момента генерации), а затем возвращает код случайного купона (например: WELCOME5798), который может быть сохранен в переменной, которая будет передана по имени w / first + last и e -mail в MailChimp через API MailChimp. Я все это понял, ИСКЛЮЧАЮ, как заставить Мага генерировать такой код через PHP-скрипт, а затем возвращать указанный код (т. Е. У меня есть моя форма, и я знаю, как передавать значения MailChimp).

Я новичок в Magento, поэтому мне тяжело. Я видел код в Mage / SalesRule / Model / Coupon, и я видел некоторые примеры людей, которые решали несколько схожие вопросы, например здесь: Magento – создавать уникальные коды купонов с помощью кода и отправлять его клиенту

Но я действительно в недоумении, где начать делать эту работу в моих собственных целях. Может использовать некоторую помощь / настройку прямо. 🙁 Спасибо, ребята.

Итак, каков ваш вопрос? Как создать купон для ваших требований? Или как организовать его в модуле?

Вы можете использовать событие newsletter_subscriber_save_after, чтобы ввести свои пользовательские действия в процесс подписки.

Вот пример создания купона в соответствии с вашими потребностями

<?php /** * Create coupon for fixed price discount * * @param int $customer_id * @param float $discount */ public function createCoupon($customer_id, $discount) { $customer = Mage::getModel('customer/customer')->load($customer_id); $customerGroupIds = Mage::getModel('customer/group')->getCollection()->getAllIds(); $websitesId = Mage::getModel('core/website')->getCollection()->getAllIds(); $customer_name = $customer->getName(); $couponCode = Mage::helper('core')->getRandomString(9); $model = Mage::getModel('salesrule/rule'); $model->setName('Discount for ' . $customer_name); $model->setDescription('Discount for ' . $customer_name); $model->setFromDate(date('Ym-d')); $model->setToDate(date('Ym-d', strtotime('+2 days'))); $model->setCouponType(2); $model->setCouponCode($couponCode); $model->setUsesPerCoupon(1); $model->setUsesPerCustomer(1); $model->setCustomerGroupIds($customerGroupIds); $model->setIsActive(1); $model->setConditionsSerialized('a:6:{s:4:\"type\";s:32:\"salesrule/rule_condition_combine\";s:9:\"attribute\";N;s:8:\"operator\";N;s:5:\"value\";s:1:\"1\";s:18:\"is_value_processed\";N;s:10:\"aggregator\";s:3:\"all\";}'); $model->setActionsSerialized('a:6:{s:4:\"type\";s:40:\"salesrule/rule_condition_product_combine\";s:9:\"attribute\";N;s:8:\"operator\";N;s:5:\"value\";s:1:\"1\";s:18:\"is_value_processed\";N;s:10:\"aggregator\";s:3:\"all\";}'); $model->setStopRulesProcessing(0); $model->setIsAdvanced(1); $model->setProductIds(''); $model->setSortOrder(1); $model->setSimpleAction('by_fixed'); $model->setDiscountAmount($discount); $model->setDiscountStep(0); $model->setSimpleFreeShipping(0); $model->setTimesUsed(0); $model->setIsRss(0); $model->setWebsiteIds($websitesId); try { $model->save(); } catch (Exception $e) { Mage::log($e->getMessage()); } }