java - 什么是好的、安全的网络支付架构

标签 java javascript ajax web-services payment-processing

我正在运行一个交易网站,客户可以在其中支付商品费用。截至目前,我正在使用我的支付处理器 (pp) 公司网页来处理付款,即客户端被重定向到 PP 服务器,并在付款完成后重定向回我的网站。一个很大的缺点是我不能自定义PP页面,或者很少。

现在,我想直接在我的网站上处理付款。我只需要将所有付款数据发布到我的付款处理器,它就会返回响应。我已经知道我需要遵守 PCI 标准。我的网站是使用 AJAX 调用 RESTeasy WebServices 和 Java 服务器完成的。

现在我的问题是,我应该使用 javascript 验证客户端的每个字段,还是将所有内容放在服务器上并在那里完成工作?我应该直接使用客户端上的 FORM 还是使用服务器上的 HttpUrlConnection 发送到支付处理器?市场上这样做的基准是什么?我发现了很多 PHP 示例,但不幸的是我没有时间学习 PHP。

谢谢

最佳答案

您是否想要将数据直接发布到支付处理器或收集信用卡信息取决于您的支付处理器以及您是否想要存储在信用卡页面上收集的一些信息( 存储信用卡信息;如果需要,仅存储最后四位数字。)

将表单直接发布到付款处理商是最简单的方法。这可能还意味着您甚至不需要符合 PCI 第 4 级标准,因为任何信用卡信息都不会通过您的系统。请参阅此处:

http://www.pcicomplianceguide.org/pcifaqs.php#2

另一方面,如果您想要存储帐单地址或信用卡号的最后四位数字 - 或者将此数据插入到您想要通过电子邮件发送的收据中 - 您将需要编写您自己的服务器端代码,用于从信用卡页面收集信息并使用 HttpUrlConnection 将数据 POST 到支付处理器。如果您的支付处理器提供 API,您也可以使用它。

无论哪种情况,您都应该确保您的付款页面只能通过 SSL 进行查看。在 Java Web 应用程序中,您可以使用 web.xml 中的传输保证条目来执行此操作:

  <security-constraint>
   <user-data-constraint>
     <transport-guarantee>CONFIDENTIAL</transport-guarantee>
   </user-data-constraint>
   <web-resource-collection>
     <url-pattern>your_payment_page.jsp</url-pattern>
   </web-resource-collection>
  </security-constraint>

这将确保即使用户通过纯 HTTP 访问您的支付页面,应用程序服务器也会重定向到 HTTPS。

从处理者的 Angular 来看,此页面(来 self 处理过的支付处理者)包含更多信息:

http://wiki.usaepay.com/developer/transactionapi

关于java - 什么是好的、安全的网络支付架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5366435/

相关文章:

javascript - 如何在浏览器宽度上重复一个圆圈

javascript - 通过 AJAX 发送表单时出错

javascript - getElementById 无法正常工作

ajax - 当每个循环中的所有ajax调用成功时如何采取行动?

php - 如何在没有 Ajax 的情况下使用 Google Wallet 而不是像 Paypal 一样提交表单?

java - 如何知道我的代码在 IDE 中以 "debug"模式运行?

java - Vertx POST 不起作用 -> 错误 404

java - 如何将字符串 "AXA || BXB && CXC || BXB"替换为 "AXA OR BXB && CXC OR BXB"?

php - ajax不向php发送数据

java - 为 Dataflow v2.1 编写自定义无界接收器