首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sagepay直接升级4.0不会在活动模式下打开3d安全页面

Sagepay直接升级4.0不会在活动模式下打开3d安全页面
EN

Stack Overflow用户
提问于 2022-09-15 13:05:13
回答 1查看 64关注 0票数 0

我正在升级sagepay(opayo)直接从2.23到4.0。升级后,3d安全页面不会在活动模式下打开。

我使用了sagepay直接模式。在给出卡的详细信息后,得到了"Status=3DAUTH“。然后,我重定向到另一个页面,在那里3d安全页面将在iframe中打开。

测试模式检查中的在完全实现后,我已经在测试模式中进行了测试。在测试模式下,成功地出现了“质询”页面并成功地对其进行了验证。付款也成功了。

实时模式测试:当我用soldo虚拟卡在活动模式下测试时,成功地打开了3d安全页面。在批准从soldo应用程序付款后,付款是成功的。一切都完成了。

现在,当我尝试美国运通卡时,它显示了3d安全页面加载屏幕,然后给出了下面的错误。

代码语言:javascript
复制
Oops ! An error occurred!!!
Internal processing Error..!!!

现在我试着用万事达卡付款。在这种情况下,当我重定向到3d安全页面时。没有任何东西会出现在iframe中。它被卡住了。

当我尝试第一次呼叫时,我已经发送了下面的对角线。

代码语言:javascript
复制
$strPost = $strPost . "&Apply3DSecure=0";
$strPost = $strPost . "&AccountType=E";
$strPost = $strPost . "&BrowserAcceptHeader=text/html,application/xhtml+xml,application/xml&BrowserColorDepth=24&BrowserJavaEnabled=1&BrowserJavascriptEnabled=1&BrowserLanguage=en-GB&BrowserScreenHeight=1080&BrowserScreenWidth=1920&BrowserTZ=%2B300&BrowserUserAgent=Mozilla&ChallengeWindowSize=01";

$strPost = $strPost . "&ThreeDSNotificationURL=".$strYourSiteFQDN."3DCalBack.php?pagename=transactionRegistration.php&VendorTxCode=".$strVendorTxCode;

$strPost = $strPost ."&COFUsage=FIRST&InitiatedType=CIT&MITType=UNSCHEDULED";

ACSURL提交表格

代码语言:javascript
复制
<form name="form" action="{$ACSURL}?creq=".$strCReq" method="POST">
    <input type="hidden" name="PaReq" value="{$strPAReq}"/>
    <input type="hidden" name="creq" value="{$strCReq}"/>
    <input type="hidden" name="TermUrl" value="{$TermUrl}?VendorTxCode={$strVendorTxCode}"/>
    <input type="hidden" name="MD" value="{$strMD}"/>
    <input type="hidden" name="VPSTxId" value="{$strVPSTxId}"/>
    <input type="hidden" name="mode" value="secure3d"/> 
</form>

请帮我得到固定的3d安全页面。

EN

回答 1

Stack Overflow用户

发布于 2022-09-21 03:40:59

首先,确保这不是一个无摩擦的身份验证。来自文档

对于无摩擦认证,3D安全方案拥有足够的关于持卡人的信息,以提供即时的身份验证结果。当认证过程完成后,事务将提交授权。

也就是说,需要请求代码并将其重定向到三维安全页面(或者在iframe中显示)。如果有必要,您可以在对Apply3DSecure=1的初始请求中使用SagePay参数,以便始终强制进行三维安全检查。

其次,对于三维安全v2重定向,表单字段的列表应该是:

代码语言:javascript
复制
<form action="{$ACSURL}" method="post">
      <input type="text" name="ACSTransID" value="{$strACSTransID}" />
      <input type="text" name="creq" value="{$strCReq}" />
      <input type="text" name="TermUrl" value="{$TermUrl}?VendorTxCode={$strVendorTxCode}" />
</form>

所有数据都应该是后期发布的,您应该从响应到初始请求的过程中包含ACSTransID值。注意:字段PaReqMD与三维安全v1相关.如果出于某种原因,您希望保持向后兼容性,那么您当前的集成应该是很好的。在这种情况下,您可以检查初始请求的响应:

  • 如果它包含CReqACSTransID字段,那么SagePay需要通过v2协议进行通信。
  • 如果有PaReqMD字段,那就是v1协议

然而,3D安全v1将于2022年10月15日被撤回.所以很显然,保持向后兼容性是不必要的。

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

https://stackoverflow.com/questions/73731694

复制
相关文章

相似问题

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