Биржа купонов

Редактировал(а) Роман Горячев 2024/10/23 09:28

Участники ПЛ могут выставлять свои купоны на продажу за баллы и покупать уже выставленные купоны за баллы.

Купоны на продажу заносятся в электронный каталог объявлений, который именуется Биржей купонов. Площадка Биржи купонов доступна на сайте и в мобильном приложении всем авторизованным участникам ПЛ вне зависимости от их статуса участия.

Manzana Loyalty предоставляет функционал для учета купонов и методы API для обработки таких купонов. Реализация интерфейса самой Биржи на сайте или в мобильном приложении не входит в поставку Manzana Loyalty, выполняется на стороне сайта или приложения силами разработчиков сайта или приложения. 

Для продажи купона на бирже участник выбирает купон из списка имеющихся у него активных купонов и указывает желаемую стоимость в бонусах. Информация о названии, описании и сроке действия купона передается из Manzana Online и автоматически заполняется на бирже.

При желании участник ПЛ может снять с площадки выставленный купон. В таком случае купон становится вновь доступным для использования. Ограничений на повторное размещение купона нет, кроме случаев, когда наступает срок истечения действия Купона.

Состоявшуюся сделку продавец отменить не может.

Операция покупки может быть подтверждена пользователем только в том случае, если на его бонусном счете достаточно бонусов для расчета с продавцом. Если операция покупки была подтверждена пользователем, с его бонусного счета списывается сумма бонусов, равная назначенной продавцом цене за купон и переводится на бонусный счет продавца. Проданный купон отвязывается от продавца и привязывается к покупателю, изменение сроков его действия не происходит.

Пользователь, который приобрел купон на бирже купонов, может также повторно выставить купон на биржу.

Купоны с биржи можно увидеть в интерфейсе в сущности Контакт в связанном представлении «Купоны» во вкладке «Операции продажи купона». Операции продажи отображаются только для продавца купонов.

1717773511683-276.png

Рис. Операции продажи купона в карточке Контакта

Поле «Статус» может принимать 3 значения:

  • Выставлен на продажу
  • Снят с продажи
  • Продан

Дата покупки/продажи купона отображается во вкладке Бонусы  в представлениях “Баллы начисления” и “Баллы списания” в одноименном поле “ Дата покупки/продажи купона”.

1717775044112-927.png

Рис. Поле «Дата покупки/продажи купона» в представлении Бонусы-Баллы начисления.

Здесь же добавлено новое значение в поле «Источник» - “Операции покупки/продажи купона”.

1717775187522-551.png

Рис. Значение поля «Источник» в представлении Бонусы-Баллы начисления «Операции покупки/продажи купона”

Функционал Биржи купонов реализуется с помощью методов, которые позволяют размещать купоны на продажу, просматривать доступные к покупке купоны, убирать с продажи свои еще не купленные купоны, покупать купоны, размещенные другими клиентами:

  • Метод размещения собственного купона на продажу POST Coupon/PlaceForSale для сервиса участника. В запросе передаются сессия, номер купона, партнер и цена продажи в баллах. При выполнении в ответ возвращается идентификатор купона.

Выставить на продажу можно купон только  в статусе «Новый», у которого до окончания действия купона на момент обработки запроса осталось часов больше, чем указано в настройке PrivateOffice.CouponPlaceForSale.BeforeExpiration. Если осталось меньше, чем указано в настройке, то в ответ возвращается ошибка с описанием «Купон невозможно разместить по сроку его действия». Если указанный в запросе купон не принадлежит контакту сессии или его карте, то в ответ возвращается ошибку с описанием «Купон не найден». При успешной обработке запроса биржа купонов пополняется новым купоном, доступном к покупке. Для продавца купон блокируется для дальнейшего использования.

  • Метод получения доступных к продаже купонов GET Coupon/GetAllCanBuy для сервиса участника. В запросе передаются сессия и партнер, в ответ возвращаются записи купонов доступных к покупке с добавлением цены покупки, даты размещения купона на продажу и имени разместившего. Метод возвращает данные только по купонам, у которых статус купона "Выставлен на продажу".

1719925082000-392.png

Рис. Данные контакта по купону, выставленного на продажу.

Метод дополнительно проверяет дату и сколько часов осталось до окончания действия купона, если меньше или равно значению настройки PrivateOffice.CouponPlaceForSale.BeforeExpiration,, то данные этих купонов в ответ не возвращаются. Также проверяется статус разместившего купон контакта и его карт, если контакт заблокирован или у него нет карт в статусе активная, то данные этих купонов в ответ не возвращаются.

  • Метод снятия собственного купона с продажи POST Coupon/RemoveFromSale для сервиса участника. В запросе передаются сессия, номер купона и партнер. Запрос можно выполнить только по купону, у которого в Бирже купоновстатус купона "Выставлен на продажу".  При выполнении в ответ возвращается идентификатор купона. Если запрос обработан успешно, то купону возвращается статус «Новый», в Бирже купонов статус меняется на «Снят с продажи» и проставляется дата изменения.
  • Метод покупки купона, выставленного на продажу POST Coupon/BuyFromSale для сервиса участника. В запросе передаются сессия, номер купона и партнер. Если у покупающего достаточно баллов, то они списываются. Порядок списания определяется партнерской настройкой PrivateOffice.CouponPlaceForSale.WriteoffOrder. Если на балансе клиента недостаточно баллов для списания, то возвращается ошибка с описанием «Баланса недостаточно для покупки купона».

Продавцу купона начисляется порция баллов стоимости купона. Кампания начисления, срок действия баллов в днях с момента начисления берутся из партнерских настроек

PrivateOffice.CouponPlaceForSale.Award.BonusCampaign, PrivateOffice.CouponPlaceForSale.Award.BonusValidityPeriod. В  Бирже купонов статус купона меняется на «Продан» и проставляется дата изменения. Купон привязывается к контакту клиента, который его купил и у купона восстанавливается исходный статус «Новый».

Ежедневно специальный джоб проверяет все купоны, выставленные на продажу на момент запуска, на срок действия. Если до окончания действия купона осталось часов меньше или равно значению настройки PrivateOffice.CouponPlaceForSale.BeforeExpiration, то такой купон снимается с продажи. Функционал автоматического снятия купона с продажи регулируется партнерской настройкой Loyalty.SystemJob.RemoveCouponsFromSale.TurnOn Если для партнёра данная настройка установлена в одно из значений 1, у или Y – то проверяются все купоны, выставленные на продажу для этого партнера.

Также купоны снимаются с продажи в случае, если на момент выполнения джоба, статус контакта, разместившего купон «заблокирован» или у контакта нет карт в статусе «Активная».