Вы можете думать о работающем приложении Rails как о гигантском цикле while: ждать запросов, получать запрос, обрабатывать запросы, ждать следующего запроса. Похоже, ваш платежный процессор спроектирован так, чтобы красиво интегрироваться с этой архитектурой, предоставляя вам возможность указать URL-адрес обратного вызова (например, ваше приложение отображает веб-крюк) в контроллере B. Если вы заблокируете этот цикл, ваше приложение перестанет отвечать на новые запросы.
Я так понимаю, ваш вопрос о том, как обновить пользователя. После того как пользователь завершил платеж, стандартным является перенаправление его на страницу, доступную по запросу GET, чтобы при обновлении браузера не повторная отправка платежа (возможно, POST). Давайте представим, что это действие «показать заказ», которое включает статус платежа как «ожидающий» или «обработанный». Когда пользователь впервые видит страницу, он показывает статус: в ожидании. Позже, после того, как обработчик платежей выполнит обратный вызов в контроллере B, если пользователь заходит на ту же страницу или обновляет ее в своем браузере, он должен показать статус: обработано.
Если вы хотите, чтобы страница обновлялась самостоятельно, вы обычно делаете это с помощью опроса в javascript. Вы можете представить JSON-ответ от того же действия (или нового действия, которое просто возвращает статус оплаты заказа), а затем создать цикл, выполняющийся в javascript, в браузере, который выполняет это действие каждые несколько секунд, чтобы увидеть, изменился ли статус, затем конец, когда это имеет. Подумайте об использовании экспоненциального спада для быстрого обновления состояния в обычном случае, когда это происходит спустя несколько мгновений, но во избежание слишком большого числа запросов на сервер, если это занимает минуты или часы.