1

我想实现对虚拟 POS 的 POST 调用以进行卡支付处理。POS 只是银行提供的一个服务器程序,必须通过带有交易数据的表格来访问。这可以通过组合一个表单、方法帖子和一组隐藏参数来完成,然后将输出定位到一个新窗口(这是必需的,因为从这一点开始,银行软件会控制)。但是,出于安全问题,我想从支持 bean 进行 POST 调用。因此:

  1. 我的 facelet 中的按钮调用 RequestScoped bean 中的方法。这个 bean 可以访问会话中的事务数据。
  2. 豆子做了一些东西。
  3. 该方法中,我可以打开一个 URLConnection,添加参数,然后调用银行的程序(我假设它是一个 servlet)。
  4. 无论这个 servlet 的输出是什么,它都必须重定向到客户端的一个新窗口。这个新窗口将包含身份验证和真实支付的内容,但它是银行的软件。

哪个是使用 JSF 实现该行为的正确模式?

提前致谢。

4

1 回答 1

0

我想我现在明白了,您希望将银行 servlet 功能集成到您的 JSF 应用程序中,但不想为 PCI 合规性而烦恼。

重定向是一个 HTTP 服务器响应代码,它指定执行 GET 的 url,因此您无法重定向表单 POST 的响应。

您也不希望以编程方式将此 POST 请求从服务器端传递给银行 servlet 并呈现收到的响应,因为您已经与银行 servlet 启动了一个单独的会话,而不是用户和您的 Web 应用程序之间存在的会话。这实际上是一个严重的安全问题。

除非服务器正在处理与银行 servlet 的所有 HTTP 通信,否则无法通过 JSF 启动此 Bank Servlet 会话。

在您的场景下我会这样做的方法是使用 Javascript 打开一个带有常规 HTML 表单的新窗口,并将表单的操作设置为银行 servlet URL,并使该表单的初始输入与所需的参数名称匹配对于 HTTP 帖子。提交此 HTML 表单时,SSL 证书将与用户浏览器协商,并且将呈现 POST 响应,而无需您的 Web 应用程序的任何参与。客户端将维护两个单独的会话,即您的应用程序的会话以及 Bank Servlet 的会话。

这是执行此操作的安全方法,不会对您的 Web 应用程序提出任何 PCI 合规性要求。

于 2013-04-23T18:11:05.630 回答