- Генерация кода. В моем методе купонов я использую uniqid для генерации уникального промокода и отправки его на клиент по электронной почте. Вот соответствующая часть метода:
Код: Выделить всё
public function coupon(Request $request, Context $context): Response {
try {
$orderEntity = $this->loadOrder($request->request->get('salesChannelId'), $context);
$this->mailHelper->sendVoucherMail($context, $orderEntity, strtoupper(uniqid('test-')), true);
} catch (Throwable $t) {
$this->loggerHelper->logThrowable($t);
}
return new Response(null, Response::HTTP_NO_CONTENT);
}
- Присвоение кода заказу: у меня есть другой метод updatePromotionCode, который обновляет заказ сгенерированным промокодом:
Код: Выделить всё
public function updatePromotionCode(OrderEntity $orderEntity, Context $context, string $promotionCode): bool {
if ($promotionCode != '') {
try {
$customFields = [
OrderCustomFieldInstaller::CUSTOM_FIELD_PROMOTION_CODE => $promotionCode
];
return $this->updateOrder($orderEntity->getId(), $customFields, $context);
} catch (\Throwable $e) {
$this->loggerHelper->logThrowable($e);
return false;
}
} else {
$this->loggerHelper->addDirectRecord(Logger::WARNING, 'Promotion code not updated in order. Promotion code empty', ["promotionCode" => $promotionCode]);
return false;
}
}
Недавно клиент получил промокод, который уже использовался другим клиентом в заказе за август. В базе данных этот код указан как неиспользованный для нового покупателя, но в магазине в рекламных акциях, в списке кодов, используемых покупателями, отображается имя старого покупателя, который первоначально его активировал. Это поднимает несколько вопросов:
- Действительно ли плагин генерирует уникальные коды или может повторно использовать старые коды?
- Если плагин генерирует новые коды, как два разных клиента могут получить один и тот же код?
- Если плагин повторно использует старые коды, зачем ему назначать уже использованный код новому клиенту? ?
Подробнее здесь: https://stackoverflow.com/questions/791 ... -customers
Мобильная версия