2016-02-26 106 views
2

我對SagePay相當陌生,所以對此有些建議會很好。我超出了你插入你的卡片細節的部分,事實上,在這之後,SagePay要求3DSecure密碼驗證。SagePay Direct 3DSecure結算部分重定向銀行時返回空白頁面

現在文檔指定我們需要一個自動提交給由PaReq和MD字段組成的ACSURL的表單(通過發佈)。

下面是我的輸出圖像。

enter image description here

現在,這看起來就像是由任何sagepay套件這一特定步驟,當提交表單我希望被重定向到一個形式,在這個網址填寫提供任何演示者:https://test.sagepay.com/mpitools/accesscontroler?action=pareq

但是,我收到的是一個空白的白色屏幕,如果我手動發送表單(從iframe中)和404在窗體在iframe中自動提交時發送。

我在這裏錯過了什麼嗎?因爲我應該在回扣前的密碼插入部分,以允許我更新要完成的訂單。

這裏就是我把我的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> 

感謝

回答

0

你」您的PaReq字段中有空格 - 用+

0

替換它們您的服務器假定參數在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>