Php SagePay Direct 3DSecure结账部件在重定向到银行时返回空白页

Php SagePay Direct 3DSecure结账部件在重定向到银行时返回空白页,php,opayo,Php,Opayo,我是SagePay的新手,因此在此方面提供一些建议将是非常好的。我不在你插入信用卡详细信息的部分,事实上,我在这之后的步骤中,SagePay要求3DSecure密码验证 现在,文档指定我们需要一个表单,该表单自动提交给ACSURL,由PaReq和MD字段组成(通过post) 下面是我的输出的图像 现在,这看起来就像任何sagepay工具包为这一特定步骤提供的任何演示一样,当提交表单时,我希望被重定向到一个表单,以在以下url处填写: 但是,如果我手动发送表单(从iframe中发送),我收到的只

我是SagePay的新手,因此在此方面提供一些建议将是非常好的。我不在你插入信用卡详细信息的部分,事实上,我在这之后的步骤中,SagePay要求3DSecure密码验证

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

下面是我的输出的图像

现在,这看起来就像任何sagepay工具包为这一特定步骤提供的任何演示一样,当提交表单时,我希望被重定向到一个表单,以在以下url处填写:

但是,如果我手动发送表单(从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>


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

您的服务器假定querystring中的参数已编码,因此它将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>

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