Sid Gifari From Gifari Industries - BD Cyber Security Team
Home
/
home
/
airmobeuag
/
2020
/
commande_v2
/
lib
/
✏️
Editing: gestion.lib.php
<?php /* Class pour commande V2 26/11/2019 */ //echo "<h1>=>ClassCdeV2 CB en TEST</h1>CODE:STRIPE remplacer lk_ sk_"; session_start(); Class ClassCdeV2 { public function __construct() { $this->EtapeParam = [ ['nom'=>'Zero !' ,'titre'=>''], ['nom'=>'offre' ,'titre'=>'Je choisis mon offre'], ['nom'=>'options' ,'titre'=>''], ['nom'=>'mesinfos' ,'titre'=>'Mes informations'], ['nom'=>'infosste' ,'titre'=>"Informations sur l'entreprise"], ['nom'=>'paiement' ,'titre'=>"Je paie et j'ouvre ma ligne"], ]; $this->Operateurs = ['BOU'=>'Bouygues Telecom','ORG'=>'Orange','SFR'=>'SFR','MEI'=>'Le meilleur réseau à mon adresse']; } public function CnxDBaseSQL() { if ($_SERVER['REMOTE_ADDR'] == "127.0.0.1") { $connexion = mysqli_connect("127.0.0.1", "root", "") or die ("could not connect to mysql"); mysqli_select_db($connexion, "airmob") or die ("no database"); } else { // $connexion = mysqli_connect("airmobeuagweb.mysql.db", "airmobeuagweb", "5345fhjthk875HJzzs112") or die ("could not connect to mysql"); $connexion = mysqli_connect("airmobeuagwwwnew.mysql.db", "airmobeuagwwwnew", "8iH9MEjfVySL5q7YWkywKA") or die ("could not connect to mysql"); mysqli_select_db($connexion, "airmobeuagwwwnew") or die ("no database"); } return $connexion; } // Cherche le nouveau N° de bdc public function NoBDC () { $QF = mysqli_query($this->CnxDBaseSQL(), "SELECT nobdc FROM commandes_v2 WHERE nobdc LIKE 'BC%' ORDER BY nobdc DESC LIMIT 1"); $Col = mysqli_fetch_array($QF, MYSQLI_ASSOC); $NewNo = substr($Col['nobdc'],-5)+1; $XDigit = "5"; // 5 digit // BC2020020500003 return "BC".date('Ymd').str_repeat("0", abs(strlen($NewNo)-$XDigit) ).$NewNo; } public function AfficheSuiviEtape() { $Etapecourante = $_SESSION['AIRCMDV2']['etape']; include ("./form/step.php"); if($Etapecourante=="1" && $_REQUEST['type']=="i") $Titre ="Commandez votre solution internet"; elseif($Etapecourante=="1" && $_REQUEST['type']=="t") $Titre ="Commandez votre solution de téléphonie"; else $Titre=$this->EtapeParam[$Etapecourante]['titre']; // echo "<h1 class='Taille14' id='' style='text-align:center; color:#245ba5;'>".$Titre."</h1>"; echo "<br>"; } /* Affiche etape */ public function AfficheFormEtape() { $Etapecourante = $_SESSION['AIRCMDV2']['etape']; $NomForm = $this->EtapeParam[$Etapecourante]['nom']; include ("./form/".$NomForm.".php"); } /* Enregistre les choix utilisateurs */ public function PostForm() { $Etapecourante = $_SESSION['AIRCMDV2']['etape']; $Type = $_SESSION['AIRCMDV2']['type']; // DEBUG : affichage // echo "$Etapecourante / <pre>"; print_r($_REQUEST); echo "</pre>"; // Valide ADD + SUIVANT if( $_REQUEST['btn_suivant'] or $_REQUEST['btn_add'] or $_REQUEST['btn_continuer'] ) { //echo "<h1>=>".date('s')."</h1>"; // die("XXXXXXXXX"); // ---------------------------- // Validation de ma 1ere etape // ---------------------------- if( !@$_SESSION['AIRCMDV2']['Cde_debut'] ) { $_SESSION['AIRCMDV2']['idunique'] = uniqid(); $_SESSION['AIRCMDV2']['Cde_debut'] = date("Y-m-d H:i:s", mktime(date("H") + 1, date("i"), date("s"), date("m"), date("d"), date("Y")));; $Q_INSERT = "INSERT INTO commandes_v2 (idunique, creation ) VALUES ('".$_SESSION['AIRCMDV2']['idunique']."','".date('Y-m-d H:i:s')."') "; $QUERY = mysqli_query ($this->CnxDBaseSQL() , $Q_INSERT); // echo mysqli_error($this->CnxDBaseSQL()); } // $NomProduit = $_SESSION['AIRCMDV2']['NomProduits'][$_REQUEST['p']]['nom']; // Si ADD enregistre if( $_REQUEST['btn_add']) { // echo "<h1>ADD</h1>"; $EtapeSave = $Etapecourante ; // Maintient la valeur de l etape $newKey = max(array_keys( $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave] ))+1;; $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$newKey]=['id' => $_REQUEST['p'],'confirme'=>'OK'] ; } elseif( $_REQUEST['btn_continuer']) { $EtapeSave = $Etapecourante+1 ; // Maintient la valeur de l etape } // Si SUIVANT else { $EtapeSave = $Etapecourante - 1; // Etape suivante donc enreg. sur l etape precedente } // Enreg. // echo "<h1>POST ($EtapeSave)</h1>"; foreach ($_REQUEST as $NomChamp => $Val) { list($none,$prod,$cde) = explode ('_',$NomChamp); // Conserve les choix de l utilisateur if($none=="Choix") { if($prod=="DATA") $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['id'] = $Val; if($prod=="OPE" ) $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['operateur'] = $Val; if($prod=="TEL" ) $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['tel'] = $Val; if($prod=="OPT1") $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['id'] = $Val; if($prod=="OPT2") $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['id'] = $Val; if($prod=="ABO" ) $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['abo'] = $Val; $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['confirme'] = "OK"; } else if($none=="Porta") { if($prod=="RIO" ) $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['rio'] = $Val; if($prod=="NUM" ) $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['numero'] = $Val; } else if ($none=="form") { $_SESSION['AIRCMDV2']['Commande']['Utilisateur'][$prod] = $Val; } } // Enregistre en MySQL $this->EnregCmd(); if( $_REQUEST['btn_continuer']) { if($_REQUEST['type']=="i") { //header('Location:http://2020.airmob.eu/telephonie-commander/'); echo "<script>top.window.location = 'https://airmob.net/telephonie-commander/'</script>"; die; } if($_REQUEST['type']=="t") { echo "<script>top.window.location = 'https://airmob.net/internet-commander/'</script>"; //header('Location:http://2020.airmob.eu/internet-commander/'); } // } } } // Enregistre les infos au fur et à mesure des étapes public function EnregCmd(){ // Articles $CmdArray = $this->FormatCmd(); // Détail Cmd $CmdJson = json_encode($CmdArray); // Montant Cmd $Ht = $CmdArray['total_rec']+$CmdArray['total_fas']; $Tva = ($Ht*20)/100; $Ttc = $Ht+$Tva; // Ajoute 2 chmaps à la requete $UPDATE[] = "detail_cmd='".$CmdJson."'"; //$UPDATE[] = "montant='$Ttc'"; $UPDATE[] = "montant='".$_SESSION['AIRCMDV2']['TotalCmd']."'"; // Creation de la requete foreach ($_SESSION['AIRCMDV2']['Commande']['Utilisateur'] as $Champ => $Valeur) { $UPDATE[] = $Champ."='".addslashes($Valeur)."'"; } // Enregsitre le code promo if($_SESSION['AIRCMDV2']['CodePROMO']) { $UPDATE[] = "code_promo='".$_SESSION['AIRCMDV2']['CodePROMO']['nom']."=".$_SESSION['AIRCMDV2']['CodePROMO']['remise']."'"; } else { $UPDATE[] = "code_promo=''"; } // Enregsitrement permament $Q_UPDATE = "UPDATE commandes_v2 SET ".join(',',$UPDATE) ."WHERE idunique='".$_SESSION['AIRCMDV2']['idunique']."'"; $QUERY = mysqli_query ($this->CnxDBaseSQL() , $Q_UPDATE); //cho mysqli_error($this->CnxDBaseSQL()); } // STRIPE enregistre le paiement OK ou KO public function PaiementCmd($Msg,$RetourAPI , $nobdc) { error_reporting(E_ALL); ini_set("display_errors", 0); // Evite l ecrassement if ($_SESSION['AIRCMDV2']['idunique']) { $Q_UPDATE = "UPDATE commandes_v2 SET nobdc='".$nobdc."',code_promo='". $RetourAPI->description."',msg='" . $Msg . "',paiement='" . date('Y-m-d H:i:s') . "' WHERE idunique='" . $_SESSION['AIRCMDV2']['idunique'] . "'"; $QUERY = mysqli_query($this->CnxDBaseSQL(), $Q_UPDATE); unset( $_SESSION['AIRCMDV2']); // Vide la commande } } // NEW Valide la commande depuis le webhook public function PaiementCmdCB($idunique , $Msg , $codepromo , $nobdc) { // Info du BDC $QF = mysqli_query($this->CnxDBaseSQL(), "SELECT * FROM commandes_v2 WHERE idu='".$idunique."'"); $Bdc = mysqli_fetch_array($QF, MYSQLI_ASSOC); // Ne remplace pas si dej aun paiement ok if($Bdc['paiement']!='paiement_ok') { $Q_UPDATE = "UPDATE commandes_v2 SET nobdc='" . $nobdc . "',code_promo='" . $codepromo . "',msg='" . $Msg . "',paiement='" . date('Y-m-d H:i:s') . "' WHERE idunique='" . $idunique . "'"; $QUERY = mysqli_query($this->CnxDBaseSQL(), $Q_UPDATE); } } // Factures ZOHO - Prepare les données public function ZohoFactures( $array ) { $cnx = $this->CnxDBaseSQL(); $idu = $array['data']['object']['metadata']['NoBDC']; $pi = $array['data']['object']['payment_intent']; // Commande $QF = mysqli_query($cnx , "SELECT * FROM commandes_v2 WHERE idunique='".$idu."'"); $Bdc = mysqli_fetch_array($QF, MYSQLI_ASSOC); // Insert $INSERT = mysqli_query ($cnx , "INSERT INTO zoho_factures (idunique,pi,email) VALUE ('".$idu."','".$pi."','".$Bdc['email']."')"); $IDnew = mysqli_insert_id($cnx); } // Recapitule la commande après paiement public function RecapituleCmd( $id ) { $cnx = $this->CnxDBaseSQL(); $QF = mysqli_query($cnx, "SELECT * FROM commandes_v2 WHERE nobdc='$id' or idunique='$id'"); $Col = mysqli_fetch_array($QF, MYSQLI_ASSOC); echo "<hr><br>"; if ($Col['nobdc']) echo "N°de commande : ".$Col['nobdc']; else echo "N°de transaction : ".$Col['idunique']; echo "<br>"; echo "Montant TTC : ". number_format($Col['montant'], 2, ',', ' ')." euros"; } // Format la commande public function FormatCmd() { $ArrType = ['i'=>'Internet','t'=>'Telephonie','f'=>'Fibre']; // Internet, Telephonie foreach($ArrType as $TypedeCommande=>$NomType) { $MyCmd =[]; foreach ($_SESSION['AIRCMDV2']['Commande'][$TypedeCommande] as $Etape => $Cmd) { foreach ($Cmd as $K => $Dtl) { if($Dtl['qte']) $qte = $Dtl['qte']; else $qte = "1"; if ($Dtl['id']) { $NomProduit = utf8_encode($_SESSION['AIRCMDV2']['NomProduits'][$Dtl['id']]['nom']); $Rec = $_SESSION['AIRCMDV2']['NomProduits'][$Dtl['id']]['rec']*$qte; $Total_Rec += $Rec; $Fas = $_SESSION['AIRCMDV2']['NomProduits'][$Dtl['id']]['fas']*$qte; $Total_Fas += $Fas; if ($Etape == 1) $MyCmd[] = ['Type' => $NomType, 'ctg'=>'offre' , 'idart' => $Dtl['id'] , 'nom'=>$NomProduit,'rec'=>$Rec,'fas'=>$Fas,'tel' => $Dtl['tel'],'ope' => $Dtl['operateur'], 'num' => $Dtl['numero'], 'rio' => $Dtl['rio'],'abo'=>$Dtl['abo'] ]; if ($Etape == 2) $MyCmd[] = ['Type' => $NomType, 'ctg'=>'option' , 'idart' => $Dtl['id'] , 'nom'=>$NomProduit,'rec'=>$Rec,'fas'=>$Fas,'qte'=>$Dtl['qte'] ]; } } $MyCmdALL[$TypedeCommande] = $MyCmd; } } return ['dtl_cmd'=>$MyCmdALL,'total_rec'=>$Total_Rec,'total_fas'=>$Total_Fas]; } // Charge les produits public function ListeProduits( $select_arr ) { // Extrait les articles sélectionnés if( is_array($select_arr) ) { foreach($select_arr as $Chp) { $W[] = "offre ='$Chp'"; } $WHERE = join (' or ', $W); } // Query $cnx = $this->CnxDBaseSQL(); $Lst = mysqli_query($cnx, "SELECT * FROM offres WHERE $WHERE ORDER BY id ") or die(mysqli_error()); while ($Detail = mysqli_fetch_array($Lst, MYSQLI_ASSOC)) { $_SESSION['AIRCMDV2']['LstProduits'][$Detail['offre']][$Detail['id']] = $Detail; $_SESSION['AIRCMDV2']['NomProduits'][$Detail['id']] = $Detail; } } // Etape version Mobile public function StepMobile() { $NoEtape = $_SESSION['AIRCMDV2']['etape']; ${'active'.$NoEtape}='is-active' ; ${'bold'.$NoEtape}='bold; border-bottom:2px solid #235BA5' ; if(!$bold1 && !$bold2 && !$bold3 && !$bold4) $bold5="bold; color :#000;"; echo " <div id=\"container\" style=\"border:0px;\"> <div id=\"content\" style=\"width:650px\"> <br /><br /> <ul class=\"list-unstyled multi-steps\" > <li class=\"$active1 \">Mon offre</li> <li class=\"$active2\">Mes options</li> <li class=\"$active3\">Mes informations</li> <li class=\"$active4\">Mon entreprise</li> <li class=\"$active5\">Paiement</li> </ul> </div> </div> "; } // Declenche la ligne etape public function Step() { $NoEtape = $_SESSION['AIRCMDV2']['etape']; ${'active'.$NoEtape}='is-active' ; echo " <div lass='container-fluid col-md-12'> <br /><br /> <ul class=\"list-unstyled multi-steps\" > <li class=\"$active1 \">Mon offre</li> <li class=\"$active2\">Mes options</li> <li class=\"$active3\">Mes informations</li> <li class=\"$active4\">Mon entreprise</li> <li class=\"$active5\">Paiement</li> </ul> </div>"; } public function Surv() { $cnx = $this->CnxDBaseSQL(); $QW = mysqli_query($cnx, "SELECT * FROM commandes_v2 WHERE nobdc<>'' ORDER BY id desc LIMIT 20"); while ($ColC = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) { $MyGest[$ColC['nobdc']] = $ColC; } return $MyGest; } // Connexion à l API STRIPE public function APIStripe( $Array ) { $this->action = $Array['action']; $this->data = $Array['data']; // CODE:STRIPE // $CodeAPIStripe = "sk_test_wtOLZRJRmrRm5va5cDWUKeNl"; // AIRMOB TEST $CodeAPIStripe = "sk_live_jmMEEsrBrru0qcmySOPhViz1"; // AIRMOB Prod $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => "https://api.stripe.com/v1/".$this->action, CURLOPT_RETURNTRANSFER => true, CURLOPT_USERPWD => $CodeAPIStripe, CURLOPT_HTTPAUTH => CURLAUTH_BASIC ]); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($this->data)); $response = json_decode(curl_exec($ch)); return $response; curl_close($ch); } function MyCurl_APIZOHO_V2( $Param ) { // Compte les appels à ZOHO ob_start(); echo "<PRE>"; print_r($Param); echo "</PRE>"; $buffer = ob_get_contents(); ob_end_clean(); /* $fpW = fopen("./xml/compte_api.zoho.".date('m').".txt", "a+"); fwrite($fpW, "MyCurl_APIZOHO_V2 :: ".date('Y-m-d H:i:s')." :: ".$buffer."\n"); fclose($fpW); */ //$this->Compte_CallApiZoho( "R2D2\MyCurl_APIZOHO_V2", $Param) ; // Cette solution permet de recupérer QUE le BOY est pa l entete $mycurl = curl_init(); curl_setopt_array($mycurl, array( CURLOPT_URL => $Param['url'], CURLOPT_USERAGENT => $_SERVER['HTTP_USER_AGENT'], CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_CUSTOMREQUEST => $Param['method'], CURLOPT_HTTPHEADER => array(), CURLOPT_SSL_VERIFYPEER => false, CURLOPT_FOLLOWLOCATION => true, // CURLOPT_HEADER => true, )); // CURLOPT_POSTFIELDS => $Param['body'], if( key_exists('body',$Param) ) curl_setopt($mycurl, CURLOPT_POSTFIELDS, $Param['body']); // Si Header if( is_array($Param['header']) ) curl_setopt($mycurl, CURLOPT_HTTPHEADER, $Param['header']); $result = curl_exec($mycurl); $err = curl_error($mycurl); // Scinde HEADER & REPONSE //list($header, $reponse) = explode("\r\n\r\n", $result, 2); //$reponse = json_decode($reponse,TRUE); curl_close($mycurl); return $result; } // Liste les commandes public function ListeCmds( $idu ) { $cnx = $this->CnxDBaseSQL(); if($idu ) $QW = mysqli_query($cnx, "SELECT * FROM commandes_v2 WHERE idunique='".$idu."' && msg='paiement_ok' "); else $QW = mysqli_query($cnx, "SELECT * FROM commandes_v2 WHERE paiement LIKE '".date('Y-m-d')."%' && msg='paiement_ok' "); while ($Col = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) { $Liste[] = $Col; } return $Liste; } public function Cmd($idu) { $cnx = $this->CnxDBaseSQL(); $QF = mysqli_query($cnx, "SELECT * FROM commandes_v2 WHERE idunique = '$idu'"); $Col = mysqli_fetch_array($QF, MYSQLI_ASSOC); return $Col; } // INSERT la commande public function InsertCmd($idunique , $array) { $cnx = $this->CnxDBaseSQL(); $INSERT = mysqli_query ($cnx , "INSERT INTO zoho_factures (idunique,email) VALUE ('".$idunique."','".$array['email']."')"); $error = mysqli_error($cnx); if ($error) return $error; else return "OK"; } // UPDATE la commande public function UpdateCmd( $query ) { $cnx = $this->CnxDBaseSQL(); $UPDATE = mysqli_query ($cnx , $query); $error = mysqli_error($cnx); if ($error) return $error; else return "OK"; } // Etat du traitement ZOHO public function ZohoTraitement( $idunique ) { $cnx = $this->CnxDBaseSQL(); $QF = mysqli_query($cnx, "SELECT * FROM zoho_factures WHERE idunique='$idunique'"); $Col = mysqli_fetch_array($QF, MYSQLI_ASSOC); $Traitement = $Col; return $Traitement; } // Liste les commandes gérée par ZOHO public function LstCmdZOHO( $param ) { $cnx = $this->CnxDBaseSQL(); if($param['etat']=="active" ) $Query = "zoho_idclient IS NOT NULL && STOP IS NULL"; if($param['etat']=="inactive") $Query = "zoho_idclient IS NOT NULL && STOP IS NOT NULL ORDER BY stop DESC"; //echo $Query; $QW = mysqli_query($cnx, "SELECT * FROM `zoho_factures` WHERE $Query"); while ($Col = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) { $QF = mysqli_query($cnx, "SELECT * FROM commandes_v2 WHERE idunique='".$Col['idunique']."'"); $Dtl = mysqli_fetch_array($QF, MYSQLI_ASSOC); $Lst[$Col['idunique']]['idunique'] = $Col['idunique']; $Lst[$Col['idunique']]['email'] = $Col['email']; $Lst[$Col['idunique']]['stop'] = $Col['stop']; $Lst[$Col['idunique']]['ste'] = $Dtl['nomsociete']; $Lst[$Col['idunique']]['prochain_rec'] = $Col['prochain_rec']; $Lst[$Col['idunique']]['id_rec'] = $Col['id_rec']; } return $Lst; } // Cherche la référence ZOHO de l article public function ZohoReference( $idart ) { $cnx = $this->CnxDBaseSQL(); $QF = mysqli_query($cnx, "SELECT * FROM offres WHERE id='$idart'"); $Col = mysqli_fetch_array($QF, MYSQLI_ASSOC); return $Col; } // Cree un ficheir pour le dashboard public function ContenuTable() { $fileJson = "./log/cdev2.txt"; $fp = fopen($fileJson, 'w'); // a+ ajoute / w ecrase $cnx = $this->CnxDBaseSQL(); $QW = mysqli_query($cnx, "SELECT * FROM `zoho_factures` WHERE `zoho_nofacture` IS NOT NULL && STOP IS NULL"); while ($Col = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) { $CSV = $Col['idunique'].";".$Col['email'].";".$Col['zoho_nofacture'].";".$Col['zoho_datefact'].";".$Col['semaine3'].";".$Col['info_email'].";".$Col['semaine4'].";".$Col['prochain_rec']; fwrite($fp,$CSV."\n"); } fclose($fp); } // Envoi un email de situation (pour les début) public function Situation() { $cnx = $this->CnxDBaseSQL(); // Liste toutes les demandes $QW = mysqli_query($cnx, "SELECT * FROM zoho_factures WHERE 1 "); while ($Col = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) { if( $Col['semain3']==date("Y-m-d") ) { $Ope[$Col['idunique']] = "Vous devez lancer une opération Semaine 3"; } elseif( $Col['semain4']==date("Y-m-d") ) { $Ope[$Col['idunique']] = "Vous devez lancer une opération Semaine 4"; } // Détecter les commandes non générées elseif( $Col['zoho_datefact']==NULL && $Col['id']>'13' ) { echo "<h1>=>NOUVEAU </h1>"; $Ope[$Col['idunique']] = "Vous devez lancer la création contact+facture"; } } ob_start(); echo "<PRE>"; print_r($Ope); echo "</PRE>"; $buffer = ob_get_contents(); ob_end_clean(); if( count($Ope)>0 ) { echo "<h3>Envoi du CR(Situation)</h3>"; $Array = [ 'to' => 'luc@bvcs.fr', // 'subject' => '[AIRMOB/CDEV2] Situation', 'body' => $buffer, ]; $Mel = $this->MySendMailPHPMailer($Array); } } // Rapport d'etat sur la création de facture public function CRFactures() { $cnx = $this->CnxDBaseSQL(); // Liste les factures du jour $QW = mysqli_query($cnx, "SELECT * FROM commandes_v2 WHERE paiement LIKE '".date('Y-m-d')."%' && msg='paiement_ok' "); while ($Col = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) { $Liste[$Col['idunique']] = $Col; } // Si une commande est en erreur ZOHO idclient ou idfacture foreach($Liste as $idu=>$dtl) { $ret = $this->ZohoTraitement($idu); if($ret['zoho_idclient']=="ERR" || $ret['zoho_nofacture']=="ERR") { $ERR_Mel['EchecZOHO'][] = $ret; } } // Controle que la relance Semaine 3 est OK $QS3 = mysqli_query($cnx, "SELECT * FROM zoho_factures WHERE stop IS NULL && semaine3 < '".date('Y-m-d')."' && info_email is NULL "); while ($Col = mysqli_fetch_array( $QS3,MYSQLI_ASSOC )) { $ERR_Mel['EchecRelanceEmail3Semaine'][] = $Col; } if(count($ERR_Mel)>0) { ob_start(); echo "<PRE>"; print_r($ERR_Mel); echo "</PRE>"; $buffer = ob_get_contents(); ob_end_clean(); echo "<h3>Envoi du CR</h3>"; echo $buffer; //$emailweb ="luc2@bvcs.fr"; //$ret = mail("$emailweb","[AIRMOB/CDEV2] ERREUR",$buffer,"From: $emailweb\nX-Mailer: $emailweb\nReply-To: $emailweb\nX-Mailer: PHP"); $Array = [ 'to' => 'luc2@bvcs.fr', // 'subject' => '[AIRMOB/CDEV2] ERREUR', 'body' => $buffer, ]; $Mel = $this->MySendMailPHPMailer($Array); } //return $Liste; } // Semaine 3 = Envoyer un email public function Semaine3() { $cnx = $this->CnxDBaseSQL(); $Array =[]; // Si date semaine est <> 0000-00-00 et < ou = à la date de traitement et que la relance 3 n a pas ete faites $QW = mysqli_query($cnx, "SELECT * FROM zoho_factures WHERE stop IS NULL && idunique >0 && semaine3<>'0000-00-00' && semaine3 <= '".date('Y-m-d')."' && info_email is NULL "); $Cpte = $QW->num_rows; while ($Col = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) { $Array = [ 'to' => $Col['email'], // 'from' => 'isabelle.dubois@airmob.net', 'subject' => '[AIRMOB] Abonnement', 'fichier_html' => 'email.3semaine.html', ]; $idu = $Col['idunique']; $Mel = $this->MySendMailPHPMailer($Array); if ($Mel=="OK") { $Retour_Mel = $this->UpdateCmd("UPDATE zoho_factures SET info_email='".date('Y-m-d H:i:s')."' WHERE idunique='$idu'"); } else { $Retour_Mel = $this->UpdateCmd("UPDATE zoho_factures SET message='ERR envoi mail' WHERE idunique='$idu'"); } } if(!$Cpte) echo "<h2>Aucune facture (Semaine 3)</h2>"; else { echo "<h2>Envoi Email OK</h2>"; die("Fin Envoi de mail"); } } // Semaine 4 = Créer la facture au prorata + périodique public function Semaine4() { if($_REQUEST['SIMU']) echo "<h1>///-----> Simulation <-----\\\ </h1>"; $cnx = $this->CnxDBaseSQL(); $Token = $_SESSION['CDEV2']['FACTURES']['TOKEN']; $LstEmail = []; // Si date semaine est <> 0000-00-00 et < ou = à la date de traitement et que la relance 4 n a pas ete faites $QW = mysqli_query($cnx, "SELECT * FROM zoho_factures WHERE stop IS NULL && idunique >0 && semaine4<>'0000-00-00' && semaine4 <= '".date('Y-m-d')."' && zoho_prorata is NULL && zoho_rec is NULL LIMIT 1"); $Cpte = $QW->num_rows; while ($Col = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) { $CmdZOHO_P = []; $CmdZOHO_R = []; // Prendre la date de paiement/creation de la facture zoho (zoho_datefact) et ajouter 1 mois 1 jour $Plus1M1J = strtotime(date("Y-m-d", strtotime( $Col['zoho_datefact'] )) . " +1 month + 1 day"); // Fin du mois du 1 mois + 1 jour ex : création le 2021-04-22, prorata = 23/05/2021 31/05/2021 $FinduMoisPlus = cal_days_in_month(CAL_GREGORIAN, date("m", $Plus1M1J), date("Y", $Plus1M1J)); // // $jour1REC = strtotime(date("Y-m-d", strtotime( date("Y", $Plus1M1J)."-".date("m", $Plus1M1J)."-".$FinduMoisPlus )) . " +1 days"); $REC_finmois = cal_days_in_month(CAL_GREGORIAN, date("m", $jour1REC), date("Y", $jour1REC)); // $idu = $Col['idunique']; $Prorata_Deb = new DateTime(date("Y-m-d", $Plus1M1J)); $Prorata_Fin = new DateTime(date("Y", $Plus1M1J)."-".date("m", $Plus1M1J)."-".$FinduMoisPlus); $interval = $Prorata_Fin->diff($Prorata_Deb); $Nbrejrs = $interval->days+1; // ajoute pour avoir jours pleins 27-31 = 5 jrs $Cmd = $this->Cmd($idu); $Dtl_Cmd = json_decode($Cmd['detail_cmd'], TRUE); $Type_arr = ['i', 't', 'f']; foreach ($Type_arr as $Type) { foreach ($Dtl_Cmd['dtl_cmd'][$Type] as $key => $dtl) { // Exclu de FAS et/ou REC le 42 Frais d'expédition if($dtl['idart']<>'42') { $LigneCmd = []; $RefArtZ = $this->ZohoReference($dtl['idart']); // Période PRORATA $Du_P = date("d/m/Y", $Plus1M1J); $Au_P = $FinduMoisPlus . "/" . date("m", $Plus1M1J) . "/" . date("Y", $Plus1M1J); // Période REC $Du_R = date("d/m/Y", $jour1REC); $Au_R = $REC_finmois . "/" . date("m", $jour1REC) . "/" . date("Y", $jour1REC); if ($dtl['ctg'] == "offre") { $description_P = "Du " . $Du_P . " au " . $Au_P; $description_R = "Du " . $Du_R . " au " . $Au_R; } else { $description_P = ""; $description_R = ""; } // (REC / Nbre de jour du mois) x total jrs restants $PRORATA = number_format(($dtl['rec'] / $FinduMoisPlus) * $Nbrejrs, 2); $REC = number_format($dtl['rec'], 2); // Ligne Article ZOHO $CmdZOHO_P[] = ["item_id" => $RefArtZ['ref_zoho'], "quantity" => 1, "purchase_rate" => $PRORATA, "rate" => $PRORATA, "description" => $description_P]; $Total_PRORATA += $PRORATA; // Facture REC $CmdZOHO_R[] = ["item_id" => $RefArtZ['ref_zoho'], "quantity" => 1, "purchase_rate" => $REC, "rate" => $REC, "description" => $description_R]; $Total_REC += $REC; } } } // Array echo "<h2>PRORATA</h2><pre>"; print_r($CmdZOHO_P); echo "</pre>"; echo "<h2>REC</h2><pre>"; print_r($CmdZOHO_R); echo "</pre>"; // ============> Lance la Facture au PRORATA echo "<h1>=>Facture PRORATA HT ($Total_PRORATA) </h1>"; $notes = ""; $JsonFactP = ['JSONString' => '{ "customer_id": ' . $Col['zoho_idclient'] . ', "reference_number" : ' . $idu . ', "template_id" : 838708000003769005, "date":' . date('Y-m-d') . ', "line_items" : ' . json_encode($CmdZOHO_P) . ' }']; echo "<pre>"; print_r($JsonFactP); echo "</pre>"; // Pour forcer sinon // if($_REQUEST['SIMU']) { $GO_rec = true; } else { $Url = 'https://books.zoho.com/api/v3/invoices?organization_id=' . APIZOHO['IdOrg']; $ParamF = ['url' => $Url, 'method' => 'POST', 'header' => ["Authorization: $Token", "contentType: application/x-www-form-urlencoded;charset=UTF-8"], 'body' => $JsonFactP]; $ResultF = $this->MyCurl_APIZOHO_V2($ParamF); $FactP = json_decode($ResultF, TRUE); $invoice_id = $FactP['invoice']['invoice_id']; if ($FactP['code'] == '0') { $Retour_factP = $this->UpdateCmd("UPDATE zoho_factures SET zoho_prorata='" . $FactP['invoice']['invoice_number'] . "' WHERE idunique='$idu'"); if ($Retour_factP <> 'OK') echo "<h1>/!\ ERREUR </h1>"; echo "<pre>"; print_r($Retour_factP); echo "</pre>"; $GO_rec = true; } else { $Retour_factP = $this->UpdateCmd("UPDATE zoho_factures SET zoho_prorata='ERR',message='" . $FactP['message'] . "' WHERE idunique='$idu'"); } // Recupérer le total TTC apres la création de facture et comparer avec STRIPE pour eviter decalage de 1centimes $balanceFactZoho = $FactP['invoice']['balance']; /* echo "<pre style='background: #ccc'>"; print_r($FactP); echo "</pre>";*/ } // ============> Lance la facture PERIODIQUE / REC si la Prorata est OK echo "<h1>=>Facture REC HT ($Total_REC) </h1>"; if($GO_rec) { $notes = ""; $JsonFactR = ['JSONString' => '{ "customer_id": ' . $Col['zoho_idclient'] . ', "recurrence_name" : ' . $idu . ', "recurrence_frequency":"months", "template_id" : 838708000003769005, "date":' . date('Y-m-d') . ', "line_items" : ' . json_encode($CmdZOHO_R) . ', "amount":'.number_format($Total_REC,2).', "start_date":'. date("Y-m-d", $jour1REC).', "repeat_every":1, "payment_terms": 0, }']; echo "<pre>"; print_r($JsonFactR); echo "</pre>"; if(!$_REQUEST['SIMU']) { $Url = 'https://books.zoho.com/api/v3/recurringinvoices?organization_id=' . APIZOHO['IdOrg']; $ParamF = ['url' => $Url, 'method' => 'POST', 'header' => ["Authorization: $Token", "contentType: application/x-www-form-urlencoded;charset=UTF-8"], 'body' => $JsonFactR]; $ResultF = $this->MyCurl_APIZOHO_V2($ParamF); $FactR = json_decode($ResultF, TRUE); if ($FactR['code'] == '0') { $Prochain_rec = date("Y-m-d", $jour1REC); $Retour_factR = $this->UpdateCmd("UPDATE zoho_factures SET zoho_rec='OK',prochain_rec='" . $Prochain_rec . "',zoho_rec='" . number_format($Total_REC, 2) . "' WHERE idunique='$idu'"); if ($Retour_factR <> 'OK') echo "<h1>/!\ ERREUR </h1>"; echo "<pre>"; print_r($Retour_factR); echo "</pre>"; } else { $Retour_factP = $this->UpdateCmd("UPDATE zoho_factures SET zoho_rec='ERR',message='" . $FactR['message'] . "' WHERE idunique='$idu'"); } /* echo "<pre style='background: #ccc'>"; print_r($FactR); echo "</pre>";*/ } } // STRIPE // Lance le réglement de la facture au PRORATA si pas deja fait ! if( !$Col['stripe_prorata'] ) { //if ($Total_PRORATA<>$balanceFactZoho ) { die("Attention paiement bloqué ! différence entre le total calculé par le script et celui de ZOHO ");} // Infos $Total_PRO_orig = $Total_PRORATA; // ss tva $Total_PRORATA += round($Total_PRORATA*20)/100; $amount = number_format($Total_PRORATA,2); $ret_pi = $this->STRIPE_Infos($Col['pi']); $param['amount'] = ($amount*100); $param['pi'] = $ret_pi['0']; $param['cus'] = $ret_pi['1']; $param['desc'] = "PRO_".$Col['idunique']; echo "<h1>=>Paiement PRORATA HT : $Total_PRO_orig / TTC : $amount / calclé par ZOHO : $balanceFactZoho </h1>"; echo "<pre>"; print_r($param); echo "</pre>"; // Paiement if($_REQUEST['SIMU']) { echo "<h1>=>STRIPE BLOQUE !</h1>"; } else { $ret_fa = $this->STRIPE_paiement($param); echo "STRIPE <pre style='background: cyan'>"; print_r($ret_fa); echo "</pre>"; echo "-".$ret_fa[0]."-".$ret_fa[1]."-"; } if($ret_fa[0]=="OK") { echo "<h1>PAID=>OK</h1>"; $ret_conf = $this->STRIPE_Confirm($ret_fa[1]); if($ret_conf[0]=="OK") { $UPDATE = mysqli_query($cnx, "UPDATE zoho_factures SET stripe_prorata ='" . date('Y-m-d H:i:s') . "' WHERE idunique='" . $Col['idunique'] . "'"); $param['id_cli'] = $Col['zoho_idclient']; $param['id_rec'] = $invoice_id; $param['amount'] = $Total_PRORATA; $this->BasculerModePaye($param); // ZOHO Passe la commande en payé ! (customerpayments) /* $JsonPaiement = ['JSONString' =>' { "customer_id": "'.$Col['zoho_idclient'].'", "payment_mode": "creditcard", "amount": '.$Total_PRORATA.', "date": "'.date('Y-m-d').'", "description": "Paiement auto. depuis Commande V2", "invoices": [{ "invoice_id": "'.$invoice_id.'","amount_applied": '.$Total_PRORATA.'}] }']; // Array echo "<pre>"; print_r($JsonPaiement); echo "</pre>"; die("STOP 000000"); */ /* OLD $Url = 'https://books.zoho.com/api/v3/customerpayments?organization_id='.APIZOHO['IdOrg']; $ParamF = ['url'=>$Url,'method'=>'POST','header'=>["Authorization: $Token","contentType: application/x-www-form-urlencoded;charset=UTF-8"],'body' => $JsonPaiement]; $ResultF = $this->MyCurl_APIZOHO_V2($ParamF); $Paid = json_decode($ResultF, TRUE); echo "<pre style='border:1px solid #000'>"; print_r($Paid); echo "</pre>"; */ // ZOHO Passe la commande en payé ! } else { $UPDATE = mysqli_query($cnx, "UPDATE zoho_factures SET message='STRIPE / ERR Paiement Prorata (confirmation) ' WHERE idunique='" . $Col['idunique'] . "'"); } } else { // La demande n est pas effectuée $UPDATE = mysqli_query($cnx, "UPDATE zoho_factures SET message='STRIPE / ERR Paiement Prorata (demande) '.$ret_fa[1] WHERE idunique='" . $Col['idunique'] . "'"); } } die("FIN Semaine 4"); } if(!$Cpte) echo "<h2>Aucune facture (Semaine 4)</h2>"; } // Periodique (Paiement STRIPE ) // Pas lancé automatiquement public function Periodique() { /* Le 01/10/2021 Verifier que les facture periodique sont bien au bon mois Octobre 2021 Si pas OK alors faire %(m+1) (y)% * */ if(date('d')=="01" ||date('d')=="1") { if($_REQUEST['SIMU']) echo "<h1>///-----> Simulation <-----\\\ </h1>"; // die("INTERRUPTION VOLONTAIRE"); $Token = $_SESSION['CDEV2']['FACTURES']['TOKEN']; $cnx = $this->CnxDBaseSQL(); $montant = 0; $daterecherchee = date('Y-m')."-01";// // $daterecherchee = "2021-07-01"; echo "<h1>=>".$daterecherchee."</h1>"; //$Q = "idunique='60dd73a0cc541'"; $Q ="prochain_rec ='".$daterecherchee."' LIMIT 1"; // Si prochain_rec $QW = mysqli_query($cnx, "SELECT * FROM zoho_factures WHERE stop IS NULL && idunique >0 && $Q"); $Cpte = $QW->num_rows; while ($Col = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) { echo "<h1>=>".$Col['idunique']."</h1>"; if(!$Col['id_rec']) die("ID de la factPeriod ABSENT !<br>Sur BOOKS, rubrique Factures périodiques, sélectionner le client et récupérer l'id dans l url<br>https://books.zoho.com/app#/recurringinvoices/838708000011959139?filter_by..."); // Trouve transaction_id à la bonne date pour effectuer le paiement $Url = 'https://books.zoho.com/api/v3/recurringinvoices/'.$Col['id_rec'].'?organization_id=' . APIZOHO['IdOrg']; $ParamF = ['url' => $Url, 'method' => 'GET', 'header' => ["Authorization: $Token", "contentType: application/x-www-form-urlencoded;charset=UTF-8"], 'body' => $JsonFactR]; $ResultF = $this->MyCurl_APIZOHO_V2($ParamF); $FactP = json_decode($ResultF, TRUE); if($FactP['code']<>'0') die("Impossible de trouver le détail !"); foreach($FactP['recurring_invoice']['comments'] as $NomChamp=>$Obj) { // Array echo "<pre>"; print_r($Obj); echo "</pre>"; if($Obj['date']=="$daterecherchee") $ID_Periodique = $Obj['transaction_id']; } //echo "<pre>"; print_r($FactP); echo "</pre>"; echo "<h1>=>".$ID_Periodique."</h1>"; if(!$ID_Periodique) die("Impossible de trouver transaction_id"); // Lance le paiement if($_REQUEST['SIMU']) { echo "<h1>///-----> Simulation <-----\\\ </h1>"; } else { $STOP = false; // true = bloque le paiement if (!$STOP && $Col['pi']) { // Infos $montant = $Col['zoho_rec']; $montant += round($montant*20)/100; $ret_pi = $this->STRIPE_Infos($Col['pi']); $param['amount'] = ($montant*100); $param['pi'] = $ret_pi['0']; $param['cus'] = $ret_pi['1']; $param['desc'] = "REC_".$Col['idunique']; echo "<pre style='border:1px solid #000'>"; print_r($param); echo "</pre>"; // Paiement $ret_fa = $this->STRIPE_paiement($param); echo "STRIPE <pre style='background: cyan'>"; print_r($ret_fa); echo "</pre>"; echo "-".$ret_fa[0]."-".$ret_fa[1]."-"; /* if($ret_fa[0]=="OK") { $ret_conf = $this->STRIPE_Confirm($ret_fa[1]); echo "<pre>"; print_r($ret_conf); echo "</pre>"; } */ // STOP ici pour juste realiser le paiement // die("STOP - Mais il faut changer la valeur prochain_rec avec le mois prochain"); if($ret_fa[0]=="OK") { // Confirme le paiement $ret_conf = $this->STRIPE_Confirm($ret_fa[1]); if($ret_conf[0]=="OK") { $MyDate = strtotime(date("Y-m-d", strtotime($Col['prochain_rec'])) . " +1 month"); $MoisProchain = date("Y-m-d", $MyDate); $UPDATE = mysqli_query($cnx, "UPDATE zoho_factures SET prochain_rec='" . $MoisProchain . "' WHERE idunique='" . $Col['idunique'] . "'"); // Passe la facture périodique en PAYE //$param['id_rec'] = $Col['id_rec']; // ID de la factPeriod, il faut ouvir cliquer sur le bouton et regarder l URL et indique l id dasn la table // Uniquement poru un paiement direct $param['id_cli'] = $Col['zoho_idclient']; $param['id_rec'] = $ID_Periodique; $param['amount'] = number_format($montant,2); echo "<pre>"; print_r($param); echo "</pre>"; $this->BasculerModePaye($param); } else { // Le paiemenr n est pas confirmé $UPDATE = mysqli_query($cnx, "UPDATE zoho_factures SET message='STRIPE / ERR Paiement Périodique (confirmation) ' WHERE idunique='" . $Col['idunique'] . "'"); } } else { // La demande n est pas effectuée $UPDATE = mysqli_query($cnx, "UPDATE zoho_factures SET message='STRIPE / ERR Paiement Périodique (demande) ' WHERE idunique='" . $Col['idunique'] . "'"); } } } } if(!$Cpte) echo "<h2>Aucune facture (périodique)</h2>"; } else { echo "<h2>Revenez le 1er du mois</h2>"; } } public function BasculerModePaye( $param ){ echo "<h1>=>Bascule la facture en PAYE </h1>"; $Token = $_SESSION['CDEV2']['FACTURES']['TOKEN']; $JsonPaiement = ['JSONString' =>' { "customer_id": "'.$param['id_cli'].'", "payment_mode": "creditcard", "amount": "'.$param['amount'].'", "date": "'.date('Y-m-d').'", "description": "Paiement auto. depuis Commande V2", "invoices": [{ "invoice_id": "'.$param['id_rec'].'","amount_applied": "'.$param['amount'].'"}] }']; $Url = 'https://books.zoho.com/api/v3/customerpayments?organization_id='.APIZOHO['IdOrg']; $ParamF = ['url'=>$Url,'method'=>'POST','header'=>["Authorization: $Token","contentType: application/x-www-form-urlencoded;charset=UTF-8"],'body' => $JsonPaiement]; $ResultF = $this->MyCurl_APIZOHO_V2($ParamF); $Paid = json_decode($ResultF, TRUE); // Array echo "<pre>"; print_r($ParamF); echo "</pre>"; echo "<pre>"; print_r($Paid); echo "</pre>"; } // Retourne les ID nécessaire à nouveau reglement à parti du PI public function STRIPE_Infos( $pi ) { // Liste la commande $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://api.stripe.com/v1/payment_intents/'.$pi, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'Authorization: Basic '.$_SESSION['AIRCMDV2']['CURL']['STRIPE']['Authorization'] ), )); $response = curl_exec($curl); $response = json_decode($response,TRUE); curl_close($curl); // Récupère $PI = $response['charges']['data']['0']['payment_method']; $CUS = $response['charges']['data']['0']['customer']; return [$PI,$CUS]; } // Cree le Paiement sur STRIPE public function STRIPE_paiement($param) { $UrlPost = "payment_method_types%5B%5D=card&amount=".$param['amount']."¤cy=eur&customer=".$param['cus']."&payment_method=".$param['pi']."&description=".$param['desc']; // Demande le paiement $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://api.stripe.com/v1/payment_intents', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => $UrlPost, CURLOPT_HTTPHEADER => array( 'Authorization: Basic '.$_SESSION['AIRCMDV2']['CURL']['STRIPE']['Authorization'], 'Content-Type: application/x-www-form-urlencoded' ), )); $response2 = curl_exec($curl); $response2 = json_decode($response2,TRUE); // Array echo "<pre>"; print_r($response2); echo "</pre>"; curl_close($curl); // Récupère if ($response2['error']) return['KO', $response2['error']['code']]; else return['OK', $response2['id']]; } // Confirme une demand ede paiement public function STRIPE_Confirm($Confirm) { $curl = curl_init(); // pm_card_visa curl_setopt_array($curl, array( CURLOPT_URL => 'https://api.stripe.com/v1/payment_intents/'.$Confirm.'/confirm', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_HTTPHEADER => array( 'Authorization: Basic '.$_SESSION['AIRCMDV2']['CURL']['STRIPE']['Authorization'], 'Content-Type: application/x-www-form-urlencoded' ), )); $response3 = curl_exec($curl); $response3 = json_decode($response3,TRUE); curl_close($curl); // Array echo "<pre>"; print_r($response3); echo "</pre>"; // Récupère if ($response3['error']) return['KO', $response3['error']['code']]; else return['OK', $response3['id']]; } // PHPMailer public function MySendMailPHPMailer($Array) { require_once './lib/phpmailer/src/PHPMailer.php'; require_once './lib/phpmailer/src/SMTP.php'; require_once './lib/phpmailer/src/Exception.php'; $mail = new PHPMailer\PHPMailer\PHPMailer(); $mail->isSMTP(); $mail->Host = "in-v3.mailjet.com"; $mail->SMTPAuth = true; $mail->Username = "91b3f6b2dd7870d31a16fd0611f5b35a"; $mail->Password = "c328d8d6bea5c27a4b2f72df0fe84676"; $mail->SMTPSecure = "tls"; $mail->Port = 587; if($Array['form']) $mail->From = $Array['form']; else $mail->From = "service-client@airmob.net"; $mail->FromName = "AIRMOB"; // Envoi mel client $mail->addAddress($Array['to']); $mail->addBCC('luc2@bvcs.fr'); // if($Array['fichier_html']) $body = file_get_contents("./lib/".$Array['fichier_html']); if($Array['body']) $body = $Array['body']; $mail->isHTML(true); $body = $body; $mail->Subject = utf8_decode($Array['subject']); $mail->Body = utf8_decode($body); $mail->AltBody = utf8_decode($body); if(!$mail->send()) { $success =""; } else { //echo "Message has been sent successfully"; $success ="OK"; } if(!$success) return "KO"; else return "OK"; } } ?>
💾 Save
❌ Cancel