Обрабатывать ответ платежа в случае сбоя сервера?
Что происходит, когда я инициирую транзакцию, скажем, Citrus, Ccavenue, PayUmoney или какие-либо платежные шлюзы, и деньги вычитаются на стороне клиента, и мой сервер терпит неудачу в то время, когда он собирался получить ответ, и на ответ, который мне нужно обновить несколько столбцов в БД для этого конкретного клиента? Как это должно быть обработано? Я использую Mysql в качестве базы данных и Laravel.
1 ответ
Это может быть обработано отдельной службой очереди, такой как Laravel Queue ( https://laravel.com/docs/5.6/queues)
Также убедитесь, что у вас есть API для проверки статуса платежа. Большинство платежных шлюзов предоставляют интерфейс API для проверки статуса платежа.
Платежный цикл будет следующим
- Клиент - захват платежных реквизитов
- Клиент - Запросите оплату через платежный шлюз и одновременно добавьте задачу в службу очередей, чтобы проверить статус платежа и обновить базу данных.
- Служба очереди - запрос статуса платежа от шлюза и обновление базы данных
- Клиент - выберите статус платежа из базы данных
Служба очереди должна работать как серверный процесс, изолированный от клиентского приложения. Таким образом, ваш цикл платежей не будет прерываться при каких-либо сбоях / задержках (таймауты сети, сбои сервера и т. Д.)