indiLingua();
if($this->demo){
$this->numeroCommerciante = '9999888';
$this->userID = '9999888_BIOSINF';
$this->stabilimento = '99888';// oppure 99988
$this->password = 'YcVqywtw1';
$this->secret = 'b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1';
}
switch($_GET[$this->step_var]){
default:
$this->Procedura->iniziato($this->nome_metodo);
$params = array(
//NON CAMBIARE QUESTO ORDINE, E' FISSO NEL CALCOLO DEL MAC
'numeroCommerciante' => $this->numeroCommerciante,
'userID' => $this->userID,
'password' => $this->password,//inoltre si osservi, fatto importante, come non sia necessario (anzi vivamente sconsigliato!) inviare il valore esatto della password dell'utente (che verrà invece rimpiazzata dal sistema in ricezione, per la verifica), evitando di inviare in rete dati sensibili dell'utente.
'numeroOrdine' => $this->identificativo,
'totaleOrdine' => round(floatval(str_replace(",", ".", $this->importo)) * 100),
'valuta' => '978',
'flagDeposito' => 'Y',//N = autorizzazione manuale
'urlOk' => $this->Procedura->genera_link_agg(array($this->step_var=>"return_ok")),
'urlKo' => $this->Procedura->genera_link_agg(array($this->step_var=>"return_ko")),
'tipoRispostaApv' => 'Wait',//oppure 'Click'
'flagRiciclaOrdine' => 'Y',//Indica se si intende riutilizzare un identificativo ordine che fa riferimento ad un precedente ordine abbandonato
'stabilimento' => $this->stabilimento,
);
$params['mac'] = $this->calcolaMacUnicreditPagOnline($params);
$params['password'] = rand(0,99999999);
//facoltativi non vanno inserite nel calcolo mac
$params['emailCompratore'] = $this->cliente_email;
$params['langCompratore'] = $this->lingua;
if($this->tipoPagamento) $params['tipoPagamento'] = $this->tipoPagamento;
$params['causalePagamento'] = substr($this->descrizione, 0, 90);
// echo '';
// print_r($params);
// die;
$this->Procedura->redirect("https://pagamenti.unicredito.it/initInsert.do?".http_build_query($params));
break;
case 's2s':
$params = array();
foreach($_GET as $k=>$v) if(!in_array($k, array('indi_rew1','l','p','1','2',$this->Procedura->metodo_var,$this->step_var))){
$params[$k] = stripslashes($v);
}
// $params:
// Array
// (
// [TIMECREATED] => 28.05.2014 14:22:18
// [statoattuale] => AB
// [PREVIOUSSTATE] => indefinito
// [CURRENTSTATE] => AB
// [tipomessaggio] => PAYMENT_STATE
// [DESCRIZIONE] => w
// [datacreazione] => 28.05.2014 14:22:18
// [stabilimento] => 99888
// [MerchantNumber] => 9999888
// [descrizione] => w
// [OBJECT] => PAYMENT
// [TIMEGENERATED] => 28.05.2014 14:31:11
// [MERCHANTNUMBER] => 9999888
// [statoprecedente] => indefinito
// [MERCHANTACCOUNT] => 999988801
// [numeroOrdine] => yt7zfip840
// [numeroCommerciante] => 9999888
// [datagenerazione] => 28.05.2014 14:31:11
// [ORDERNUMBER] => yt7zfip840
// [Stabilimento] => 99888
// [mac] => LRdw9jCLotwxKGj07gYtFg==
// [MAC] => b9gPgM2uY+kvQLJkJwRCfg==
// )
$params_per_mac = array();
foreach($params as $k=>$v){
if($k == 'mac') break;//"tutto ciò che si trova a sinistra del MAC è stato utilizzato per il calcolo del MAC stesso"
$params_per_mac[$k] = $v;
}
$identificativo = $params['numeroOrdine'];
if($params['mac'] == $this->calcolaMacUnicreditPagOnline($params_per_mac)){
$stati = array(
"ON" => "ordine inserito nuovo",
"RO" => "ordine inserito richiesto",
"IN" => "ordine inserito in attesa di input del cliente",
"AR" => "ordine in attesa di risposta dal circuito autorizzativo",
"OK" => "ordine autorizzato e in attesa di conferma",
"KO" => "ordine non autorizzato",
"IC" => "ordine confermato",
"CO" => "ordine contabilizzato definitivo",
"AB" => "ordine abbandonato definitivo",
"ST" => "ordine stornato",
"EX" => "ordine scaduto",
"IP" => "ordine in rimborso parziale",
"IT" => "ordine in rimborso totale",
"CP" => "ordine rimborsato parzialmente definitivo",
"CT" => "ordine rimborsato totalmente definitivo",
"RC" => "rimborso cancellato definitivo",
"indefinito" => "indefinito",
);
$comunicazione = $stati[$params['statoprecedente']] . " > " . $stati[$params['statoattuale']] . " (" . $params['descrizione'] . ")";
$this->Procedura->comunicazione_s2s($identificativo, $comunicazione);
if($params['statoattuale'] == 'OK' || $params['statoattuale'] == 'IC'){
$this->Procedura->confermato($identificativo);
}
}
else{
$body = "ERRORE VERIFICA FIRMA DELLA COMUNICAZIONE S2S";
foreach($params as $k=>$v) $body .= "\n| $k:\t$v";
$this->Procedura->comunicazione_s2s($identificativo?$identificativo:$this->identificativo, $body);
$body .= "\nhttp://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI] " . date ("d-M-Y H:i:s", mktime()) . " " . __FILE__ . " " . __LINE__;
$body .= "\n\n" . print_r(array('$_GET'=>$_GET, '$_POST'=>$_POST, '$_SERVER'=>$_SERVER, '$_SESSION'=>$_SESSION), TRUE);
mail("carlo@tnx.it", "ERRORE S2S ".$this->nome_metodo, $body);
}
break;
case 'return_ok':
return $this->Procedura->concluso();
break;
case 'return_ko':
//qui arriva se preme "indietro" dalla pagina della banca
return $this->Procedura->annulla();
break;
}
}
function indiLingua(){
//it, en, de, fr, es
switch($GLOBALS['DATI']["lang"]) {
case "ita":
$this->lingua = "it";
break;
case "fra":
$this->lingua = "fr";
break;
case "spa":
$this->lingua = "es";
break;
case "ger":
$this->lingua = "de";
break;
default:
$this->lingua = "en";
break;
}
}
}
?>