Opayo 3ds2 - sagepay PI 集成 rsa3dsauth.co.uk 无法返回 ThreeDSSessionData

Daw*_*awn 5 3ds opayo

Opayo 从我们的付款请求中返回,要求我们联系https://www.rsa3dsauth.co.uk/3ds2/cReqWebBased?issuer=barclays”进行 3D 安全身份验证,因此我们发送以下内容:

<form id="c-form" method="POST" action="https://www.rsa3dsauth.co.uk/3ds2/cReqWebBased?issuer=barclays">
  <input type="hidden" name="creq" value="*removed for data protection*" />
  <input type="hidden" name="threeDSSessionData" value="tQtpVHCcCVGEhPNDaeCtMK9I%2fREJERnarovmuZPsM4M6xy6gks9rOYix36waoxOn1wukcobCFbfd2jpmVDVDwZjrd3MzJtmpyFDEAu5R9azVveH6kBEXc5F2ETnFijQfEj5l6EzmH7EnMzbTlFHgbkDGR%2fH9CtURo0K2VSUKHN4%3d" />
  <script>
    document.addEventListener("DOMContentLoaded", function()
    {
      var b = document.getElementById("c-form");
      b && b.submit();
    });
  </script>
</form>
Run Code Online (Sandbox Code Playgroud)

我们回来了

POST https://xxxxx.xxxxxxx.xxx/api/payment/3dsecurechallenge?eid=ctl00_cphMain_Payment_SagePay_ThreeD 
cres=*removed for data protection*&threeDSSessionData=
Run Code Online (Sandbox Code Playgroud)

请注意,下面没有任何内容&threeDSSessionData=,它应该将字符串返回给我们。

文档在此输入图像描述

还有谁有相同的问题吗?

Pet*_*AUK 0

我现在收到了 Opayo 的回复。我还认为他们可能已经改变了一些东西,因为我确信我之前尝试过这个,但它不起作用......

threeDSSessionDataVPSTxId是(包括花括号)的 base64 编码。它不是base64url 编码的——谈论 url 编码是一个巨大的转移注意力的话题,因为浏览器自动提交会处理这个问题,而我们不需要做任何事情。


这是一个对我有用的例子。

我将卡片详细信息发布到vpsdirect-register.vsp(或您使用的任何口味)。其中必须包含一个ThreeDSNotificationURL包含回调页面 URL 的值。

收到以下答复。

Status=3DAUTH
StatusDetail=StatusDetail=2021 : Please redirect your customer to the ACSURL, passing CReq.
VPSTxId={1F3F8015-FFEB-E897-0643-58841AD5DB03}
ACSURL=https://test.sagepay.com/3ds-simulator/html_challenge
CReq=ewogICJtZXNzY...iA6ICIwNSIKfQ
Run Code Online (Sandbox Code Playgroud)

我将VPSTxId值进行 base64 编码为一个threeDSSessionData值,并让客户浏览器自动提交以下表单

<form action="https://test.sagepay.com/3ds-simulator/html_challenge" method="post" id="autopostform">
<input type="hidden" name="threeDSSessionData" value="ezFGM0Y4MDE1LUZGRUItRTg5Ny0wNjQzLTU4ODQxQUQ1REIwM30=">
<input type="text" name="creq" value="ewogICJtZXNzY...iA6ICIwNSIKfQ">
</form>
Run Code Online (Sandbox Code Playgroud)

然后,客户将执行必要的 gubbin 操作,并且回调 URL 将发布类似于以下内容的内容

cres=ewogICJtZXNzYWd...OiAiWSIKfQ
threeDSSessionData=ezFGM0Y4MDE1LUZGRUItRTg5Ny0wNjQzLTU4ODQxQUQ1REIwM30=
Run Code Online (Sandbox Code Playgroud)

这两个值都是 base64 编码的(实际上包含原始响应中的cres值)。acsTransID现在,我们需要将threeDSSessionData后面的内容进行 Base64 解码VPSTxId,然后将其与(仍编码的)cres值一起进行卷曲发布。

VPSTxId={1F3F8015-FFEB-E897-0643-58841AD5DB03}
CRes=ewogICJtZXNzYWd...OiAiWSIKfQ
Run Code Online (Sandbox Code Playgroud)

希望这会给我们一个成功的回应并且交易应该能够完成。

简而言之,这是一个完整的皮塔饼。实际上,编码元素应该通过 Opayo 的 API 来处理,而不是我们需要对其进行编码。


编辑:原回复

是的!上周我们用 3DSv2 切换到 v4,有几十名客户报告说他们尝试付款,但基本上只是返回结账处。现在正在寻找巴克莱银行的一个,但也有其他的 - 包括他们 3dauth 并且根本不会返回到我们的结帐处的一个......