【问题标题】:3DSv2 Sagepay Direct Integration 'page not found' after correct challenge正确挑战后 3DSv2 Sagepay 直接集成“找不到页面”
【发布时间】:2019-12-10 11:47:31
【问题描述】:

我们为即将推出的 3DSv2 支付卡支票配置了测试。 test.sagepay.co.uk 服务器响应一个找不到“https://test.sagepay.com/html_challenge_answer”的页面,这是他们对正确质询的响应。

有没有其他人在他们的 4.00 版实现中成功测试过这个?

<form action="https://test.sagepay.com/3ds-simulator/html_challenge" name="threed1form" method="post">

    <input type="hidden" name="creq" value="ewogICJtZXNzYWdlVHlwZSIgOiAiQ1JlcSIsCiAgIm1lc3NhZ2VWZXJzaW9uIiA6ICIyLjEuMCIsCiAgInRocmVlRFNTZXJ2ZXJUcmFuc0lEIiA6ICI0NzE3Nzc3Yi0yYjA3LTQzOGQtYWU1OS0xNjE2NzFiNzJkYTAiLAogICJhY3NUcmFuc0lEIiA6ICJkMjBlMTQyZC1lYWEyLTRjMTMtYTAyYy1jN2EwMmZmNDMyMDgiLAogICJjaGFsbGVuZ2VXaW5kb3dTaXplIiA6ICIwMSIKfQ"/>

    <input type="hidden" name="threeDSSessionData" value="{39D1BC2D-AC1D-8267-753E-2AEDB9E2DE9D}"/>

    <input type="hidden" name="ThreeDSNotificationURL" value="https://sss.xxxx.eu/3DCallback.asp"/>

    Click the button below :-<br> 
    <input type="submit" value="Go 3DS "/>

