我正在运行一个交易网站,客户支付货款。截至目前,我正在使用我的支付处理器(pp)公司网页来处理付款,即客户被重定向到PP服务器并在付款完成后重定向回我的网站。一个很大的缺点是我不能自定义PP页面,或者很少。
现在,我想直接在我的网站上处理付款。我只需要将所有付款数据发布到我的付款处理器并返回响应。我已经知道我需要符合PCI标准。我的网站是使用AJAX调用RESTeasy WebServices和Java服务器完成的。
现在我的问题是,我应该使用javascript验证客户端的每个字段,还是在服务器上摆放所有内容并在那里完成工作?我应该使用客户端上的FORM或使用服务器上的HttpUrlConnection直接向支付处理器发送信息吗?这样做的市场基准是什么?我发现了很多PHP示例但不幸的是没有时间学习PHP。
谢谢
答案 0 :(得分:1)
正如所指出的,您无法仅在客户端上进行验证,因为人们可以获取您的客户端代码并对其进行修改。此外,您还需要提供您不希望用户看到的帐户信息。您的服务器必须验证并处理请求。
这是一项相当复杂的任务。您需要确保通过SSL(HTTPS)访问该页面,并且您需要安全地访问您的信用卡处理器。
您可以从服务器端代码执行一些基本验证。查看http://www.blackbeltcoder.com/Articles/ecommerce/validating-credit-card-numbers。
除此之外,它完全取决于您的处理器和它们提供给您的API。您需要编写符合其规范的代码。
答案 1 :(得分:1)
是否要将数据直接发送到付款处理器或收集信用卡信息取决于您的付款处理方,以及是否要将您收集的一些信息存储在信用卡页面上(不< / em>存储信用卡信息;如果需要,只存储最后四位数字。)
将表单直接发布到付款处理器是最简单的方法。它可能还意味着您甚至不需要符合PCI 4级标准,因为没有任何信用卡信息通过您的系统。见这里:
http://www.pcicomplianceguide.org/pcifaqs.php#2
另一方面,如果您想存储帐单地址或信用卡号码的最后四位数字 - 或者将此数据插入您希望通过电子邮件发送的收据中 - 您需要撰写您自己的服务器端代码,用于从信用卡页面收集信息,并使用HttpUrlConnection将数据发送到支付处理器。如果您的支付处理器提供API,您也可以使用它。
在任何一种情况下,您都应确保您的付款页面仅可通过SSL查看。在Java Web应用程序中,您可以使用web.xml中的transport-guarantee条目来执行此操作:
<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。
从处理器的角度来看,这个页面(来自我处理过的支付处理器)提供了更多信息:
答案 2 :(得分:0)
感谢各位的回答。最后,它要复杂得多,而且仅仅为了网页设计而自己负责收集付款数据是一项太大的责任。我仍然会修改我的付款页面,通知用户他们将被重定向到付款处理器网页上以完成付款。我现在拥有的那种混合物。这对他们和对我来说都更安全。
再次感谢。