Назначьте ключи для двух задач
| Задача | Какой ключ проверить |
|---|---|
| Не обработать повторную доставку | ID сообщения или иной идентификатор повтора, если его предоставляет источник |
| Вести текущее состояние заказа | Сеть и ID транзакции в пределах её схемы |
| Различать несколько действий по одному клику | ID действия или тип события по документации программы |
В документации Keitaro описаны идентификаторы клика и транзакции. Проверьте, как ваша интеграция их передаёт и различает статусы. Документация Stripe о вебхуках показывает общую практику учёта дублей и независимости от порядка доставки. Правила конкретной CPA-сети всё равно уточняйте отдельно.
Сверьте повтор, статус и вторую покупку
Учебный пример. Приходит сообщение о заказе A51 со статусом «ожидает». Затем приходит то же сообщение повторно, после него — подтверждение A51, и ещё одна покупка A52 с тем же Click ID. В отчёте должны быть две покупки, а у A51 должен обновиться статус. Если следом придёт отмена, сверяйте, как правила меняют начисление по A51, не увеличивая число покупок.
Не полагайтесь только на время получения. Сообщения могут прийти не по порядку. Если источник передаёт время или версию изменения, используйте их согласно документации. Если нет надёжного признака нового состояния, сверяйте спорные записи по отчёту сети. Избегайте правила «любой последний пришедший запрос главнее».
Проведите контрольную проверку
Сохраните журнал входящих событий и отдельно актуальную строку заказа. Проверьте четыре сценария: дубль, изменение статуса, два заказа по одному клику и запоздалое сообщение. Для собственного обработчика используйте уникальное ограничение для ключа повтора, чтобы два параллельных запроса не записали результат дважды. Сверяйте количество подтверждённых действий, сумму и валюту.
Если трекер показывает больше заказов, выгрузите технические ID и сопоставьте их с кабинетом. Сначала выясните, какие строки повторяют одну покупку. Не удаляйте события целиком до проверки: журнал пригодится, чтобы понять, когда пришло подтверждение или отмена.
Сохраните контрольную сумму по состояниям на дату сверки. Например, сопоставьте подтверждённые и отменённые действия отдельно. Если сеть прислала отмену позже, пересчитайте относящийся к этому заказу период, сохранив дату изменения в журнале.