【问题标题】:Opayo 3ds2 - sagepay PI integration rsa3dsauth.co.uk fails to return the threeDSSessionDataOpayo 3ds2 - sagepay PI 集成 rsa3dsauth.co.uk 无法返回三个DSSessionData
【发布时间】:2021-06-08 11:43:08
【问题描述】:

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>

我们回来了

POST https://xxxxx.xxxxxxx.xxx/api/payment/3dsecurechallenge?eid=ctl00_cphMain_Payment_SagePay_ThreeD 
cres=*removed for data protection*&threeDSSessionData=

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

documentation 说:

还有其他人有这个问题吗?

【问题讨论】:

  • 我们也遇到了同样的问题。假设是 3DS 提供商在传输过程中丢弃了数据,导致无法继续交易。 Opayo 对 3DS 供应商几乎没有影响力,几个月过去了类似的问题,但没有解决。
  • 想通了,这是由于误导性文档。 Base64 和 URL 编码不是他们想要的,它是 base64url 编码,这是一种不同的编码。这是 EMV 3DS 2.0 规范的一部分。 base64.guru/standards/base64url

标签: opayo 3ds


【解决方案1】:

threeDSSessionData 似乎是输入标签中的 URL 编码。您是否在没有 URL 编码的情况下尝试过这个?我相信它应该只使用 base64 编码。

【讨论】:

  • 是的,我们试过了。文档说 Base64 然后 URLEncode 它,但它是表单的一部分,所以无论如何都会得到 URLEncoded,所以我们删除了它,所以它不会双重编码,但它没有任何区别。
【解决方案2】:

只是为了添加更多上下文 - 我们遇到了同样的问题,但只是在 6 月初的 rsasecure.co.uk 上。其他银行工作正常。我们与 Opayo 有一个关于这方面的未决案件,但没有进行太多沟通。

我们在发生此问题时关闭了 3DS,但我们建议您今天 (23.07.21) 再试一次,因为这可能是银行方面的问题。

【讨论】:

  • 通常情况下,如果我正在调查问题,rsasecure 几乎总是使用中的 3d 身份验证器
【解决方案3】:

我现在收到了来自 Opayo 的回复。我也认为他们可能已经改变了一些东西,因为我很肯定我之前尝试过但它没有用......

threeDSSessionDataVPSTxId 的base64 编码(包括花括号)。它不是 base64url 编码 - 谈论 url 编码是一个巨大的红鲱鱼,因为浏览器自动提交处理这个而不需要我们做任何事情。


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

我 curl 将卡片详细信息发布到 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

我将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>

然后客户将执行必要的 gubbins,回调 URL 将发布类似于以下内容的内容

cres=ewogICJtZXNzYWd...OiAiWSIKfQ
threeDSSessionData=ezFGM0Y4MDE1LUZGRUItRTg5Ny0wNjQzLTU4ODQxQUQ1REIwM30=

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

VPSTxId={1F3F8015-FFEB-E897-0643-58841AD5DB03}
CRes=ewogICJtZXNzYWd...OiAiWSIKfQ

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

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


编辑:原始回复

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

【讨论】:

  • 我已将此上报至 SagePay/Opayo 进行调查
  • 我已经向 Opayo 提供了针对客户帐户的通话记录,但已经两周没有回复,他们需要 30 分钟才能接听电话。我不确定下一步该怎么做。为客户提供不同的网关,但数量很多。任何人有任何建议。
  • 我刚刚让一些 cmets 回来尝试一些事情。简而言之,我认为他们有一个错误,但需要通过他们的建议才能真正证明这一点。他们的客户支持速度非常糟糕——我们每个月要处理数千个订单并得到这个,我觉得他们只是没有足够的员工。
  • @PeteAUK 你解决过这个问题吗? threeDSSessionDataVPSTxId 实际上是否需要进行 base64 编码?他们的文档太糟糕了。自相矛盾。我就是无法通过 3DS v2 交易。
猜你喜欢
  • 2022-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-02
  • 2022-08-11
  • 2013-11-18
相关资源
最近更新 更多