web-applications - 如何将控制权传递给外部 Web 应用程序并接收响应

标签 web-applications paypal openid

我正在寻找一些关于如何将控制权临时传递给外部网络应用程序并让主机应用程序接收响应的好文档/示例。我正在实现此通信的一半外部 Web 应用程序

也许解释这个问题的最好方法是通过例子:

  • StackExchange 将用户发送到 Google 进行登录
  • 在线商店将用户发送到 Paypal 以处理付款

在这两种情况下,主机 应用程序将用户发送到外部 站点以执行某些任务(登录或付款),而外部 em> 站点返回响应。

我目前正在编写一个 Web 应用程序,它将成为这些示例中的外部 Web 应用程序。我可以自己想出一个设计,但我想知道是否有可以使用的既定模式或技术。

我的下一步是硬着头皮和 RTFM(包括 Paypal 和 OpenID)看看他们是如何实现它的,但如果有人能在此之前为我指出正确的方向,我将不胜感激。

一些其他的快速笔记:

  • 设计应尽可能安全。理想情况下,主机外部应用 都将有一种方法来验证彼此以及最终用户的身份。
  • 设计不能依赖javascript,不能涉及iframe,因为有严格的可访问性要求。

最佳答案

不知道您是否会觉得它足够详细,无论如何,如果您实现与金融交易相关的东西,您应该格外小心。

例如,假设某家在线销售商品的公司,比如书籍, 在其站点 A (webapp A) 上,希望使用外部支付来实现支付 站点 B(这是由某家银行公司运营的网络应用程序 B)。

用户填写一个表格,其中包含他想购买的书籍的详细信息,然后提交。 然后他被重定向到 A 的 HTTPS 页面,在那里他被告知他订购了 《极限编程》和《敏捷编程》总共40美元,问是否 他确认购买。用户按下"is"按钮,从而向 A 提交 请求Req1。

此时,webapp A 通过 SSL(如果在 Java 中,使用 httpclient)联系 webapp B(这是企业对企业的通信,不涉及浏览器!),并告诉它:我想将一个用户重定向到你的站点谁愿意付我 40 美元。 B 回答:好的,这是一个请求 ID Id1(类似于 R543E32pU878..)。现在,A 总是响应用户的确认 (Req1),向用户的浏览器发送一个重定向到外部支付网站 B,重定向中包含此 Id1。 B 然后(通过 HTTPS)向用户展示购买数据并要求输入用户的个人和信用卡详细信息。用户输入它们并按“继续”,从而提交请求 Req2。 B 联系(同样,不涉及浏览器)VISA/银行服务器(通过 SSL),如果成功,则获得交易 ID Id2。

现在,B 联系 A(SSL,不涉及浏览器)并通知它交易成功,并将交易 ID 传达给 A,从 A 那里获得确认 它收到了消息。最后,B 响应用户请求 Req2(请记住,用户仍在等待对其个人和信用卡详细信息的提交的响应)重定向到包含请求 ID Id1 的站点 A。然后,A 向用户发送一个页面,通知用户交易成功,并可选择可视化交易 ID Id2,以防万一。

我没有试图找出是否有此类交互的行业标准;据我所知,不同的银行机构以不完全相同的方式实现此类互动。

关于web-applications - 如何将控制权传递给外部 Web 应用程序并接收响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7906251/

相关文章:

asp.net - 将 - asp.net mvc 5 Web 应用程序 (Visual studio 2017) 转换为 .exe 安装文件

html - 设置送货地址捐赠

paypal - 如何从希望在设定日期之前支付较大金额的客户那里接收 PayPal 付款。他们可以支付他们想要的任何金额

php - PayPal 自定义结帐表格

c# - AspNetCore 1.1 中不存在 OpenIdConnectEvents 中的 AuthenticationValidated 事件,所以我应该在哪里添加声明客户端

javascript - 将用户散列密码存储在本地存储中?

web-applications - 寻找具有大量复杂表格和网格的在线应用程序

javascript - Jquery 强制换行

openid - 如何为同时登录多个Google帐户的用户使用OpenID?

php - LightOpenID 无法连接到 2a00:1450:4016:804::2004: 网络无法访问