Приветствую. На сайте оформляют счет, и ссылку отправляют клиенту, на оплату. Потом сайт кроном стучит на сервер платежной системы , запрашивая статус заказа. Сделал очередь, - запоминаю сколько проверок сделано и дату последней проверки. Текущие проверяемые соответственно у кого поменьше и того и того. Но все равно вижу что по заказам сильно много проверок идет. По 500 например. А они могут вообще и не оплатить, а сайту проверяй и проверяй. Думаю когда все это завершать? Или как решить лучше? Проверки каждую минуту, по одной проверке за раз, Минуту, т.к. успешный результат нужен быстро.
Больше деталей.... какой счет, какая ссылка, какая платежная система? это вообще выше моего разумения ..... особенно про.... и того и того .. что это???? в нормальный платежных системах не надо стучаться никуда, они сами шлют на ваш сервер данные об успешности/неуспешности платежей
Платежных систем много подключено. Это не у всех есть. Но и жестко потребовали на это не рассчитывать. Т.к. не всегда это надежно работает. Запоминаю кол-во проверок по заказу(счету) и дату последней проверки. Соответственно order by check_amount, check_last_time всегда дадут те записи, которые надо сейчас проверить. Те что много проверяются, будут иметь большой check_amount и поэтому не будут конкурировать с новыми заявками. А для тех что имеют одинаковый check_amount - выбирает по check_last_time. Очередь такая.
ну опять же - обратиться опыту платежных систем, которые уведомляют... там они стучатся не каждую минуту, а как то так 1 1 1 3 5 10 30 60 минут... если за час не достучались - это проблемы сайта
как правило у платежных систем практически у всех есть callback который сообщает про статус платежа.. мы за последнее время больше 20 наверно уже подключили платежных систем.. только в одном пришлось сделать крон по проверке статусов.. да и то оно не долго дергает.
не долго - это когда заказ оплачивается, а вот если весит неоплаченным. Я сделал пока проверку - время следующей проверки, и для таких "зависших" заказов отодвигаю ее в будущее
дать время жизни заказу.. у нас если через два часа не прошла оплата - то мы переводим заявку в отмененную и перестаем ее проверять.. если чел оплатил через сутки - тогда через саппорт решает вопрос - потому что за сутки курс мог изменится и цена совсем другой стать.
Ну вот я к тому же прихожу, поэтому и спросил, т.к. с такой проблемой не сталкивался. У нас просто нет курсов, все в одной валюте, клиенту могут отправить ссылку на оплату, а он может и потупить
Практика показала что в таком алгоритме есть минус: - неоплаченная заявка будет проверяться и ее check_amount будет расти - поэтому когда ее все же оплатят, до нее куча времени требуется, чтобы очередь дошла - а видеть то оплаченные заказы хотят "прям сразу". Так что в сырую так не пойдет, периодически, рандомно, проверяю просто по order by check_last_time
ну зачем же так..... вы ж знаете что заявка оплачена - статус изменился. Для таких заявок приоритет просто выше должен быть и все
нет, это ж у меня как раз проверки среди ожидающих на то, оплачена ли. с алгоритмом выше, вообще не жалуются