一些发卡行拒绝 3D Secure 请求[关闭]

Posted

技术标签:

【中文标题】一些发卡行拒绝 3D Secure 请求[关闭]【英文标题】:Some issuing banks refusing 3D Secure requests [closed] 【发布时间】:2011-01-07 05:44:55 【问题描述】:

我们有一个商业网站,我们正在尝试设置 3D Secure(通过 VISA/Mastercard Securecode 验证)。

我们使用 DataCash 作为我们的支付提供商。

我们看到以下问题:

在这些计划中注册的一些卡已成功显示在 3D Secure 页面上,而另一些则失败了,与发卡银行交谈也无济于事,因为他们告诉我们他们没有看到交易。

我们从诸如“cap.securecode.com”之类的服务器收到消息:

由于系统错误,您的身份验证无法完成。如果这种情况持续发生,请联系您的 CSR”。

或来自“www.securesuite.co.uk”:

您无法访问此页面。

这可能是由于以下两个原因之一:

    您尝试访问的 FI 已停用 FI 的访问受限于特定 IP 地址,而您的地址不是其中之一

有没有其他人看到验证银行返回这些错误,我该如何解决?

我正在尝试获取有关成功和失败的任何模式的更多详细信息。

【问题讨论】:

@Kev - 可能过于本地化,但跑题了? 【参考方案1】:

如果我说某些银行 (MPI) 返回带有空格的 PaReq 响应,这可能对每个人都有帮助,这些空格必须用“+”符号替换,请注意,如果您使用 php 编码,您不能简单地使用 urlencode 对它们进行编码,因为这可能会在提供正确的详细信息后破坏重定向本身。

问候K

【讨论】:

遗憾的是,这与手头的问题无关。【参考方案2】:

3D 安全是一团糟 - 您的支付处理器将根据您的卡发卡人将其移交给众多网站之一。其中一些站点接受 GET 请求,而一些仅接受 POST 请求。如果您发送的是 GET 而不是 POST,您可能会收到此错误。

【讨论】:

很容易知道(不知道为什么/如何我去年错过了这个,所以很抱歉)。正如您从我的回答中看到的那样,我们正在使用 POST,但包含了一些 3D 安全服务器拒绝的 enctype。【参考方案3】:

我们用来向 3D Secure 服务器提交请求的表单似乎存在问题:

<form method="post" 
      enctype="multipart/form-data" 
      action="https://[3dSecureServer]">
  <input value="[EncodedRequest]" name="PaReq" type="hidden">
  <input value="[RetailerReference]" name="MD" type="hidden">
  <input value="[RetailerReturnUrl]" type="hidden" name="TermUrl">
  <p>If you do not see your card issuer's instructions, below, 
     please click <input value="Continue" name="TDAction" type="submit"></p>
</form>

从表单中删除 enctype 属性似乎已经解决了问题 - 它对成功的事务没有影响,并且允许那些失败的事务也成功。

我想这是取自其他一些示例代码。

【讨论】:

enctype 代表编码类型——表单数据在 POST 到服务器时如何在数据中表示。默认编码类型为application/x-www-form-urlencodedmultipart/form-data 通常仅在您需要将文件发送到服务器时使用。这两个选项会产生截然不同的 POST 数据。某些 3D 安全服务器可能不支持多部分表单类型。 确实 - 正如我所指出的,我不完全确定为什么我们会在该表单上指定 enctype - 我很确定这不是我们默认添加的内容.. .【参考方案4】:

让我试着给你一些额外的信息,

我在发卡行工作。如果交易涉及 3D 安全,那么第一步是 3D 安全认证,只有在成功后才能进行授权。如果发行银行确实将 3D​​ 安全的处理交给了另一个组织,那么他们确实不会在 3D 安全错误的情况下看到交易。换句话说,他们从未做过授权。这取决于他们是否知道 3D 安全错误。因此,联系发行人可能无济于事。

如果我是正确的,那么您对多个 3D 安全组织有疑问。如果我假设每个发行人都有自己的 3d 安全组织,那么您在使用来自不同发行人的信用卡(您命名为 securecode 和 securesuite)时就会遇到问题。因此,我认为这与信用卡无关,而仅与您的处理有关。

问题不完全出在您的支付处理商手中吗?或者您在与支付处理商的沟通中可能做错了什么?请注意,Visa 和 Mastercard 确实实现了 3D Secure 有点不同。

(也许是个愚蠢的问题,但您确定出错的卡是 Visa 和 Mastercard 卡吗?客户使用的卡(例如 JBC)是不是您的支付处理器不支持?)

【讨论】:

感谢您的回答,以及好的 cmets,我会在这里尝试回答:1) 同意,联系发卡行确实没有帮助 - 从服务器返回的错误应该显示显示该页面之前的 3D 安全页面。 2)我正在尝试从客户那里获得更多详细信息,但它似乎是基于发行人而不是基于卡的 - 即劳埃德银行的卡有效,汇丰银行的卡没有,而不是所有 VISA 卡都有效,没有万事达卡卡片有效。 3) 无论类型如何,支付处理器 (Datacash) 都以相同的方式响应,它返回一个 PaReq 值,我们必须将该值提交给它也提供的 URL。是的,我注意到向用户显示的屏幕可能不同。 4) 这不是一个愚蠢的问题,但我从 Datacash 得到一个不同的(已处理的)错误代码,指出我不允许使用(例如)AmEx 或 JCB。 您是否要为尚未启用 3D 安全的卡进行 3D 安全? (请记住,我确实在发卡行网站上工作)从我们(或客户)的角度来看,我们(或客户)为卡激活或停用 3D 安全。这是卡级别,而不是架构或 BIN 级别。您可以从同一发行商、同一方案、同一 BIN 接收 2 张卡,其中一张启用,一张未启用。我碰巧知道一些发卡行没有在一个方案中为其卡激活 3D(例如,该发卡行的所有 Visa 卡都已启用,而 AMex 则未启用)。这一切都可以解释为什么你的错误是在发行人级别而不是方案

以上是关于一些发卡行拒绝 3D Secure 请求[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Apache - 允许一个通配符 URL,拒绝所有其他请求

二级支付处理器作为下降的后备

如何写一个C或Java应用程序来处理TCP SYN请求[关闭]

PBOC金融IC卡,卡片与终端交互的13个步骤,简介-第四组(转)

2:银联业务

如何解决错误“请求的URL被拒绝”