有关如何限制特定客户列表使用的优惠券代码的任何想法?
背景:我的公司正在宣传,我们已经将折扣代码通过电子邮件发送给2000多名非常有价值的客户.我们不希望所有客户都能够使用代码,只需使用我们列表中的代码.问题是优惠券代码已经发布在一些流行的论坛和其他地方,所以除非我们做一些事情来阻止它,否则我们会从那些不打算获取代码的人那里得到一堆订单.
我正在尝试做一些紧急伤害控制 - 我想我将不得不在某处进行代码修改,但我仍然环顾四周,无法找出最佳位置.我有一个文件中的客户列表.
您可以创建一个观察者观察salesrule_validator_process(当应用购物车规则时触发此事件),这将需要检查两件事:
应用的规则是您要限制到客户列表的规则:
$ruleId = $observer->getEvent()->getRule()->getRuleId();
Run Code Online (Sandbox Code Playgroud)如果满足第一个条件,则检查客户是否已登录,并且电子邮件是列表中的电子邮件之一:
if ($observer->getEvent()->getQuote()->getCustomer()->getEmail()) {
$customerEmail = $observer->getEvent()->getQuote()->getCustomer()->getEmail();
if ($customerEmail IS ON YOUR LIST) {
return $this;
} else {
$event = $observer->getEvent();
$result = $event->getResult();
$result->setBaseDiscountAmount(0)->setDiscountAmount(0);
} else {
$event = $observer->getEvent();
$result = $event->getResult();
$result->setBaseDiscountAmount(0)->setDiscountAmount(0);
}
Run Code Online (Sandbox Code Playgroud)你应该重构这段代码以使它干涸,而且我还没有制作一个真实的if条件,但是你得到了图片.
此外,您还必须更改"优惠券已成功应用"的消息.
告诉我你是否需要更多细节.