如何安全地实现3D安全支付

15

我想知道接受需要进行3-D Secure验证的信用卡付款的最佳方式。目前的结账流程如下:

  1. 客户提交付款
  2. 支付网关返回一个错误,指出卡片需要进行3-D secure代码处理,并在响应中返回ACS URL。
  3. 我将用户重定向到发卡银行的验证站点,并传递ACS以在验证完成后重定向回调URL。
  4. 客户输入验证码并ACS重定向到回调URL,并带有授权令牌,表示已成功验证。
  5. 为了完成该过程,我必须使用授权令牌重新提交原始请求到支付网关。

我的问题出现在最后一步。因为我需要重新提交原始请求(其中包含客户的信用卡信息),所以我需要在某个地方暂时存储它,以便在调用回调URL时检索它。是否有替代方法?

我正在考虑尝试一种iframe解决方案:原始表单永远不会关闭,而是在一个iframe中显示验证过程。当过程完成,也就是调用回调URL时,我隐藏iframe并使用所需的值更新原始表单并重新提交。有人尝试过这种技术吗?


3个回答

9

正如你在链接的文章中已经注意到的那样,在iframe中呈现银行页面是首选的选项。虽然如果你继续阅读,它还提供了其他安全功能,特别是针对网络钓鱼保护的功能。因为你的客户不知道他真正发送密码的对象是谁。

但回到你的建议,如果你将其呈现在iframe或弹出窗口中,你将能够在基本页面上存储原始表单,然后使用接收到的身份验证令牌重新提交它。这是一个非常好的想法,因为你不需要做任何PCI合规性的工作。所以,不仅对你来说更容易,而且也被推荐:)。


3

使用Sage Pay(以及其他支付提供商),您在最后一步不需要再传递完整的订单信息,只需传递3D Secure表单的响应代码和唯一的交易参考号即可。因此,无需存储卡详细信息。

对于我来说,流程如下:

  1. 将卡详细信息等和唯一的交易参考号提交给支付网关。
  2. 支付网关响应3D Secure详细信息(ACSURL和参考代码)。
  3. 重定向用户到3D Secure表单(通过参考代码和回调URL),用户输入其详细信息。
  4. 将验证代码返回到回调URL。
  5. 服务器必须将来自第1步的验证代码和相同的交易参考号发送到支付网关。
  6. 支付网关响应成功/失败信息。

我希望Paybox也是这样的。我们需要在授权调用中再次传递完整的信用卡详细信息。 - BenMorel
@barrington,我不太理解客户端进程和服务器进程的概念。在你的示例中,回调是指向客户端还是服务器的URL?让银行直接响应客户端是否可行,或者这不是一个好主意? - Angelina

-1

我最近在 3D 安全方面有一些工作经验。从我的个人经验来看:

  1. 我通过前向 URL 将信用卡信息传递给银行的 3D 安全 URL。
  2. 用户被重定向到 3D 安全 URL,并提示输入密码。
  3. 当用户单击“继续”时,授权令牌将传递给前向 URL,信用卡信息也会一并传递。

2
如何在移动领域中设置回调URL?在继续进行3D安全验证后,将会转到回调URL。那么如何从调用Android编程设置回调URL呢? - Ram S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接