2016-03-27 2 views
0

Мы интегрируемся с SagePay с использованием метода интеграции с сервером.Обработка уведомлений о доставке, которые могут занимать более 20 секунд

Уведомление POST от SagePay обращается к скрипту PHP на нашей стороне.

Наш обратный вызов PHP сам должен вызывать несколько методов на внешнем веб-сервисе.

Иногда из-за сетевой латентности наш сценарий обратного вызова занимает более 20 секунд. SagePay не нравится и переиздает новое уведомление POST. Это приводит к тому, что наш обратный вызов в конечном счете работает в два раза или более, что является менее идеальным (отправляет несколько электронных писем с полной оплатой и т. Д.). В основном SagePay продолжает выдавать уведомления, пока не получит ответ менее чем за 20 секунд.

Мы не можем просто игнорировать последний запрос POST от SagePay, поскольку они «забывают» о любых предыдущих уведомлениях и хотят получить ответ от самого последнего. Мы также не можем ничего делать с задержкой в ​​сети.

Есть ли у кого-нибудь советы о том, что делать в такой ситуации?

ответ

1

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

Вы все равно должны стремиться ускорить его. Подумайте о том, как вы можете отправлять электронную почту в задании cron/schedule каждую минуту, чтобы ваши клиенты не были в ожидании ваших третьих сторон. Вместо того, чтобы отправлять электронные письма в обратном вызове Notification, вы можете просто добавить строки в таблицу email_queue, которые будут обрабатываться позже заданием cron.

+0

Спасибо, Ян, сохраняя сообщение, а затем продолжая обработку, не будет работать. На веб-сайте SagePay говорится: «Если ваш сервер не отвечает на сообщение уведомления, мы отправим еще одну попытку. Ваш сервер должен ответить на последнее сообщение, отправленное Sage Pay. Любые ответы на более старые сообщения в сообщениях Sage Pay игнорируют его. В итоге нам удалось ускорить несколько звонков, которые помогли. Нам нужно дождаться, когда вызовы веб-сервиса будут проверены, следует ли возвращать «ok» в SagePay или нет. – CJD