require_once($DATI["dir_lib"]."/pagamenti/ProceduraDiPagamento.php"); class ProceduraDaCopiare extends ProceduraDiPagamento{ //log di tutte le operazioni, se non esiste viene creata var $tabella_log = "pagamenti"; var $pulisciUniqueID = false;//la pulizia va fatta "manualmente" altrimenti quando arrivano le s2s non si può risalire all'id originale //i metodi a disposizione del cliente var $Metodi = array( 'postfinance' => 'PostFinance', 'santander' => 'Santander', 'pausepay' => 'PausePay', 'mypos' => 'MyPos', 'satispay' => 'Satispay', 'scalapay' => 'Scalapay', 'edenred' => 'Edenred', 'credito' => 'Creditoprepagato', 'ems' => 'EmsAbnAmro', 'bnl' => 'BnlPositivity', 'paypal' => 'PayPal', 'paypal_cc' => 'PayPal', 'paypal_buttons' => 'PayPal', 'paypal_abbonamento' => 'PayPal', 'paypal_lista' => 'PayPal', 'sagepay' => 'SagePay', 'triveneto' => 'Triveneto', 'monetawebsetefi' => 'MonetaWebSetefi', 'virtualpayphoenix' => 'VirtualpayPhoenix', 'bancasella' => 'SellaGestPay', 'bsrate' => 'BancasellaRate', 'unicredit' => 'UnicreditPagOnline', 'payway' => 'PayWayIccreaBcc', 'keyclientquipago' => 'KeyClientQuiPago', 'keyclientquipago2' => 'KeyClientQuiPago', 'xpay' => 'XPay', 'stripe' => 'Stripe', 'stripe2' => 'Stripe', 'stripe3' => 'Stripe', 'stripe4' => 'Stripe', 'stripe5' => 'Stripe', 'stripe6' => 'Stripe', 'stripe7' => 'Stripe', 'stripe8' => 'Stripe', 'siavpos' => 'SiaVPos', 'bonifico' => 'FormRaccoltaDati', 'bollettino' => 'FormRaccoltaDati', 'applepay' => 'Stripe', 'link' => 'LinkEsterno', 'worldline' => 'WorldLine', ); /* personalizzazione testi auto() OPZIONALE, di default sono impostati i testi qui sotto in italiano UTF8 (quindi se il sito è in ISO vanno copiati!) // INIZIO da tradurre e inserire in lang_xxx $TXT['ita']['pagamenti_testo_scegli'] = "Scegli il metodo di pagamento con cui procedere"; $TXT['ita']['pagamenti_testo_bottone_procedi'] = "Procedi al pagamento su server sicuro"; $TXT['ita']['pagamenti_testo_errore'] = "Si è verificato un errore durante la procedura di pagamento"; $TXT['ita']['pagamenti_testo_pagamento_incerto'] = "Pagamento in attesa di verifica, riceverai una conferma via email"; $TXT['ita']['pagamenti_testo_errore_dati'] = "Impossibile trovare i dati necessari al pagamento"; $TXT['ita']['pagamenti_testo_errore_pagamento_effettuato'] = "questo pagamento risulta già effettuato"; $TXT['ita']['pagamenti_testo_bottone_uscita'] = "ANNULLA PAGAMENTO"; $TXT['ita']['pagamenti_testo_concluso'] = "Ti ringraziamo per il pagamento"; $TXT['ita']['pagamenti_testo_annullato'] = "Pagamento annullato"; $TXT['ita']['pagamenti_testo_uscita_dopo_esito'] = "Torna al sito"; $TXT['ita']['pagamenti_testo_rinizia_dopo_errore'] = "Continua"; $TXT['ita']['pagamenti_testo_utilizza_carta_salvata'] = "Utilizza questa carta"; $TXT['ita']['pagamenti_testo_rimuovi_carta_salvata'] = "Rimuovi carta"; $TXT['ita']['pagamenti_testo_procedi_con_altra_carta'] = "Utilizza un'altra carta"; $TXT['ita']['pagamenti_testo_salva_carta'] = "Memorizza per i pagamenti successivi"; $TXT['ita']['pagamenti_testo_procedi_con_carta_salvata'] = "Utilizza una carta precedentemente salvata"; $TXT['ita']['pagamenti_testo_conferma_rimozione_carta'] = "Vuoi rimuovere questa carta?"; $TXT['ita']['pagamenti_testo_non_supportato'] = "Pagamento non supportato su questo browser"; $TXT['ita']['pagamenti_testo_oppure_paga_con_carta'] = "oppure inserisci i dati della tua carta"; $TXT['xxx']['pagamenti_testo_scegli'] = "Choose a payment method"; $TXT['xxx']['pagamenti_testo_bottone_procedi'] = "Proceed to secure payment"; $TXT['xxx']['pagamenti_testo_errore'] = "Error during payment process"; $TXT['xxx']['pagamenti_testo_pagamento_incerto'] = "You're payment is being verified, you'll receive a confirmation email"; $TXT['xxx']['pagamenti_testo_errore_dati'] = "Can’t find data to proceed with the payment "; $TXT['xxx']['pagamenti_testo_errore_pagamento_effettuato'] = "Payment already made "; $TXT['xxx']['pagamenti_testo_bottone_uscita'] = "CANCEL THE PAYMENT "; $TXT['xxx']['pagamenti_testo_concluso'] = "Thank you for the payment "; $TXT['xxx']['pagamenti_testo_uscita_dopo_esito'] = "Back to the website "; $TXT['xxx']['pagamenti_testo_annullato'] = "Payment cancelled"; $TXT['xxx']['pagamenti_testo_rinizia_dopo_errore'] = "Continue"; $TXT['xxx']['pagamenti_testo_utilizza_carta_salvata'] = "Use this card"; $TXT['xxx']['pagamenti_testo_rimuovi_carta_salvata'] = "Remove card"; $TXT['xxx']['pagamenti_testo_procedi_con_altra_carta'] = "Use a new card"; $TXT['xxx']['pagamenti_testo_salva_carta'] = "Remember for future payments"; $TXT['xxx']['pagamenti_testo_procedi_con_carta_salvata'] = "Use a previous saved card"; $TXT['xxx']['pagamenti_testo_conferma_rimozione_carta'] = "Vuoi rimuovere questa carta?"; $TXT['xxx']['pagamenti_testo_non_supportato'] = "Your broswer didn't support this payment method"; $TXT['xxx']['pagamenti_testo_oppure_paga_con_carta'] = "or insert your credit card data"; // FINE da tradurre e inserire in lang_xxx; var $testo_scegli = '##pagamenti_testo_scegli##'; var $testo_bottone_procedi = '##pagamenti_testo_bottone_procedi##'; var $testo_errore = '##pagamenti_testo_errore##'; var $testo_pagamento_incerto = '##pagamenti_testo_pagamento_incerto##'; var $testo_rinizia_dopo_errore = '##pagamenti_testo_rinizia_dopo_errore##'; var $testo_errore_dati = '##pagamenti_testo_errore_dati##'; var $testo_errore_pagamento_effettuato = '##pagamenti_testo_errore_pagamento_effettuato##'; var $testo_bottone_uscita = '##pagamenti_testo_bottone_uscita##'; var $testo_concluso = '##pagamenti_testo_concluso##'; var $testo_uscita_dopo_esito = '##pagamenti_testo_uscita_dopo_esito##'; var $testo_annullato = '##pagamenti_testo_annullato##'; var $testo_utilizza_carta_salvata = "##pagamenti_testo_utilizza_carta_salvata##"; var $testo_rimuovi_carta_salvata = "##pagamenti_testo_rimuovi_carta_salvata##"; var $testo_procedi_con_altra_carta = "##pagamenti_testo_procedi_con_altra_carta##"; var $testo_salva_carta = "##pagamenti_testo_salva_carta##"; var $testo_procedi_con_carta_salvata = "##pagamenti_testo_procedi_con_carta_salvata##"; var $testo_conferma_rimozione_carta = "##pagamenti_testo_conferma_rimozione_carta##"; var $testo_non_supportato = "##pagamenti_testo_non_supportato##"; var $testo_oppure_paga_con_carta = "##pagamenti_testo_oppure_paga_con_carta##"; */ function setup(){ /* METODO DA DEFINIRE OBBLIGATORIAMENTE qui si settano importo, identificativo e dati cliente TUTTI GLI INPUT VANNO PRESI DALL'INDIRIZZO ($_GET) ALTRIMENTI LE CHIAMATE DI CALLBACK POSSONO FALLIRE! prevedere un controllo che in caso di mancanza di dati interrompe la procedura ritornando false, vedi a fine funzione */ $importo = $_GET['no_demo'] ? 0.50 : 32.11;//sopra 30 per paypal 3 rate // $importo = 0; // $importo = 0.01; // $this->valuta = "USD";//deve essere supportato da tutti i metodi configurati $descrizione = "Motivo del pagamento"; $identificativo = "1234"; $this->controllaConfermato = !is_locale();//per permettere più pagamenti con lo stesso id // $identificativo = $_GET['id']; //viene usato per due scopi //- passata al server di pagamento da usare come id, ci viene accodato il timestamp perchè in alcuni casi non si potrebbere ripetere un pagamento non andato a buon fine mantenendo lo stesso id //- viene restitutito dalla chiamata di conferma, quindi tramite questo è l'unico input affidabile per le azioni di conferma sicure $this->identificativo = $identificativo; //descrittivo $this->descrizione = $descrizione; //importo $this->importo = $importo; //pagina di uscita dal pagamento: E' UNICA PERCHE' TUTTI I MESSAGGI E LE AZIONI VANNO PREVISTI *PRIMA* $this->exit_url = genera_link($GLOBALS['DATI']['pagina_def']); //dati OPZIONALI cliente $this->cliente_nome = $nome_cognome; $this->cliente_email = 'carlo@tnx.it'; $this->cliente_email = ($this->demo&&$this->cliente_email?'DEMO_':'').$this->cliente_email; $this->cliente_indirizzo = ''; $this->cliente_citta = ''; $this->cliente_cap = ''; $this->cliente_nazione = ''; $this->cliente_telefono = ''; /* CONFIGURAZIONE VARI METODI DI PAGAMENTO (togliere quelli che non interessano */ $this->Metodi['virtualpayphoenix']->pre_identificativo = preg_replace("/[^a-z0-9\s]/ims", "", $GLOBALS['DATI']['nome_sito']);//L’univocità è controllata rispetto a qualsiasi ordine pervenuto a E-GIPSy, indipendentemente dal merchant id, per cui si raccomanda l’utilizzo di un orderid che includa una parte fissa scelta dal merchant in modo da minimizzare la probabilità di conflitto con altri merchant. $this->Metodi['virtualpayphoenix']->abi = 123456789; $this->Metodi['virtualpayphoenix']->mid = 123456789; $this->Metodi['virtualpayphoenix']->key = 123456789; $this->Metodi['satispay']->privateKey = '-----BEGIN PRIVATE KEY----- MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDaSpIOjgiI3bCY 9ZXhI7GLL4vyIBwEBzAh4dDzRh9ONbe5pBPo1vJq7ns73fWDhE6KI38j2W71VBf4 ZkMxV8wUo33cwO19gdY8igHfzIfGL2co/XAUby3RHcs5TX0FlaTEk79jugHAw0F7 GOAbNo2VezF4p/bPmbDCmlQnn0WrbhcnK0q+93Q23KUA6OJ524JbWTwf5YYHUd32 8F7jW9ho2KGNSHBgL2WzP20KfEe4dVjakFSLW14K40Xi2XiCkh+D3lRSKy+Ogjoi xLwk3eL7+RZ55ENMqlTa8yNsxSYQ0TM5QH8EbLhMfFNSqaGukkrRcwmdB49ihgZN TmaRqu2nAgMBAAECggEADbaDiGCJzrdGgcVjvfn1DE5XV0WHHQWqk2ZRLwcnrk0X lpTlH0ppfigvG6qs4q8sE+d49DKTktvOia86512hl2ZR4M1J3gmLANCWn42EtgGC VIPfR5lYYnuhqZ7hjLlC2YqCimxD8e0SLv54DZ2WtV5A1FiQ26fG/+KcCMUrpkIt dKlBI7ENsmZ0HGtok4XbAMcYEwYvIqE+OVp7I+cF+f0RvSaN1UP8d+3jSFZ3nI94 Xx6TWxkUNMuzb+jWTkI56bBxsYZwqOS9vqzaEypv1sHQYFIaPXH0GGv4GJg/cC4Q Peaaxs8oR6Uz3NjxNtIMPqjogtzHbB5HjioFWn3LMQKBgQD8R9ii84FqL7MEgz4l KUWEkz5Avn8kuHwX0UeLQ1AMmpkaDxIyJws+BqVSyRsgNVnjFzm8UiCQROTCBrJD CMGYpSy8rdGHu5TPONDoMoPF/W/fzGEfZvH1ly65kcbBthId/Lb4QD6AUcLDKFFi zmvmxgmBGoHJiDAYvTL6KsydiQKBgQDdgnEy5cByJz0eugM5PwYiLjNtqYOYaXy9 V6vnr5TJ8IHU1S9ndedLzofey893iaGWzoi+y9NwklPQLjcdKDMis4SMo0jq1aNx ykPe47UlcFljUMU0N4njoApF4TDBuVriAFr5B5bNSenolX67YImwq4TxzACv+LLY 1DjNjycVrwKBgCiI2rQD8A1BsL/O3pNV+Ed+6Qe6E++wfK/O/nHP1PLRfDwFo+TP BS1oH/QXP/aC2/hy6OHrSDQl/aN3M/k1VPXTxEZknz/x0c0h0d8dDrMnL2yECC7l eYb+TZGfbJH/URXkXvmwSNqRSHvW5Iy9ofSoaSqHOcdJzICNFb3AVrQRAoGAN8Pm Ia0rpNFyFrE3rIrMTYCaG+qIIa+04qoWsg5HBAvTc7Rz6bUKFNCa7iEbSvnQP3oh fP8tbPK5vPhVkbaUIRFWtl1JNy2vpy8HpS5oZVOCfXlRHFM7GJ4q1+rYbnzuf2Ud ggJCGc6Y35/7NssX/u0/W+xC5ApVZDcRUdbPPSsCgYAVGQ+VpITDgzXZ44mDaixF +b+j9A/SHCl+/sVBTZAvpqsd7fcSVs0eKlSaai458wIzIZ22KV1mIl4H6cCL+vUq IMVlNT1hk70OPqViB0EzEwg23bc9x8YTAs5fH39/IB0SiHBltYFUCltNdyhCdGaw SfiMHxc5tJlhbmar9ZSgng== -----END PRIVATE KEY-----'; $this->Metodi['satispay']->publicKey = '-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2kqSDo4IiN2wmPWV4SOx iy+L8iAcBAcwIeHQ80YfTjW3uaQT6Nbyau57O931g4ROiiN/I9lu9VQX+GZDMVfM FKN93MDtfYHWPIoB38yHxi9nKP1wFG8t0R3LOU19BZWkxJO/Y7oBwMNBexjgGzaN lXsxeKf2z5mwwppUJ59Fq24XJytKvvd0NtylAOjieduCW1k8H+WGB1Hd9vBe41vY aNihjUhwYC9lsz9tCnxHuHVY2pBUi1teCuNF4tl4gpIfg95UUisvjoI6IsS8JN3i +/kWeeRDTKpU2vMjbMUmENEzOUB/BGy4THxTUqmhrpJK0XMJnQePYoYGTU5mkart pwIDAQAB -----END PUBLIC KEY-----'; $this->Metodi['satispay']->keyId = 'i3kv8sop2o3de7f2mf3t8auv0boieijlc0qmhoa2v9d6e4horanug0ss7p0e0qh1vnf43qvcd4pgsj7lrbgv4s7293meiqv9q042j8d4fgs70e863a6v1bir9n0bnc8cu36k7gl5v90spma8tj78teju784qrt66ij8qv7thtv6qoqdn2ej3u0p05e5sfmn7frrblsm1'; $this->Metodi['link']->link = 'https://www.tnx.it/'; $this->Metodi['xpay']->apiKey = ""; $this->Metodi['mypos']->configurationPackage = "stringa da 3000 caratteri circa"; $this->Metodi['bnl']->terminalId = ""; $this->Metodi['bnl']->kSig = ""; $this->Metodi['bnl']->cliente_email = ($this->demo&&$this->cliente_email?'DEMO_':'').$this->cliente_email; $this->Metodi['unicredit']->kSig = ''; $this->Metodi['unicredit']->terminalId = ""; $this->Metodi['unicredit']->cliente_email = ($this->demo&&$this->cliente_email?'DEMO_':'').$this->cliente_email; $this->Metodi['payway']->kSig = ''; $this->Metodi['payway']->terminalId = ""; $this->Metodi['payway']->cliente_email = ($this->demo&&$this->cliente_email?'DEMO_':'').$this->cliente_email; $this->Metodi['bancasella']->id = "89025555"; //$this->Metodi['bancasella']->contrattoConParametriAbilitati = false; in caso di contratto "Starter" non c'è la possibilità di passare parametri personlizzati (quindi appoggio in sessione il link di restart) /* Non abbiamo parametri sandbox per questo tipo di procedura, messi sotto parametri di Italiandesign */ $this->Metodi['bsrate']->codiceEserecente = "89025555"; $this->Metodi['bsrate']->tabellaFinanziaria = "WID"; $this->Metodi['bsrate']->tipoMerce = "MO"; $this->Metodi['bsrate']->tipoProdotto = "70"; // $this->Metodi['bsrate']->etichettaErroreFinanziamentoRifiutato = "Testo da visualizzare come errore nel caso di finanziamento rifiutato immediatamente"; // Default "La tua richiesta di finanziamento è stata rifiutata" // $this->Metodi['bsrate']->testoPreForm = "Testo introduzione della pagina di conferma prima di inziare la procedura di finanziamento"; // Default "" // $this->Metodi['bsrate']->etichettaPulsanteInizia = "Testo su pulsante dopo presentazione"; // Default "Entra" $this->Metodi['triveneto']->id = "89025555"; $this->Metodi['triveneto']->password = "test"; $this->Metodi['monetawebsetefi']->utente = 93163054; $this->Metodi['monetawebsetefi']->password = 93163054; $this->Metodi['keyclientquipago']->alias = ""; $this->Metodi['keyclientquipago']->mac = ""; $this->Metodi['keyclientquipago2']->nome_metodo = 'Keyclientquipago con registrazione carta'; $this->Metodi['keyclientquipago2']->alias = ""; $this->Metodi['keyclientquipago2']->mac = ""; if($GLOBALS["AUTH"]||$GLOBALS["DATI"]['dove_sono'] == 'loc'){ $this->Metodi['keyclientquipago2']->idContratto = "id_unico_contratto_cliente";//MIN 5 MAX 30 $file = dirname(__FILE__)."/keyClientTestSaveCardContrattoRegistrato"; $this->Metodi['keyclientquipago2']->contrattoAttivo = is_file($file); $this->Metodi['keyclientquipago2']->contrattoRegistrato = function($contrattoId){ touch($file); //sono in una s2s non usare variabili di sessione! return true; }; } $this->Metodi['siavpos']->shopId = ""; $this->Metodi['siavpos']->macKey = ""; $this->Metodi['stripe']->publishableKey = ""; $this->Metodi['stripe']->secretKey = ""; if($GLOBALS["AUTH"]||$GLOBALS["DATI"]['dove_sono'] == 'loc'){//le pagine di pagamento che usano le carte salvate devono essere in qualche modo protette // $this->Metodi['stripe']->saveCard = 'off_session';// per addebitare direttamente da stripe senza l'intervento del cliente (non tutte le carte lo permettono) $this->Metodi['stripe']->saveCustomer = function($identificativo, $idCustomerStripe){ $_SESSION['stripeTestSaveCardTNX'] = $idCustomerStripe; return true;//altrimenti la procedura da' errore /* if($GLOBALS["AUTH"]['id']){ //in adminTnx esiste stripeIdEditor che crea i link a stripe return db_q("update users set id_pagamenti = '".$idCustomerStripe."' where id = '".$GLOBALS["AUTH"]['id']."'"); } else{ trigger_error("Impossibile salvare stripeId"); return false; } */ }; $this->Metodi['stripe']->getCustomer = function(){ return $_SESSION['stripeTestSaveCardTNX']; /* if($GLOBALS["AUTH"]['id']){ return db_qrs("select id_pagamenti from users where id = '".$GLOBALS["AUTH"]['id']."'"); } else trigger_error("Impossibile recuperare stripeId"); */ }; } $this->Metodi['stripe2']->nome_metodo = 'Registra carta per addebiti successivi (stripe)'; $this->Metodi['stripe2']->mode = 'savecard'; $this->Metodi['stripe2']->saveCustomer = function($identificativo, $idCustomerStripe){ return true;//altrimenti la procedura da' errore }; $this->Metodi['stripe3']->nome_metodo = 'Addebito su conto (Sepa Direct Debit) (stripe)'; $this->Metodi['stripe3']->mode = 'sdd'; $this->Metodi['stripe4']->nome_metodo = 'Stripe (sul loro sito)'; $this->Metodi['stripe4']->mode = 'paymentscheckout'; $this->Metodi['stripe4']->nomeVenditore = $GLOBALS["DATI"]['nome_sito']; $this->Metodi['stripe4']->logo300x300 ="https://cdn.tnx.it/_files/pagamenti/logoStripe300x300.png"; $this->cliente_riferimento = 'id_del_cliente_per_esportazioni'; $this->Metodi['stripe5']->nome_metodo = 'Sottoscrizione abbonamento (con SDD) (stripe)'; $this->Metodi['stripe5']->mode = 'sdd'; $this->Metodi['stripe5']->abbonamento = 'ordinalo_regular';//id del piano da sottoscrivere $this->Metodi['stripe6']->nome_metodo = 'Klarna (stripe)'; $this->Metodi['stripe6']->mode = 'paymentscheckout'; $this->Metodi['stripe6']->payment_method_types = ['klarna']; $this->cliente_riferimento = 'id_del_cliente_per_esportazioni'; $this->Metodi['stripe7']->nome_metodo = 'Sottoscrizione abbonamento custom (stripe)'; // $this->Metodi['stripe7']->mode = 'sdd'; $this->Metodi['stripe7']->endpointSecretKey = 'whsec_8pwtdJL5PD2SRfKySB7uTvnd87XsQsnV'; //https://stripe.com/docs/api/subscriptions/create //https://stripe.com/docs/api/subscriptions/create#create_subscription-items-price_data //per pagare un setup inserire un secondo abbonamento con una sola ricorrenza //i product (id) associati non deveno avere prezzi: cancellare quello creato di default e copiare l'id prodotto dall'url $this->Metodi['stripe7']->abbonamento = [ //setup [ 'items' => [ [ 'price_data' => [ 'unit_amount' => 1000, 'currency' => 'eur', 'product' => 'prod_NKCZFrzvZ1H8BT',//id del prodotto a cui associare il prezzo (il prodotto non deve avere prezzi, copiare l'id dall'url) 'recurring' => ['interval' => 'month', 'interval_count' => 1],//irrilevante in quanto c'è cancel_at_period_end ], ] ], 'cancel_at_period_end' => 'true' ], //mensile [ 'items' => [ [ 'price_data' => [ 'unit_amount' => 100, 'currency' => 'eur', 'product' => 'prod_NKC9U0zeBok6UO', 'recurring' => ['interval' => 'month'], ], ], ], ] ]; $this->Metodi['stripe8']->nome_metodo = 'Stripe con [link]'; $this->Metodi['stripe8']->mode = 'paymentElement'; $this->Metodi['applepay']->nome_metodo = 'Apple Pay'; $this->Metodi['applepay']->mode = 'applepay'; // $this->Metodi['stripe']->mode = 'elements';//"elements" (default) esperienza in-page, "checkout" popup che in più ha la funzione "rember me" per registrare la carta e pagare tramite codice di conferma sms $this->Metodi['ems']->storename = ''; $this->Metodi['ems']->username = ''; $this->Metodi['ems']->sharedSecret = ''; if($_GET['debugtnx']){ echo '
';
// $debugBacktrace = debug_backtrace(); array_unshift($debugBacktrace, array('file'=>__FILE__, 'line'=>__LINE__, 'function'=>'debugTnx')); foreach($debugBacktrace as $debugLine) echo "".str_replace("/tnx/www/html/www/", "", $debugLine['file']).""." ".$debugLine['function']."()
";
$printMe = db_qrs("select info from pagamenti where id = 7"); ob_start(); if(is_object($printMe)||is_array($printMe)) print_r($printMe); else var_dump($printMe); echo htmlentities(ob_get_clean(), ENT_COMPAT|ENT_HTML401|ENT_SUBSTITUTE, 'UTF-8');
echo '';
die;
}
$this->Metodi['sagepay']->id = '';
$this->Metodi['paypal']->account_venditore = 'info@tnx.it';
$this->Metodi['paypal']->logo_venditore_url = 'https://secure.tnx.it/tnx/_files/immagini/logo_paypal.png';//se non è https il browser mostra un alert! 750x90 max - 360x90 riempie lo spazio sopra il riepilogo d'ordine
//$this->Metodi['paypal']->richiedi_indirizzo_spedizione = true;//toglie la parte sul sito paypal per specificare un indirizzo
//$this->Metodi['paypal']->richiedi_note = true;//toglie la parte sul sito paypal per aggiungere delle note
$this->Metodi['paypal_cc']->account_venditore = $this->Metodi['paypal']->account_venditore;
$this->Metodi['paypal_cc']->logo_venditore_url = $this->Metodi['paypal']->logo_venditore_url;
$this->Metodi['paypal_cc']->preferisci_carta = true;
$this->Metodi['paypal_buttons']->account_venditore = 'info@tnx.it';
$this->Metodi['paypal_buttons']->usaSmartButtons = true;
//esempio lista articoli:
$this->Metodi['paypal_lista']->account_venditore = $this->Metodi['paypal']->account_venditore;
$this->Metodi['paypal_lista']->logo_venditore_url = $this->Metodi['paypal']->logo_venditore_url;
$this->Metodi['paypal_lista']->expressCheckoutDataAgg = array(
"L_PAYMENTREQUEST_0_AMT0" => number_format($this->importo/2, 2, ".", ""),
"L_PAYMENTREQUEST_0_CURRENCYCODE0" => $this->valuta,
"L_PAYMENTREQUEST_0_NAME0" => "Nome 1",
"L_PAYMENTREQUEST_0_DESC0" => "Descrizione 1",
"L_PAYMENTREQUEST_0_QTY0" => 1,
"L_PAYMENTREQUEST_0_ITEMCATEGORY0" => "Physical",
"L_PAYMENTREQUEST_0_AMT1" => number_format($this->importo/2, 2, ".", ""),
"L_PAYMENTREQUEST_0_CURRENCYCODE1" => $this->valuta,
"L_PAYMENTREQUEST_0_NAME1" => "Nome 2",
"L_PAYMENTREQUEST_0_DESC1" => "Descrizione 2",
"L_PAYMENTREQUEST_0_QTY1" => 1,
"L_PAYMENTREQUEST_0_ITEMCATEGORY1" => "Physical",
);
//https://developer.paypal.com/webapps/developer/docs/classic/api/merchant/SetExpressCheckout_API_Operation_NVP/
//nella descrizione mettere For example, buyer is billed at "9.99 per month for 2 years".
$this->Metodi['paypal_abbonamento']->account_venditore = $this->Metodi['paypal']->account_venditore;
$this->Metodi['paypal_abbonamento']->logo_venditore_url = $this->Metodi['paypal']->logo_venditore_url;
$this->Metodi['paypal_abbonamento']->abbonamento = array(
'BILLINGPERIOD' => "Month",
'BILLINGFREQUENCY' => "1",
'AMT' => "19",
// opzionali
// periodo di provo a costo diverso
// "TRIALBILLINGPERIOD" => "Month",
// "TRIALBILLINGFREQUENCY" => "1",
// "TRIALAMT" => "10",
// inizio posticipato
// 'PROFILESTARTDATE' => gmstrftime("%FT%TZ", strtotime("+10 days")),
// numero fisso di addebiti
// 'TOTALBILLINGCYCLES' => "10",
// importo fisso iniziale
'INITAMT' => "9",
);
$this->Metodi['bonifico']->nome_metodo = 'Bonifico';
$this->Metodi['bonifico']->file = '_pagine/pagamenti/form_bonifico.html';//in questo file inserire un form (POST) qualsiasi che recupera i dati che interessano con queste variabili "##URL_OK##", "##URL_KO##", "##DATI##"
$this->Metodi['bonifico']->dati_pagamento = array(
"Banca" => "Intesa",
"Filiale" => "Roma, via Firenze",
"IBAN" => "IT14C0306903203100000004648"
);
$this->Metodi['bollettino']->nome_metodo = 'Bollettino';
$this->Metodi['bollettino']->file = '_pagine/pagamenti/form_bollettino.html';//in questo file inserire un form (POST) qualsiasi che recupera i dati che interessano con queste variabili "##URL_OK##", "##URL_KO##", "##DATI##"
$this->Metodi['bollettino']->dati_pagamento = array(
"Conto corrente postale: n." => "1014038770",
"Intestato a" => "Intercultura"
);
$this->Metodi['santander']->clientId = 'b0ce1b13-91a0-4acb-88e7-4ee66e83365c';
$this->Metodi['santander']->secret = 'U4yJ5gI6wC8nD2oX2vB1qH2qI1pK7gO3xY6rD7kT6wP4uL7wD7';
$this->Metodi['santander']->intermediario = '13364950';
$this->Metodi['worldline']->licenseKeyEasyCheckout = 'PFC0EN7-96M4Y98-M7BYSB0-HBQF6PV';
$this->Metodi['worldline']->accessToken = 'eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJxRlItM0w0SGo2RzNWbmNEYmo0alp6YmNhV2lMNmRtNmlYYUNtck9IQ2RRIn0.eyJleHAiOjIwNTcxMzkyODEsImlhdCI6MTc0MTc5MTA4NCwiYXV0aF90aW1lIjoxNzQxNzkxMDg0LCJqdGkiOiI1ODFlZDFkNS03ZjRkLTQ4NTktODk5NC04OGYyY2EzNTJiN2YiLCJpc3MiOiJodHRwczovL3Nzby53b3JsZGxpbmVpdGFsaWEuaXQvYXV0aC9yZWFsbXMvTWVyY2hhbnQiLCJhdWQiOlsicGctcGF5bWVudC1hcGktaW5ldCIsInBnLXBheW1lbnQtYXBpLWluZXQtc2FuZGJveCJdLCJzdWIiOiIxNjI3YjRmYi1mZWNhLTQ1MDEtYmQwYi0yOWZmOTUyYzQ5ZmYiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJwZy1wYXltZW50LWFwaS1pbmV0Iiwic2Vzc2lvbl9zdGF0ZSI6IjliNzQyMDQ2LWJhMjktNDg0Yy04ODM3LTgwYmZmNzMzOWQwMSIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9wYXkuYXhlcHRhLml0IiwiaHR0cHM6Ly9wYXkud29ybGRsaW5laXRhbGlhLml0Il0sInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJvZmZsaW5lX2FjY2VzcyJdfSwicmVzb3VyY2VfYWNjZXNzIjp7InBnLXBheW1lbnQtYXBpLWluZXQtc2FuZGJveCI6eyJyb2xlcyI6WyJ1c2VyIl19fSwic2NvcGUiOiJvcGVuaWQgZW1haWwgb2ZmbGluZV9hY2Nlc3MgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwicHJlZmVycmVkX3VzZXJuYW1lIjoiY2FybG9AdG54Lml0IiwiZW1haWwiOiJjYXJsb0B0bnguaXQifQ.VcgI9bNveq8PbTapHaSOyJRUehbcOtSna74LoOPbXuW7FN9Yvz-imnH_HhmD6ENBbQHasd4nB0d6zh7sn3JVRDVTfEMdvx8qZ_1f41JR85xN9qLY1suAkvg4qJvNpCbh_0ItXvDwnvb4gE8gze1RyeHsLGjYjDNSW5TGkdC7ti-XbCDLAwtv_37ljAslx2f2OC4xKXH4437iNcw6g4U3jw6Qj1bM2VL7OqmA2DEjcnolK009xRL6SNg43zmg17njSaUglr70cys8bkqNFE7R73u0GCJ1hL894NmJ1KfraulXIzfe6LHwY7f0FbSaT-8LyV9ZY5GjRIGBO7gDo13q1g';
$this->Metodi['credito']->getCredito = function(){
return 100;
};
$this->Metodi['credito']->creaMovimento = function($importo){
mail("c@localhost", "Credito prepagato: creo movimento -$importo"."€", __FILE__.":".__LINE__."\n".print_r(array($_REQUEST, $_SERVER), true));
return 1;//$id del movimento che viene inviato a rimuoviMovimento (il pagamento viene autorizzato se dopo l'inserimento il credito non è negativo)
};
$this->Metodi['credito']->rimuoviMovimento = function($id){
mail("c@localhost", "Credito prepagato: rimuovo movimento id $id", __FILE__.":".__LINE__."\n".print_r(array($_REQUEST, $_SERVER), true));
return true;
};
if(!$importo || !$descrizione || !$identificativo){
//il return false va fatto dopo la configurazione dei metodi, perchè quelli che hanno ignoreSetupError (bancasella, unicredit e ideal) potrebbero non funzionare
// return false;
}
$args = func_get_args();
return call_user_func_array(array(parent, "setup"), $args);
}
/*
@ definire questo metodo per personalizzare le azioni da fare in caso di tentativo di pagare un id che risulta già confermato
@ ritornare false per non fare nulla
function pagamento_gia_confermato(){
return false;
//il metodo standard chiama $this->errore con il messaggio $this->'pagamenti_testo_errore_pagamento_effettuato
$args = func_get_args();
$return = call_user_func_array(array(parent, "pagamento_gia_confermato"), $args);
//*** CODICE PERSONALIZZATO QUI ***
return $return;
}
*/
/*
@ definire questo metodo per fare delle azioni dopo che l'utente ha scelto il metodo di pagamento
function iniziato($nome_tipo_pagamento){
$args = func_get_args();
$return = call_user_func_array(array(parent, "iniziato"), $args);
//*** CODICE PERSONALIZZATO QUI ***
return $return;
}
*/
/*
@ definire questo metodo per fare delle azioni dopo che l'utente ha concluso la procedura di pagamento (non è certo che passi di qui, potrebbe abbandonare dal sito gestore pagamento)
@ tutte le azioni importanti venno messe in $this->confermato();
function concluso(){
$args = func_get_args();
$return = call_user_func_array(array(parent, "concluso"), $args);
//*** CODICE PERSONALIZZATO QUI ***
return $return;
}
*/
/*
@ questo metodo viene richiamato se la banca non è in grado di dirci se il pagamento è ok o ko, probabilmente lo farà con una chiamata successiva
@ di default si avverte l'utente che riceverà una conferma via email
@ al 22/4/2015 è usato solo da iDEAL olandese
function incerto(){
$args = func_get_args();
$return = call_user_func_array(array(parent, "incerto"), $args);
//*** CODICE PERSONALIZZATO QUI ***
return $return;
}
*/
/*
@ definire questo metodo per fare delle azioni sulla ricezione della conferma da parte del metodo di pagamento
NON USARE I PARAMETRI IN GET ALTRIMENTI NON C'È SICUREZZA
usare come unico input $identificativo_comunicato_dal_server_di_pagamento
function confermato($identificativo_comunicato_dal_server_di_pagamento, $dettagli_paypal = null){
$dettagli_paypal:
Array
(
[TOKEN] => EC-9LR34056DP140434P
[BILLINGAGREEMENTACCEPTEDSTATUS] => 0
[CHECKOUTSTATUS] => PaymentActionCompleted
[TIMESTAMP] => 2014-09-16T13:23:54Z
[CORRELATIONID] => d20f4e6118027
[ACK] => Success
[VERSION] => 104.00
[BUILD] => 12786467
[EMAIL] => acquirente@tnx.it
[PAYERID] => JZQKAPHQBXPWS
[PAYERSTATUS] => verified
[FIRSTNAME] => tnx
[LASTNAME] => poggibonsi
[COUNTRYCODE] => IT
[CURRENCYCODE] => EUR
[AMT] => 707.60
[SHIPPINGAMT] => 0.00
[HANDLINGAMT] => 0.00
[TAXAMT] => 0.00
[CUSTOM] => 0h808757sq
[DESC] => Codice pagamento: 0h808757sq
[INVNUM] => 0h808757sq_1410873789
[INSURANCEAMT] => 0.00
[SHIPDISCAMT] => 0.00
[PAYMENTREQUEST_0_CURRENCYCODE] => EUR
[PAYMENTREQUEST_0_AMT] => 707.60
[PAYMENTREQUEST_0_SHIPPINGAMT] => 0.00
[PAYMENTREQUEST_0_HANDLINGAMT] => 0.00
[PAYMENTREQUEST_0_TAXAMT] => 0.00
[PAYMENTREQUEST_0_CUSTOM] => 0h808757sq
[PAYMENTREQUEST_0_DESC] => Codice pagamento: 0h808757sq
[PAYMENTREQUEST_0_INVNUM] => 0h808757sq_1410873789
[PAYMENTREQUEST_0_INSURANCEAMT] => 0.00
[PAYMENTREQUEST_0_SHIPDISCAMT] => 0.00
[PAYMENTREQUEST_0_TRANSACTIONID] => 6XM90912NR144791G
[PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID] => negoziotnx@tnx.it
[PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED] => false
[PAYMENTREQUEST_0_ADDRESSNORMALIZATIONSTATUS] => None
[PAYMENTREQUESTINFO_0_TRANSACTIONID] => 6XM90912NR144791G
[PAYMENTREQUESTINFO_0_ERRORCODE] => 0
)
$args = func_get_args();
$return = call_user_func_array(array(parent, "confermato"), $args);
//*** CODICE PERSONALIZZATO QUI ***
return $return;
}
*/
}
$DATI['file:_files/pagamenti/pagamenti.css'] = 'CDN,VIS,HEAD,LESS';
$PROCEDURA = new ProceduraDaCopiare();
$PROCEDURA->demo = !$_GET['no_demo'] && $DATI['dove_sono'] == 'loc';
//ESEMPIO RIMBORSO
//(per ora implementato solo su metodo Stripe)
//da usare in script o tramite server2server (implementare un parametro, un controllo ip o altro per sicurezza)
//ritorna "ok" oppure il messaggio di errore
// if($_GET['rimborsoPassword'] == 'benson'){
// indiObCleanAll();
// $PROCEDURA->rimborso = true;
// die($PROCEDURA->auto());
// }
// else
echo $PROCEDURA->auto();
?>