'', 'regione' => '', 'codAut' => '', 'alias' => '', 'orario' => '', 'data' => '', 'mac' => '', 'importo' => '', '$BRAND' => '', 'tipoProdotto' => '', 'cognome' => '', 'languageId' => '', 'pan' => '', 'nazionalita' => '', 'divisa' => '', 'email' => '', 'scadenza_pan' => '', 'esito' => '', 'codTrans' => '', 'nome' => '', 'messaggio' => '', //nuovi da transazione 5/11/2018 (nexi italiandesigncontract) 'mail' => '', 'brand' => '', 'codiceEsito' => '', 'codiceWallet' => '', 'tipoTransazione' => '', 'tipo_richiesta' => '', 'aliasEffettivo' => '', 'OPTION_CF' => '', 'TCONTAB' => '', //per operazioni di registrazione carta 'trnexi' => '', 'merchantnumber' => '', 'tipo_servizio' => '', 'num_contratto' => '', 'hash' => '', ); var $azioniGestioneCartaSenzaTransazione = [/*'RC', 'AC'*/];//nei primi test a volte non faceva addebito, strano var $azioniGestioneCarta = [ 'PP' => 'Paga e salva carta per prossimi pagamenti', 'PR' => 'Utilizza carta salvata precendemente', 'RC' => 'Cambia dati carta salvata', 'NS' => 'Paga senza salvare la carta', // 'AC' => 'Ripeti autorizzazione su carta salvata'// https://ecommerce.nexi.it/specifiche-tecniche/servertoserver/pagamentoricorrente-pagamento1click/aggiornacontratto.html ]; function demoInfo(){ return "Per il pagamento usare numero carta 4539970000000006 (esito ok) 4539970000000014 (esito KO) scadenza 12/30 e cvv casuale, backoffice: https://int-ecommerce.nexi.it/ecomm/web/reporting/ReportLogin.jsp Merchant: 00070862 User: ADMIN Password: 3RU854SJ09 (altre qui)"; } function auto(){ $this->indiLingua(); if($this->demo){ //dati a limaste 24/4/2015 //non funzionano per mazzei il 21/7/2016 (la procedura si avvia ma fallisce il calcolo del mac nella s2s), ho usato quelli vecchi sopra e tutto ok //$this->alias = 'payment_3444153'; //$this->mac = 'TLGHTOWIZXQPTIZRALWKG'; //22/3/2017 a telefono mi hanno comunicato che le credenziali di test scadono dopo essere andati online //con queste (mazzei 2014) ho verificato che si può fare il pagamento ma fallisce la s2s perchè omettono il parametro "mac" con cui fare la verifica // $this->alias = 'payment_testm_urlmac'; // $this->mac = 'esempiodicalcolomac'; // $this->ignoraCalcoloMac = true; //22/3/2017 queste credenziali non dovrebbero scadere mai, l'interfaccia è diversa rispetto mazzei //NON FUNZIONA 3D SECURE // $this->alias = '3444153'; // $this->mac = 'TLGHTOWIZXQPTIZRALWKG'; // $this->url = "https://coll-ecommerce.nexi.it/ecomm/ecomm/DispatcherServlet"; // $this->url = "https://int-ecommerce.nexi.it/ecomm/ecomm/DispatcherServlet"; //01/09/2025 $this->alias = 'ALIAS_WEB_00070862'; $this->mac = 'ALH1PU2RQYHLV3E2RXGHI21O211FBF4F'; $this->url = "https://int-ecommerce.nexi.it/ecomm/ecomm/DispatcherServlet"; // $this->importo = mt_rand(0,1) ? 1 : 0.01; } switch($_GET[$this->step_var]){ default: $params = array( 'alias' => $this->alias, 'importo' => round(floatval(str_replace(",", ".", $this->importo)) * 100), 'divisa' => 'EUR', // codice di identificazione del pagamento composto da caratteri alfanumerici, escluso il carattere #. // Il codice dev’essere univoco per ogni richiesta di autorizzazione, solo in caso di esito negativo // dell’autorizzazione il merchant può riproporre la stessa richiesta con medesimo codTrans per altre 2 // volte, in fase di configurazione l’esercente può scegliere di diminuire i 3 tentativi. 'codTrans' => str_replace("#", "", $this->uniqueID(30)), 'mail' => $this->cliente_email, // url del merchant verso la quale il PG indirizza l’utente al completamento della transazione // passando,in GET, i parametri di risposta con il risultato della transazione. // Si veda il capitolo 7 “Messaggio di notifica on line” (solo se le esigenze del merchant richiedono // questo tipo di esito) 'url' => $this->Procedura->genera_link_agg(array($this->step_var=>"check")),//torna qui anche in caso di autenticazione negata 'url_back' => $this->Procedura->genera_link_agg(array($this->step_var=>"return_ko")), 'urlpost' => $this->Procedura->genera_link_agg(array($this->step_var=>"s2s")), 'languageId' => $this->lingua, ); if($this->idContratto){ if(strlen($this->idContratto) < 5 || strlen($this->idContratto) > 30){ trigger_error("Lunghezza numero contratto errata"); } else if(!$_GET['trnexi']){ $azioni = $this->azioniGestioneCarta; if($this->contrattoAttivo) unset($azioni['PP']); //se il contratto è già registrato da' errore else{ unset($azioni['PR']); unset($azioni['RC']); } $return = '
'. '
'; foreach($azioni as $cod=>$desc) $return .= ''.$desc.''; $return .= '
'. '
'; return $return; } else{ $this->Procedura->iniziato($this->nome_metodo." - ".$this->azioniGestioneCarta[$_GET['trnexi']]); if($_GET['trnexi'] != 'NS'/* non salvare */){ $params['num_contratto'] = $this->idContratto; $params['tipo_servizio'] = 'paga_oc3d'; $params['tipo_richiesta'] = $_GET['trnexi']; } } } else $this->Procedura->iniziato($this->nome_metodo); //mac= HASH SHA(codTrans=divisa=importo=) $params['mac'] = sha1("codTrans=$params[codTrans]divisa=$params[divisa]importo=$params[importo]$this->mac"); $this->Procedura->redirect($this->url."?".http_build_query($params)); break; case 's2s': // $_POST: // Array // ( // [indi_rew1] => ita_pagamento_gateway/descrizione:Mazzei Wine Club /email:l.cappelli@mazzei.it/step:return_ok/ // [session_id] => // [regione] => EUROPE // [codAut] => TESTOK // [alias] => payment_testm_urlmac // [orario] => 160916 // [data] => 20140314 // [mac] => b6bd86dc7289aa1d9ec55415bcdf8b5b64402672 // [importo] => 1 // [$BRAND] => MasterCard // [tipoProdotto] => MASTERCARD - CREDIT - N // [cognome] => c // [languageId] => ITA // [pan] => 525599XXXXXX9992 // [nazionalita] => ITA // [divisa] => EUR // [email] => l.cappelli@mazzei.it // [scadenza_pan] => 201405 // [esito] => OK // [codTrans] => 20140314_160745_u10_1394809746 // [nome] => c // [messaggio] => Message OK // [l] => ita // [p] => pagamento_gateway // [1] => descrizione:Mazzei Wine Club // [descrizione] => Mazzei Wine Club // [2] => email:l.cappelli@mazzei.it // [3] => step:return_ok // [step] => return_ok // [metodo] => carta // ) $params = array(); foreach($_POST as $k=>$v){ $params[$k] = mb_convert_encoding(stripslashes($v), 'UTF-8', 'ISO-8859-1'); } $identificativo = $this->identificativoFromUniqueID($params['codTrans']); //mac= HASH SHA(codTrans=esito= importo=divisa=data=orariocodAut=mac"); if($this->ignoraCalcoloMac || $verifica_mac == $params['mac']){ $this->Procedura->comunicazione_s2s($identificativo, $params['esito']); // $body = ''; // foreach($params as $k=>$v) $body .= "\n| $k:\t$v"; // mail("c@localhost", " OK OK OK OK OK OK", $body); if($params['esito'] == 'OK'){ if($params['tipo_richiesta'] == 'PP'){ if(call_user_func($this->contrattoRegistrato, $params['num_contratto'])){ $this->Procedura->comunicazione_s2s($identificativo, "Contratto registrato"); } else trigger_error("Errore registrazione contratto"); } if(in_array($params['tipo_richiesta'], $this->azioniGestioneCartaSenzaTransazione)) $this->Procedura->comunicazione_s2s($identificativo, "Procedura ".$this->azioniGestioneCarta[$params['tipo_richiesta']]." completata"); else $this->Procedura->confermato($identificativo); } else{ $body = ''; foreach($params as $k=>$v) $body .= "\n| $k:\t$v"; $this->Procedura->comunicazione_s2s($identificativo, $body); } } else if($_POST != ['{}'=>'']){//10/24: nexi sta verificando se le chiamate vengono accettate dal loro nuovo ip pubblico, vedi mail "Messaggi di notifica pagamento vuoti (urlpost)" $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('$_POST'=>$_POST, 'php://input'=>file_get_contents('php://input'), '$_GET'=>$_GET, '$_SERVER'=>$_SERVER, '$_SESSION'=>$_SESSION), TRUE); mail("carlo@tnx.it", "ERRORE S2S ".$this->nome_metodo, $body); } break; case 'return_ok': return $this->Procedura->concluso(); case 'check': // $_GET: // Array // ( // [indi_rew1] => ita_pagamento_gateway/descrizione:Mazzei Wine Club /email:l.cappelli@mazzei.it/step:check/ // [session_id] => // [regione] => EUROPE // [codAut] => TESTOK // [alias] => payment_testm_urlmac // [orario] => 160916 // [data] => 20140314 // [mac] => b6bd86dc7289aa1d9ec55415bcdf8b5b64402672 // [importo] => 1 // [$BRAND] => MasterCard // [tipoProdotto] => MASTERCARD - CREDIT - N // [cognome] => c // [languageId] => ITA // [pan] => 525599XXXXXX9992 // [nazionalita] => ITA // [divisa] => EUR // [email] => l.cappelli@mazzei.it // [scadenza_pan] => 201405 // [esito] => OK // [codTrans] => 20140314_160745_u10_1394809746 // [nome] => c // [messaggio] => Message OK // [l] => ita // [p] => pagamento_gateway // [1] => descrizione:Mazzei Wine Club // [descrizione] => Mazzei Wine Club // [2] => email:l.cappelli@mazzei.it // [3] => step:check // [step] => check // [metodo] => carta // ) //arriva qui anche in caso di pagamento non autorizzato if($_GET['esito'] == 'OK'){ if(in_array($_GET['tipo_richiesta'], $this->azioniGestioneCartaSenzaTransazione)) $this->Procedura->redirect($this->Procedura->genera_link_agg(array_merge($this->restart_params, [$this->Procedura->metodo_step_var => '']))); else $this->Procedura->redirect($this->Procedura->genera_link_agg(array($this->step_var=>"return_ok"))); } else{ $this->Procedura->comunicazione_s2s($this->identificativo, $_GET['messaggio']); return $this->Procedura->errore($_GET['messaggio']); } break; case 'return_ko': //qui arriva se preme "indietro" dalla pagina della banca return $this->Procedura->annulla(); break; } } function indiLingua(){ // ITA Italiano // GER Tedesco // ENG Inglese // JPN Giapponese // SPA Spagnolo // ITA-ENG Italiano/Inglese // FRA Francese switch($GLOBALS['DATI']["lang"]) { case "ita": $this->lingua = "ITA"; break; case "eng": $this->lingua = "ENG"; break; case "fra": $this->lingua = "FRA"; break; case "spa": $this->lingua = "SPA"; break; case "ger": $this->lingua = "GER"; break; default: $this->lingua = "ITA-ENG"; break; } } } ?>