Добрый день. / в продолжение телефонного разговора /
Проблема следующая и несистемная (непонятно, что ее вызывает и когда): некий пользователь проводит платеж - в Яндекс кассе платеж проходит как "Оплачено" - в течение 2 следующих часов с разным интервалом в системе сайта проводятся еще 3 таких платежа с тем же ID.
Андрей, напишите, пожалуйста, сам кусок кода (протестите, пожалуйста, у себя с оплатами, так как у нас под сотню платежей в сутки проходит иногда и тестировать нет возможности) и скажите, куда его вставить, чтобы платежи с тем же ID не проходили в системе.
Если будут еще какие-то мысли, с чем может быть связана проблема, поделитесь, пожалуйста.
Большое спасибо.
Добрый день.
Откройте файл /yandexkassa-gateway/index.php, на строке 230 будет
if ( $action == 'paymentAviso' ) { $code = $this->check_hash( $data ); if ( ! $code ) parent::insert_pay( $data ); $this->ya_response( $code ); }
замените этот кусок на это
if ( $action == 'paymentAviso' ) { $code = $this->check_hash( $data ); if ( ! $code && ! parent::get_pay( $data ) ) { parent::insert_pay( $data ); } $this->ya_response( $code ); }
можно менять без какого то теста, хуже точно не будет, а повторяющиеся платежи должны фильтроваться
Я вам ранее, по телефону сообщал, что эти запросы посылает ЯК, через установленные промежутки времени. Так платежка ведет себя, когда не получает уведомления от сервера, что платеж был принят, но вы сообщаете, что на стороне ЯК платеж помечен как принятый, поэтому не знаю пока в чем дело. Можно конечно логи посмотреть на стороне ЯК для каждого платежа, может они что то прояснят.
Поддержка Яндекс.Кассы ответила следующим образом:
Ситуация связана с тем, что на наш запрос paymentAviso ваш магазин отвечает некорректно. Мы отправляем до 7 запросов paymentAviso и, например, в случае платежа *********** только на четвертый платеж ваш магазин ответил успешно.
Возможно, сервер вашего магазина обрабатывает предыдущие 3 запроса с задержкой и поэтому вы видите описанную вами ситуацию.
Андрей, как думаете, где стоит поискать проблему? Оборудование у нас быстро и мощное. Проблем со скоростью даже огромного количества обращений нет.