php - 创建一个随机的 Magento 优惠券

标签 php magento automation auto-generate coupon

我遇到了一些麻烦。我想要做的是,每次有人订阅我们的时事通讯时,都会在 Magento 中自动生成一个随机优惠券代码。优惠券是任何东西的 10 美元折扣,并且会有 exp。订阅后两周的日期。

所以,我正在尝试编写一个简单的脚本,当提交“订阅我们的时事通讯”表单时,该脚本将与 Magento 对话,向 Magento 询问单个随机优惠券代码,设置一些基本价格规则(10退还任何东西,每个客户使用一次,每张优惠券使用一次,从生成后两周过期)然后返回一个随机的优惠券代码(例如:WELCOME5​​798),它可以存储在一个将被传递的变量中,w/first+last通过 MailChimp API 将名称和电子邮件发送到 MailChimp。除了如何让 Mage 通过 PHP 脚本生成这样的代码然后返回所述代码(即我有我的表单并且我知道如何将值传递给 MailChimp)之外,我已经弄清楚了所有这些。

我是 Magento 的新手,所以我遇到了困难。我看过 Mage/SalesRule/Model/Coupon 中的代码,也看过一些人们解决类似问题的示例,例如:Magento - Create Unique Coupon Codes through code and mail it to the customer

但我真的不知道从哪里开始为我自己的目的做这项工作。可以直接使用一些帮助/设置。 :( 谢谢大家。

最佳答案

那么,你的问题是什么?如何根据您的要求生成优惠券?或者如何安排在模块中?

您可以使用事件 newsletter_subscriber_save_after 将自定义操作注入(inject)订阅流程。

这是根据您的需要创建优惠券的示例

<?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('Y-m-d'));
    $model->setToDate(date('Y-m-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());
    }
}

关于php - 创建一个随机的 Magento 优惠券,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12806919/

相关文章:

安装了magento扩展,然后我的网站崩溃了

具有两个条件的 C# FindElement(By...)

php - jQuery post() 到 php 页面

php - PDO 查询不显示结果?

php - Magento 中仍在使用数据库布局更新吗?

php - Magento CMS block 集合,无法按商店 ID 进行过滤 - addStoreFilter([storeid]) 不起作用

java - 使用 .net 实现 Java Swing 应用程序自动化的方法

ios - 如何在iOS模拟器上启动Appium测试?

php - 保存实体形式错误 - symfony2

php - 删除用户但仍登录后销毁 session