SagePay Direct 3DSecure checkout parte che restituisce una pagina vuota quando si effettua il reindirizzamento verso la banca

Sono abbastanza nuovo per SagePay, quindi qualche consiglio su questo sarebbe fantastico. Sono oltre la parte in cui si inseriscono i dettagli della carta, in realtà im al punto dopo questo in cui SagePay richiede la validation della password 3DSecure.

Ora i documenti specificano che abbiamo bisogno di un module che si sottometta automaticamente all'ACSURL composto dai campi PaReq e MD (via post).

Di seguito un'image di ciò che è il mio risultato.

inserisci la descrizione dell'immagine qui

Ora questo sembra proprio come qualsiasi demo fornito da uno qualsiasi dei kit sagepay per questo particolare passaggio e quando il module viene inviato mi aspetto di essere reindirizzato a un module da compilare a questo URL: https://test.sagepay.com/ mpitools / accesscontroler? action = ParEQ

Tuttavia, tutto quello che sto ricevendo è uno schermo bianco vuoto se invio il module manualmente (fuori da un iframe) e un 404 each volta che il module viene inviato automaticamente all'interno di un iframe.

Mi sto perdendo qualcosa qui? Come dovrei essere nella sezione di inserimento della password prima del contraccolpo per permettermi di aggiornare l'ordine di completamento.

Qui è where chiamo il mio IFrame nel mio file di visualizzazione:

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

Se aiuta qui è il codice che passo nel mio 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> 

Grazie

Hai spazi nel field PaReq – sostituiscili con +

Il server presume che i parametri della QueryString siano codificati, quindi converte i segni "+" in PaReq in spazi.

Soluzione: usa urlencode anziché 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>