Определите правила перехода статусов
Опишите, когда заказ переходит в ожидание оплаты, оплаченным, отмененным или возвращенным. Не приравнивайте любой ответ провайдера к успешной оплате. Идентификатор заказа, сумма и валюта должны совпадать с данными магазина; подпись проверяется на сервере. Секрет платежного модуля не должен попадать в JavaScript или журнал запросов.
Далее по теме: Повторные API-запросы в Laravel: как не создавать дубликаты.
Воспроизведите повторное сообщение
Провайдер может отправить callback повторно, если не получил подтверждения. В тестовой среде повторите одно и то же событие: оплата, складские операции и сообщения менеджеру не должны дублироваться. Отдельно проверьте задержку сообщения, когда покупатель уже закрыл браузер, и сообщение с неправильной подписью.
Далее по теме: Не работает оформление заказа в OpenCart: порядок диагностики.
Сверьте конечный результат
После теста сравните историю платежа, историю заказа и запись в CRM. Для отказа и возврата проверьте согласованные правила резерва товара. Журнал должен позволять найти операцию по ее ID, но не содержать лишних платежных или персональных данных. Окончательный тест выполняйте способом, согласованным с владельцем магазина.
Можно ли проверять настоящую оплату?
Только по согласованному сценарию с определенной суммой и правилами возврата. Для большинства проверок поначалу достаточно sandbox платежного провайдера.