【问题标题】:SagePay Direct 3DSecure checkout part returning blank page when redirecting out to bankSagePay Direct 3DSecure 结帐部分在重定向到银行时返回空白页
【发布时间】:2016-02-26 16:37:11
【问题描述】:

我对 SagePay 还很陌生,所以对此有一些建议会很棒。我超出了您插入卡详细信息的部分,实际上我在 SagePay 要求 3DSecure 密码验证之后的步骤。

现在文档指定我们需要一个自动提交到 ACSURL 的表单,该表单由 PaReq 和 MD 字段组成(通过帖子)。

下面是我的输出的图像。

现在,这看起来就像任何 sagepay 工具包为此特定步骤提供的任何演示版一样,提交表单后,我希望被重定向到要在此 url 填写的表单:https://test.sagepay.com/mpitools/accesscontroler?action=pareq

但是,如果我手动发送表单(从 iframe 外),我收到的只是一个空白的白屏,而每当表单在 iframe 内自动提交时,我收到的只是一个 404。

我在这里遗漏了什么吗?因为我应该在回扣之前的密码插入部分,以便我更新订单以完成。

这是我在视图文件中调用 IFrame 的地方:

<div class="row">
    <div class="col-xs-12">
        <iframe src="/cart/iframe?ACSURL=<?=trim(htmlentities($ACSURL))?>&PaReq=<?=trim(htmlentities($PaReq))?>&vendorTxCode=<?=$vendorTxCode?>&MD=<?=trim(htmlentities($MD))?>" name="3DIFrame" id="3DIFrame" width="100%" height="500" frameborder="0"></iframe>
    </div>
</div>

如果有帮助的话,这里是我传入 IFrame 的代码:

<script>
    function OnLoadEvent() {
        document.form.submit();
    }
</script>
<html>
    <head>
        <title>3D Secure Verification</title>
    </head>
    <body OnLoad="OnLoadEvent()">
        <form name="cardToken" action="<?=$_GET['ACSURL']?>" method="post">
            <input type="hidden" name="MD" value='<?=$_GET['MD']?>' />
            <input type="hidden" name="PaReq" value='<?=$_GET['PaReq']?>' />
            <input type="hidden" name="TermUrl" value='<?=trim(htmlentities('http://localhost/cart/complete_3d?vendorTxCode='.$_GET['vendorTxCode']))?>' />
            <button type="submit btn btn-primary">Submit</button>
            <noscript>
                <div style="text-align: center; margin: 0 auto;">
                    <p>Please click button below to Authenticate your card</p>
                    <input type="submit" value="Go"/>
                </div>
            </noscript>
        </form>
    </body>
</html>

谢谢

【问题讨论】:

    标签: php opayo


    【解决方案1】:

    您的 PaReq 字段中有空格 - 用 + 替换它们

    【讨论】:

      【解决方案2】:

      您的服务器假定查询字符串中的参数已编码,因此它将 PaReq 中的“+”符号转换为空格。

      解决方案:使用urlencode 而不是htmlentities

      <div class="row">
          <div class="col-xs-12">
              <iframe src="/cart/iframe?ACSURL=<?=trim(urlencode($ACSURL))?>&PaReq=<?=trim(urlencode($PaReq))?>&vendorTxCode=<?=$vendorTxCode?>&MD=<?=trim(urlencode($MD))?>" name="3DIFrame" id="3DIFrame" width="100%" height="500" frameborder="0"></iframe>
          </div>
      </div>
      

      【讨论】:

        猜你喜欢
        • 2019-12-12
        • 2018-02-10
        • 1970-01-01
        • 2020-01-31
        • 2016-10-20
        • 1970-01-01
        • 2014-11-16
        • 2020-02-10
        • 1970-01-01
        相关资源
        最近更新 更多