一些发卡行拒绝 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-urlencoded
。 multipart/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 请求[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何写一个C或Java应用程序来处理TCP SYN请求[关闭]