2016-02-26 1 views
2

Я довольно новичок в SagePay, поэтому некоторые советы по этому вопросу будут замечательными. Я не в той части, где вы вставляете данные своей карты, на самом деле im на шаге после этого, где SagePay требует проверки пароля 3DSecure.SagePay Direct 3DSecure checkout part возвращает пустую страницу при перенаправлении в банк

Теперь в документах указывается, что нам нужна форма, которая автоматически отправляется в ACSURL, состоящую из полей PaReq и MD (через почту).

Ниже приведено изображение того, что мой выход.

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

You» у вас есть пробелы в поле 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> 
Смежные вопросы