identificativo sia sufficiente univoco altrimenti metodi che richiedono che sia unico potrebbero bloccarsi facilmente< var $uniqueID_cifre_timestamp = 10; var $pulisciUniqueID = true;//per creare l'unique id toglievo dei caratteri, questo ha generato un problema quando sono arrivate le s2s e non sono potuto risalire all'identificativo originale var $uniqueID_separator = "_";//SINGOLO CARATTERE (gli id spesso hanno vincoli di lunghezza e ci vado sempre preciso, metterne due potrebbe essere un casino!) var $restart_params = array();//parametri da resettare (genera_link) per pulire l'url in caso di restart var $metodo_key;//la chiave usata nell'array metodi per questo metodo var $controllaConfermatoInStep = ['s2s']; var $confermabile = true;//il metodo ha una procedura di conferma automatica (nei contanti è false), lo split payment tramite credito non può usare metodi non confermabili var $loadingImg = '
'; function demoInfo(){ return ''; } function ignoreSetupError(){ //necessario SOLO in caso di url s2s statici tipo bancasella, unicredit e ideal (non implementato su ideal) //if(in_array($_GET[$this->step_var], array('s2s', 'return_ok'))) return true; return false; } function pulisciOutput(){//se non si deve produrre output in uno step s2s (vesuvio ha due ob_start()) while(ob_get_level()) ob_get_clean(); } function identificativoFromUniqueID($uniqueID){ $uniqueID = explode($this->uniqueID_separator, $uniqueID); array_pop($uniqueID);//tolgo il timestamp in fondo return implode($this->uniqueID_separator, $uniqueID); } function uniqueID($max_legnth=99, $ignoraCaratteriIdentificativoPersi = false){ //crea un campo uniqueid mescolando prefisso_identificativo e timestamp //se non ho un prefisso uso il timestamp completo //strlen(round(microtime(true))) => 10 if($this->identificativo){ $ts = (string)round(microtime(true)); $ts = substr($ts, -1*$this->uniqueID_cifre_timestamp); $id = $this->identificativo; if($this->pulisciUniqueID){ $id = preg_replace("/[^\d\w-_]/ims", "", $this->identificativo, -1, $count); if($count) trigger_error("Qui c'è del codice malfatto che ha tolto dei caratteri creando lo uniqueID (".$this->identificativo." > $id), potrebbero esserci dei problemi a riassociare la chiamata S2S con l'ordine"); } $lunghezzaMassimaId = $max_legnth-1-$this->uniqueID_cifre_timestamp; if(strlen($id) > $lunghezzaMassimaId){ if(!$ignoraCaratteriIdentificativoPersi) trigger_error("Devo trimmare l'identificativo, la s2s non funzionerà. Devi usare un identificativo più corto o impostare meno cifre di timestamp perchè il fornitore in tutto vuole al massimo $max_legnth cifre"); $id = substr($id, 0, $lunghezzaMassimaId); } $trackid = $id.$this->uniqueID_separator.$ts; } else $trackid = substr(preg_replace("/[^0-9]/ims", "p", microtime(true)), 0, $max_legnth); return $trackid; } function autoSubmitForm($id){ return ""; } function waitForOutcome(){ // print_r_tnx($this->Procedura->isErrore(), 1) || die; if($this->Procedura->isConfermato()){ $this->Procedura->redirect($this->Procedura->genera_link_agg(array($this->step_var=>"return_ok"))); } else if($this->Procedura->isErrore()){ $this->Procedura->redirect($this->Procedura->genera_link_agg(array($this->step_var=>"error")));//non devo tornare alla scelta metodo, non funzionerebbe in webview } else{ return "
Procedura->classeDivContainer."\">
".$this->loadingImg."
In attesa del pagamento su app esterna...
"; } } } ?>