【问题讨论】:

    标签: opayo 3d-secure


    【解决方案1】:

    今天早上与 SagePay 交谈,

    他们最终意识到了这个问题,但他们无法说何时可以解决这个问题。

    此外,他们无法确认 V4.00 直接集成何时可以在实时服务器上使用。

    希望对你有帮助

    更新

    @史蒂夫温。 &@KH S.

    您的回答帮助并促进了前进。赞赏。

    在与 sagepay 交谈时,他们无法说明 2019 年 9 月 14 日究竟会发生什么,他们认为银行自己到那时可能还没有准备好实施。

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      上面提到的 html_challenge 页面现在可以工作了。

      我在 term_url/3D 安全回调 URL 上有一个新问题:

      发布到 /direct3dcallback.vsp 时,我收到以下错误。有没有人设法端到端测试?我相当确定我的 VPSTxId 是正确的。

      VPSProtocol: 3.00 状态: INVALID StatusDetail: 5083 : VpsTxId 回调中提供的与 CRes 中的事务不匹配

      【讨论】:

        【解决方案3】:

        @SteveWinn,我遇到了和你一样的问题。我很确定我的 VPSTxId 是正确的并且得到了同样的错误。我想知道 /direct3dcallback.vsp 是否没有更新到 4.00,因为它正在响应 3.00?

        更新:

        在遇到@SteveWinn 报告的完全相同的问题后,我给 sage 打了一个电话。他们建议在将 VPSTxId 发送到“/direct3dcallback.vsp”时删除其开头和结尾的大括号。我认为这是一个有点或奇怪的建议,因为 vspdirect-register.vsp 首先添加了大括号,但我删除了它们,一切都恢复了活力。

        简而言之,要修复,将 VPSTxId 返回为: abc123-4567-FG5F-DFESDFR12243 不是 {abc123-4567-FG5F-DFESDFR12243}

        【讨论】:

          【解决方案4】:

          看看这个帖子:Direct Protocol 4.00: PDS2 - 5083: VpsTxId provided in callback does not match transaction in CRes

          看起来我们需要从 VPSTxId 中删除大括号。

          一旦您向https://test.sagepay.com/3ds-simulator/html_challenge 发帖,挑战窗口就会出现。完成挑战。挑战完成后,您需要从银行发布的数据中读取 cres 和 VPSTxId。这将到达您随付款请求提供的 ThreeDSNotificationURL。

          我在 Modal 中使用 iFrame 执行此操作。 iFrame 加载我的第一个页面,其中包含银行的发布数据。然后是挑战窗口,然后是我的 ThreeDSNotificationURL,它读取帖子数据(来自银行),如果成功发送到感谢页面,则从 iframe 中分离出来。

          希望这会有所帮助。

          Smitthhy,刚刚在这里看到了你的上一篇文章。 这里我如何为 3DSecure v2 做到这一点:

          I get the SagePay response.
          If the payment get challenged I redirect to a page which handles that.
          That page has the modal with an iFrame.
          The iFrame loads another page which I show here:
          
          <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ChallengeiFrame.aspx.cs" Inherits="ac_ChallengeiFrame" %>
          
          <html xmlns="http://www.w3.org/1999/xhtml">
          <head id="Head1" runat="server">
          <title></title>
          </head>
          <body>
            <div id="content">
            <div id="contentHeader">
               Your Bank requires Authentication
            </div>
               <p>
               Please click the button below to continue.
               </p>
          
               <form action="<%= sACSUrl %>" method="post">
               <input type="hidden" name="creq" value="<%= sCReq %>" />
               <input type="hidden" name="threeDSSessionData" value="<%= sVPSTxId   %>" />
                <input type="submit" value="Click to continue" />
               </form>
               </div>
           </body>
           </html>
          

          客户点击发布到 SagePay 的按钮(我没有自动发布版本。我宁愿让客户知道接下来会发生什么,这样他就不会对那个挑战窗口感到惊讶)发布到 SagePay(请参阅隐藏字段和表格对 ACSURL 的操作。

          来自 SagePay 的响应被我作为 3DSecure v2 的 ThreeDSNotificationURL 提交的页面获取。 该页面处理响应并完成订单。

          希望这会有所帮助。

          【讨论】:

          • 嗨,史密斯,我认为你最好用你的问题开始一个新的帖子。会更容易回复。我认为,如果您开始提出问题,则可以在答案中添加评论。我没有足够的分数来评论你的“答案”,这实际上是一个问题。这里的页面有点乱。然后,您还可以发布到目前为止的代码。
          【解决方案5】:

          KH-S,或任何在 SagePay Direct 上有 3dS 工作示例的人。

          我真的很难遵循 SagePay 直接集成协议 4 文档。

          我真正陷入困境的是如何设置 iFrame 并让它自动提交。

          您能否提供一些基本代码示例来说明您的工作方式。 SagePay 文档有以下代码:

          <iframe src="3DRedirect.asp" name="3Diframe"> <form action="${acsUrl}" method="post">
          <input type="hidden" name="creq" value="${creq}" />
          <input type="hidden" name="threeDSSessionData" value="${threeDSSessionData}" /> <p>Please click button below to proceed to 3D secure.</p>
          <input type="submit" value="Go"/>
          </form> </iframe>
          

          但没有说明 iFrame 的来源,或如何使 iFrame 自动提交。

          我确信有很多人试图在接下来的几周内实施这些更改。

          感谢 KH-S 我在 3DSv2 Sagepay Direct Integration basics 发布了一个新问题

          【讨论】:

            【解决方案6】:

            KH-S 非常感谢。

            因此,如果 Sage 请求 3D 身份验证,您使用 iFrame 为您的客户打开一个页面,iFrame 的源是由您在帖子中显示的脚本创建的?

            您如何处理回退到 3DSv1,即 PAReq 和 MD 而不是 CReq 和 VPSTxId。

            您是否根据 CReq VPSTxId 或 PAReq MD 的内容来确定要为 iFrame 构建的表单,即您确定您面临 3DSv1 还是 3DSv2 挑战的依据是什么?

            我倾向于同意最好让客户单击身份验证按钮,这样他们就知道发生了什么,而不仅仅是自动提交表单。

            【讨论】:

              猜你喜欢
              • 2020-01-02
              • 2016-09-23
              • 2020-10-01
              • 1970-01-01
              • 1970-01-01
              • 2019-10-11
              • 1970-01-01
              • 1970-01-01
              • 2022-07-12
              相关资源
              最近更新 更多