Домой Каталог: Дополнения WP-Recall YandexKassa Gateway Потовряющиеся платежи: оплата одна - платежей четыре
10ответ(ов) в теме
dm1
не в сети 2 года
На сайте с 07.12.2018
Участник
Тем 55
Сообщения 306
1
19:43
Версия WP-Recall: 16.17.5
Версия дополнения: 2.0.1

Добрый день. / в продолжение телефонного разговора /

Проблема следующая и несистемная (непонятно, что ее вызывает и когда): некий пользователь проводит платеж - в Яндекс кассе платеж проходит как "Оплачено" - в течение 2 следующих часов с разным интервалом в системе сайта проводятся еще 3 таких платежа с тем же ID.

Андрей, напишите, пожалуйста, сам кусок кода (протестите, пожалуйста, у себя с оплатами, так как у нас под сотню платежей в сутки проходит иногда и тестировать нет возможности) и скажите, куда его вставить, чтобы платежи с тем же ID не проходили в системе.

Если будут еще какие-то мысли, с чем может быть связана проблема, поделитесь, пожалуйста.

Большое спасибо.

0
Андрей CS
не в сети 9 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16936
2
19:47

Добрый день.
Откройте файл /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 );
}

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

0
dm1
не в сети 2 года
На сайте с 07.12.2018
Участник
Тем 55
Сообщения 306
3
20:05

Андрей, этот код решит проблему, если этот "ответ" с тем же ID приходит не со стороны Яндекс.Кассы, а, например, как неправомерное обращение к базе (инъекция) со стороны злоумышленников?

0
Андрей CS
не в сети 9 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16936
4
20:10

Я сомневаюсь, что подобные действия с третьей стороны возможны. Перед тем как записать платеж в БД обязательно высчитывается контрольная сумма платежа, а ее можно получить только зная секретный пароль

0
dm1
не в сети 2 года
На сайте с 07.12.2018
Участник
Тем 55
Сообщения 306
5
20:18

Кстати, возможно, на будущее или для понимания логики проблемы: в пока обнаруженных случаях "лишние" платежи повторяются секунда в секунду ровно через:

1 минуту
16 минут
46 минут

Есть какие-то мысли, с чем может быть связано?

0
Андрей CS
не в сети 9 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16936
6
20:23

Я вам ранее, по телефону сообщал, что эти запросы посылает ЯК, через установленные промежутки времени. Так платежка ведет себя, когда не получает уведомления от сервера, что платеж был принят, но вы сообщаете, что на стороне ЯК платеж помечен как принятый, поэтому не знаю пока в чем дело. Можно конечно логи посмотреть на стороне ЯК для каждого платежа, может они что то прояснят.

0
dm1
не в сети 2 года
На сайте с 07.12.2018
Участник
Тем 55
Сообщения 306
7
20:27

Спасибо, Андрей. Я написал в поддержку Яндекс.Кассы. Отпишусь здесь по факту, как прояснится ситуация.

0
dm1
не в сети 2 года
На сайте с 07.12.2018
Участник
Тем 55
Сообщения 306
8
18:23

Поддержка Яндекс.Кассы ответила следующим образом:

Ситуация связана с тем, что на наш запрос paymentAviso ваш магазин отвечает некорректно. Мы отправляем до 7 запросов paymentAviso и, например, в случае платежа *********** только на четвертый платеж ваш магазин ответил успешно.

Возможно, сервер вашего магазина обрабатывает предыдущие 3 запроса с задержкой и поэтому вы видите описанную вами ситуацию.

Андрей, как думаете, где стоит поискать проблему? Оборудование у нас быстро и мощное. Проблем со скоростью даже огромного количества обращений нет.

0
Андрей CS
не в сети 9 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16936
9
18:54

Ну собственно ответили как я и предполагал, все вопросы по сути к серверу, запросы приходят нормально, но ответ не отправляется, я с самим скриптом проблемы не вижу.
После внесенных правок проблема наблюдается?

0
dm1
не в сети 2 года
На сайте с 07.12.2018
Участник
Тем 55
Сообщения 306
10
19:19

Мы пока не вносили правки, так как период активных платежей идет. В начале следующей недели будем вносить.

Спасибо за ответы.

Кстати, уточню, это изменение кода не приведет к "потере" (не_учету) реального платежа из-за задержек, о которых говорит Яндекс.Касса?

0
Вы не имеете права на публикацию сообщений в этой теме