BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 28 мар 2024, 16:58

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: [6.0] Задвоение платежей
СообщениеДобавлено: 16 авг 2016, 14:03 
Не в сети
Аватара пользователя

Зарегистрирован: 09 июл 2013, 15:42
Сообщения: 152
Откуда: Краснодар
Карма: 0
Добрый день.
Если в момент бэкапа БД приходит Яндекс-платёж - он вносится дважды:
Код:
id   cid   tranz   sum   val   pc   purse   datetime
                     
2916   17795   2000466776173   650.00   RUB   EKOM   410011837201967   02.07.2016 07:03:15
2917   17795   2000466776173   650.00   RUB   EKOM   410011837201967   02.07.2016 07:03:15
                     
2964   18379   2000468855534   500.00   RUB   EKOM   410011837201967   06.07.2016 07:00:23
2965   18379   2000468855534   500.00   RUB   EKOM   410011837201967   06.07.2016 07:00:23


Видимо, не дождавшись ответа из-за нагрузки на БД при бэкапе, Яндекс перепосылает платеж - он падает в очередь и, после окончания бэкапа, проводится дважды - не отсекая повторный по номеру транзакции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Задвоение платежей
СообщениеДобавлено: 16 авг 2016, 14:08 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
А вы бэкап делаете с основной БД? Обычно делают репликацию на слейв, а потом снимают бэкапы со слейва, который потом догонит мастер...

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Задвоение платежей
СообщениеДобавлено: 16 авг 2016, 14:10 
Не в сети
Аватара пользователя

Зарегистрирован: 09 июл 2013, 15:42
Сообщения: 152
Откуда: Краснодар
Карма: 0
да - с основной


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Задвоение платежей
СообщениеДобавлено: 16 авг 2016, 14:30 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Еще есть Percona XtraBackup.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Задвоение платежей
СообщениеДобавлено: 16 авг 2016, 14:40 
Не в сети
Аватара пользователя

Зарегистрирован: 09 июл 2013, 15:42
Сообщения: 152
Откуда: Краснодар
Карма: 0
это - понятно, но - в идеале - модуль должен отсекать повторяющиеся платежи с одинаковыми номерами транзакции, суммами и временем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Задвоение платежей
СообщениеДобавлено: 16 авг 2016, 14:57 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
А с каким интервалом приходили платежи?

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Задвоение платежей
СообщениеДобавлено: 16 авг 2016, 16:41 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Каким экзекутером/протоколом пользуетесь?
/yaexecuter/ или /yaexecuter3/

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Задвоение платежей
СообщениеДобавлено: 16 авг 2016, 16:46 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
проверки там все эти есть согласно протоколу (сверяется по InvoiceId):
1) на повторный checkOrder ошибка там вылезает (по протоколу не может прийти повторно), но это нормально т.к. запрос приходит в момент попытки платежа и всё равно там ничего не делается при этом, только договор пытается найтись
2) на повторный paymentAviso сразу отправляется корректный ответ (с текстовым комментарием OK (Re-send) ) и ничего не делается, как и положено по протоколу, т.к. там и написано что уведомление об оплате может приходить повторно

так что дело не в коде, а в том что в момент прихода второго запроса у вас в БД нет записи ещё о первом приходе, вот тут нужно подумать почему такое

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Задвоение платежей
СообщениеДобавлено: 16 авг 2016, 18:05 
Не в сети
Аватара пользователя

Зарегистрирован: 09 июл 2013, 15:42
Сообщения: 152
Откуда: Краснодар
Карма: 0
dimOn писал(а):
Каким экзекутером/протоколом пользуетесь?
/yaexecuter/ или /yaexecuter3/


/yaexecuter3/

запросы
Код:
[02/Jul/2016:07:03:14 +0300] 0.019 200 171 "POST /bgbilling/yaexecuter3 HTTP/1.1"
и
[02/Jul/2016:07:10:35 +0300] 380.285 200 173 "POST /bgbilling/yaexecuter3 HTTP/1.1"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Задвоение платежей
СообщениеДобавлено: 16 авг 2016, 18:18 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Второй запрос висел 6.5 минут. Вероятно, он захватил себе коннекшен, в это время другой запрос сделал все дела, потом когда его отпустило - он в этом коннекшене и сделал всё что ему нужно, а в нём не было данных БД, потому что там транзакции.
Наверное, так. Хотя первый запрос был 7+ минут ранее, потому непонятно что произошло, нужно совместно подумать об этом. В коде как я сказал все проверки на дублирующийся запрос есть.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Задвоение платежей
СообщениеДобавлено: 16 авг 2016, 18:51 
Не в сети
Аватара пользователя

Зарегистрирован: 09 июл 2013, 15:42
Сообщения: 152
Откуда: Краснодар
Карма: 0
А если добавить на таблицу yamoney_transactions_Х ключ по связке (invoiceId + paymentDateTime)?
Тогда сама БД будет отбивать такие дубли, вываливая ошибку в логи


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Задвоение платежей
СообщениеДобавлено: 17 авг 2016, 11:36 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Ну почему тогда не по invoiceId просто. Ну так-то можно теоретически... но тогда яндексу вернётся ошибочный ответ что не очень-то по протоколу

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.084s | 42 Queries | GZIP : On ]