платежный шлюз отправляет IPN, я обрабатываю его.
Нормально практикой - создать event на успешную оплату, и потом запускается handler, который по типу платежа - запускает обработчик - пополнение баланса, помечает заказ оплаченный или др.
или это надо сразу делать без ивента в транзакции?
Можно и через эвент. Главное чтобы самому не запутаться как это работает
есть предположение, может я неправильно мыслю, что во-первых я быстро отдаю ответ платежному шлюзу и фоном запускаю свои обработчики А второе, если чудом что не так пойдет - то я могу перезапустить эти обработчики, а если же евента не будет, то мне надо каким-то образом сформировать входящий запрос типа от платежного шлюза или как-то по другому мудрить.
Такие операции в джобах лучше проводить.
да, кстати, джоб еще вариант. Я так и не знаю когда лучше джобы, а когда эвенты.
Это разные механики. Джобы выполняют какой-то код, эвенты реагируют на события
Свои обработчики запускать фоном это нормально, если это джобы. В случае когда джобы не проводят платёж по причине, например, "он ещё не прошёл", то джоба кладётся обратно в очередь. Если количество попыток истекло, то ещё и в кроне должна быть задача, которая все незавершённые платежи должна перепроверять (ставить джобы на проверку). Далее, когда платёж успешно прошёл или завалился - тригерятся эвенты, на которые можно навесить листенеры типа "платёж прошёл", "к вам записались" и т.д. Эти листенеры могут создать нотификацию клиенту/сотруднику на то или иное действие.
спасибо большое за разъяснения
Обсуждают сегодня