Купон на повторную покупку в sms

23
Алексей,
Купон на повторную покупку в sms

На событии изменения статуса заказа, генерируем купон и отправляем его в смс.

На событии изменения статуса заказа, генерируем купон и отправляем его в смс.

\Bitrix\Main\EventManager::getInstance()->addEventHandler('sale', 'OnSaleStatusOrderChange', ['OrderEvents', 'orderStateChange']);

class OrderEvents
{
	public static function orderStateChange(\Bitrix\Main\Event $event): void
	{
		if ($order = $event->getParameter("ENTITY")) {
			// sms с купоном на повторную покупку
			if ($order->getField("STATUS_ID") === 'F') { // F - выполнен

				$coupon = \Bitrix\Sale\Internals\DiscountCouponTable::generateCoupon(true); // генерируем купон
				$result = \Bitrix\Sale\Internals\DiscountCouponTable::add([
					"DISCOUNT_ID" => "1", // ID скидки, для которой добавляется купон
					"COUPON" => $coupon,
					"TYPE" => \Bitrix\Sale\Internals\DiscountCouponTable::TYPE_ONE_ORDER, // на заказ
					"ACTIVE_TO" => \Bitrix\Main\Type\DateTime::createFromTimestamp(strtotime("+3 month")), // срок действия 3 месяца
					'MAX_USE' => 1, // одноразовый
					'DESCRIPTION' => 'Купон на повторную покупку'
				]);

				if ($result->IsSuccess()) {
					$message = 'Ваш купон на повторную покупку '.$coupon;
					// тут метод отправки смс
					// телефон можно получить так $order->getPropertyCollection()->getPhone()->getValue() 
					// или из полей пользователя, его ID можно получить так $order->getUserId()
				} else {
					// массив ошибок $result->getErrorMessages()
				}

			}
		}
	}
}

Учтите, что при данной реализации, если по какой-то причине статус "Выполнен" будет установлен повторно, то смс отправится еще раз с новым купоном.

Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.

Опубликовано 3 марта 2025
примеры d7, купон, скидки, интернет-магазин, sms
Поделиться
Комментарии
❮…❯
Авторизуйтесь чтобы получать уведомления об ответе
На событии изменения статуса заказа, генерируем купон и отправляем его в смс.