Как передать управление внешнему веб-приложению и получить ответ - PullRequest
2 голосов
/ 26 октября 2011

Я ищу хорошую документацию / примеры того, как временно передать управление внешнему веб-приложению и получить ответ от приложения host .Я реализую внешнее веб-приложение половина этого сообщения.

Возможно, лучший способ объяснить этот вопрос с помощью примеров:

  • StackExchange отправляет пользователяв Google для входа в систему
  • Интернет-магазин отправляет пользователя в Paypal для обработки платежей

В обоих этих случаях приложение host отправляет пользователя в внешний сайт для выполнения какой-либо задачи (вход в систему или оплата), а внешний сайт передает ответ обратно.

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

Мой следующий шаг - прикусить пулю и RTFM (как Paypal, так и OpenID), чтобы увидетькак они реализуют это, но если кто-то может указать мне правильное направление до этого, я был бы признателен.

Некоторые другие заметки:

  • Конструкция должна быть максимально безопасной.В идеале и внешнее приложение host и будет иметь возможность аутентифицировать друг друга, а также конечного пользователя.
  • Дизайн не может опираться на javascript и не может включать iframes, поскольку существуют строгие требования доступности.

1 Ответ

2 голосов
/ 27 октября 2011

не знаю, найдете ли вы это достаточно подробно, и в любом случае, если вы реализуете что-то, связанное с финансовыми операциями, вам следует проявить особую осторожность.

Предположим, например, что какая-то компания, которая продает товары онлайн, например, книги, на своем сайте A (веб-приложение A) желает осуществлять платежи с использованием внешнего платежа сайт B (веб-приложение B, управляемое банковской компанией).

Пользователь заполняет форму с подробной информацией о книгах, которые он хочет купить, и отправляет ее. Затем он перенаправляется на HTTPS-страницу A, где ему сообщают, что он заказал «Экстремальное программирование» и «Гибкое программирование» всего за 40 $ и спросили он подтверждает покупку. Пользователь нажимает кнопку «Да», отправляя запрос Req1.

На этом этапе веб-приложение A связывается с веб-приложением B (это деловое общение, без браузеров!) Через SSL (если в Java используется httpclient) и сообщает ему: я хочу перенаправить пользователя на ваш сайт. кто хочет заплатить мне 40 $. Ответ: ОК, вот идентификатор запроса Id1 (что-то вроде R543E32pU878 ..). Теперь A, всегда в ответ на подтверждение пользователя (Req1), отправляет перенаправление в браузер пользователя на внешний платежный сайт B с этим Id1 внутри перенаправления. Затем B представляет пользователю (через HTTPS) данные о покупке и просит ввести личные данные пользователя и данные кредитной карты. Пользователь вводит их и нажимает «продолжить», отправляя запрос Req2. B связывается (опять же, без браузеров) с серверами VISA / bank (через SSL) и, в случае успеха, получает идентификатор транзакции Id2.

Теперь B связывается с A (SSL, браузеры не задействованы) и уведомляет его, что транзакция прошла успешно, и сообщает A идентификатор транзакции, получая от A подтверждение он получил сообщение. Наконец, B отвечает на пользовательский запрос Req2 (помните, что пользователь все еще ожидает ответа на отправку своих личных данных и данных кредитной карты) перенаправлением на сайт A, который включает в себя идентификатор запроса Id1. Затем A отправляет пользователю страницу, на которой пользователь уведомляется об успешной транзакции и, на всякий случай, визуализирует идентификатор транзакции Id2.

Я не пытался выяснить, существуют ли отраслевые стандарты для такого взаимодействия; Насколько я знаю, различные банковские учреждения осуществляют такое взаимодействие способами, которые не являются полностью идентичными.

...