首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Opayo 3ds2 - sagepay PI集成rsa3dsauth.co.uk返回threeDSSessionData失败

Opayo 3ds2 - sagepay PI集成rsa3dsauth.co.uk返回threeDSSessionData失败
EN

Stack Overflow用户
提问于 2021-06-08 19:43:09
回答 3查看 339关注 0票数 2

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

代码语言:javascript
复制
<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>

然后我们就回来了

代码语言:javascript
复制
POST https://xxxxx.xxxxxxx.xxx/api/payment/3dsecurechallenge?eid=ctl00_cphMain_Payment_SagePay_ThreeD 
cres=*removed for data protection*&threeDSSessionData=

注意,&threeDSSessionData=后面没有任何东西,它应该将字符串返回给我们。

documentation说:

还有谁有这个问题吗?

EN

回答 3

Stack Overflow用户

发布于 2021-06-25 04:42:38

threeDSSessionData似乎是在输入标记中编码的URL。你在没有URL编码的情况下尝试过吗?我认为它应该只是base64编码的。

票数 1
EN

Stack Overflow用户

发布于 2021-07-23 22:56:59

只是添加一些更多的上下文-我们有同样的问题,但只有在6月初的rsasecure.co.uk。其他银行运作正常。关于这一点,我们与Opayo有一个公开的案例,但没有太多的沟通。

当此问题发生时,我们关闭了3DS,但已被建议今天(23.07.21)重试,因为这可能是银行方面的问题。

票数 1
EN

Stack Overflow用户

发布于 2021-06-16 18:35:03

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

threeDSSessionDataVPSTxId的base64编码(包括花括号)。它不是base64url编码的--谈论url编码是在转移注意力,因为浏览器自动提交无需我们做任何事情就能处理它。

下面是一个适用于我的示例。

我卷曲地将卡片的详细信息发布到vpsdirect-register.vsp (或您正在使用的任何口味)。这必须包括一个URL值,该值包含回调页的ThreeDSNotificationURL

已收到以下响应。

代码语言:javascript
复制
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

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

代码语言:javascript
复制
<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>

然后,客户将执行必要的gubbins操作,回调URL将包含类似以下内容的内容

代码语言:javascript
复制
cres=ewogICJtZXNzYWd...OiAiWSIKfQ
threeDSSessionData=ezFGM0Y4MDE1LUZGRUItRTg5Ny0wNjQzLTU4ODQxQUQ1REIwM30=

这两个值都是base64编码的( cres实际上包含原始响应中的acsTransID )。现在我们需要将threeDSSessionData解码回一个VPSTxId,然后我们需要将它与(仍然编码的) cres值一起进行curl post。

代码语言:javascript
复制
VPSTxId={1F3F8015-FFEB-E897-0643-58841AD5DB03}
CRes=ewogICJtZXNzYWd...OiAiWSIKfQ

希望这会给我们一个成功的响应,交易应该会通过。

简而言之,这是一个完整的皮塔。实际上,编码元素应该通过Opayo的API来处理,而不是我们自己编写代码。

编辑:原始回复

是!上周,我们浏览了3DSv2的v4,已经有几十个顾客报告他们试图付款,基本上就是回到了收银台。现在正在为巴克莱银行寻找一个,但也有其他的-包括一个他们3dauth和根本没有返回到我们的收银台……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67886233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档