2011-03-20 102 views
0

我正在运行一个客户支付货物的交易网站。到目前为止,我正在使用我的付款处理器(pp)公司网页来处理付款,即客户被重定向到PP服务器,并在付款完成后重定向回我的网站。一个很大的缺点是我无法自定义PP页面,或者很少。什么是安全的网络支付体系结构

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

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

感谢

+1

不要仅在客户端进行验证! (特别是对于支付系统...)如果您使用JavaScript在客户端上进行验证,那么它纯粹是为了用户的方便 - 它很容易绕过。 – Cameron 2011-03-20 03:28:44

+0

@Cameron:谢谢Cameron,但现在我怎么能接受你的答案,因为你发表评论?!? – Alain 2011-03-20 03:33:15

+0

@Cameron:谢谢。至少,我对你的评论投了一票。我认为这是我现在可以做的最好的! – Alain 2011-03-20 03:51:23

回答

1

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

将表单直接发送到付款处理器是最简单的方法。这可能也意味着你甚至不需要符合PCI级别4,因为没有信用卡信息通过你的系统。在这里看到:

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

在另一方面,如果你想存储的账单地址或信用卡号的最后四位数字 - 或者将这些数据插入到你想要发送回执电子邮件 - 您需要编写自己的服务器端代码,用于从信用卡页面收集信息并使用HttpUrlConnection将数据发布到付款处理器。如果您的付款处理器提供API,您也可以使用该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。

此页面(从支付处理器我已经处理了)有一些更多的信息,从处理器角度:

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

1

正如指出的那样,你不仅可以在客户端验证,因为人们可以把你的客户端代码并修改它。另外,您需要提供帐户信息,而您不希望用户看到该信息。您的服务器必须验证并处理请求。

这是一个相当复杂的任务。您需要确保通过SSL(HTTPS)访问页面,并且您需要安全地访问信用卡处理器。

您可以从服务器端代码执行一些基本验证。检查出http://www.blackbeltcoder.com/Articles/ecommerce/validating-credit-card-numbers

除此之外,它确实取决于您的处理器和他们提供给您的API。您需要编写符合其规范的代码。

0

感谢大家对你的答案。最后,它要复杂得多,为了网页设计的目的,我自己负责收集付款数据是一项太大的责任。我仍会修改我的付款页面,通知用户他们将在付款处理器网页上重定向以完成付款。这是我现在拥有的一种混合体。这对他们和我来说都更安全。

再次感谢。