Location: PHPKode > projects > Give One. Get Two. > give1get2/paiement/pay/status_report.php
<?php 

    //Status report from Moneybookers to merchant (p19 du gateway manual)
    
   	//nécessaire au params
  	include("../../nav_haut.php"); // inclure le haut de la page
  
	//envoi d'un HTTP 200 !!!
    
    // [obligatoire] Reception des données $_POST

    if( isset($_POST['pay_to_email']) ) { $pay_to_email = $_POST['pay_to_email'];  } //email du marchand
    if( isset($_POST['pay_from_email']) ) { $pay_from_email = $_POST['pay_from_email'];  } //email du consommateur
    if( isset($_POST['merchant_id']) ) { $merchant_id = $_POST['merchant_id'];  }  //identifiant unique du marchand
    if( isset($_POST['mb_transaction_id']) ) { $mb_transaction_id = $_POST['mb_transaction_id'];  } //numero id de la transaction
    if( isset($_POST['mb_amount']) ) { $mb_amount = $_POST['mb_amount'];  } //montant total de la transaction défini par le consommateur
    if( isset($_POST['mb_currency']) ) { $mb_currency = $_POST['mb_currency'];  } //unité monétaire utilisée pour la transaction défini par le consommateur
    if( isset($_POST['status']) ) { $status = $_POST['status'];  } //statuts de la transaction
    if( isset($_POST['md5sig']) ) { $md5sig = $_POST['md5sig'];  } //signature md5
    if( isset($_POST['amount']) ) { $amount = $_POST['amount'];  } //montant de base défini par le marchand
    if( isset($_POST['currency']) ) { $currency = $_POST['currency'];  } //devise de base défini par le marchand
  	
  	// [facultatif]
  	
  	//if( isset($_POST['customer_id']) ) { $customer_id = $_POST['customer_id'];  } // Unique ID for the customer's moneybookers.com account.
  	if( isset($_POST['transaction_id']) ) { $transaction_id = $_POST['transaction_id'];  }else{ $transaction_id = null; } // Reference or identification number provided by the merchant.
  	//if( isset($_POST['payment_type']) ) { $payment_type = $_POST['payment_type'];  } // WLT / PBT / MBD
  	
  	// [ajouté]
  	$date_transaction_id = time(); // La date de reception de la transaction
  	
  	 //doit ausi vérifier que celà provient de la bonne adresse IP (p20) contacter moneybookers pour plus de renseignements
  	 
  	// Si tout les POST ont été sauvegardé : envoi d'un HTTP 200 !!!
  	
  	$valide = true; //init
	
  	// Filtrage
  	include("status_report_filtre.php");
  	
  	// Vérification
  	if(true == $valide ){
    
    // Traitement des données

		if(mysql_select_db($base,$connexion)){
		  
		  //deux numéros de transactions ne peuvent être identique
		  $requete_select = "Select * from freepay_api_moneybookers where mb_transaction_id = '$mb_transaction_id';";
		  $resultat_select = mysql_query($requete_select,$connexion); //connexion de la requete
		  $ligne_select = mysql_fetch_assoc($resultat_select); //affichage des résultats
			
			if (empty($ligne_select)) {
				 //Faire les requetes dans la base SQL ici
				mysql_query("INSERT INTO freepay_api_moneybookers values ('$mb_transaction_id', '$status', '$transaction_id', '$pay_from_email', '$merchant_id', '$pay_to_email', '$amount', '$currency', '$mb_amount', '$mb_currency', '$md5sig', '$date_transaction_id','".$_SERVER["REMOTE_ADDR"]."');");           
				
				if('2' == $status){ //Si status correct, faire les traitements internes
					
					//Récupération de la transaction interne
					
					$requete_select_num_transaction = "Select * from freepay_achat_en_attente where num_transaction = '".$transaction_id."';";
					$resultat_select_num_transaction = mysql_query($requete_select_num_transaction,$connexion); //connexion de la requete
					$ligne_select_num_transaction = mysql_fetch_assoc($resultat_select_num_transaction); //affichage des résultats
					
					//récupération de l'ISIN initial
					
					$requete_select_numtitre = "Select * from freepay_titre where numtitre = '".$ligne_select_num_transaction["num_titre"]."';";
					$resultat_select_numtitre = mysql_query($requete_select_numtitre,$connexion); //connexion de la requete
					$ligne_select_numtitre = mysql_fetch_assoc($resultat_select_numtitre); //affichage des résultats
					
					//changement apporté
					
					$NouvelleValeurTitre[$i] = $ligne_select_num_transaction["valeur_titre"] + $ligne_select_num_transaction["valeur_titre"] * $ligne_select_num_transaction["profit_titre"] / 100 ;
				
					 if (empty($ligne_select_num_transaction["profit_titre"]) or $ligne_select_num_transaction["profit_titre"] < '0.00') {  //définition du taux de profit minimal
						$ligne_select_num_transaction["profit_titre"] = '0.00';
						$NouvelleValeurTitre[$i] =  $ligne_select_num_transaction["valeur_titre"];
					  }
				  
					
						//3 cas possible : la nouvelle valeur du titre est supérieure, égale ou inférieure à la valeur de l'ancien proprio
						if($mb_amount >= $ligne_select_numtitre["valeurtitre"]){
							
						  //changer le nom du propriétaire du titre
						  //on ne peux pas récupérer la session : c'est un bot
						  mysql_query("UPDATE freepay_titre SET mailcli = '".$ligne_select_num_transaction["mail_acheteur"]."', merchant_id = '".$ligne_select_num_transaction["id_acheteur"]."' where numtitre = '".$ligne_select_num_transaction["num_titre"]."';");
						  
						  //Historique du transfert du titre
						  mysql_query("INSERT INTO freepay_titre_transferer values ('".date("Y")."-".date("m")."-".date("j")." ".date("H").":".date("i").":".date("s")."', '".$ligne_select_num_transaction["num_titre"]."', '".$ligne_select_num_transaction["mail_acheteur"]."', '".$mb_amount."', '".$ligne_select_num_transaction["profit_titre"]."')");

						  //appliquer le nouveau tarif dans les deux cas (puisque valorisation)
						  mysql_query("UPDATE freepay_titre SET valeurtitre = ".$NouvelleValeurTitre[$i]." where numtitre = '".$ligne_select_num_transaction["num_titre"]."';");

						}
						
						
						if($mb_amount < $ligne_select_numtitre["valeurtitre"]){

							// Déduction du montant du titre sélectionné
							  mysql_query("UPDATE freepay_titre SET valeurtitre = valeurtitre - '".$mb_amount."' where numtitre ='".$ligne_select_num_transaction["num_titre"]."';");
							  
							// Création d'un nouveau titre
							  include("ISIN_gen.php");
							  mysql_query("INSERT INTO freepay_titre values ('$ISIN', '".date("Y")."-".date("m")."-".date("j")." ".date("H").":".date("i").":".date("s")."', '".$NouvelleValeurTitre[$i]."', '".$ligne_select_num_transaction["mail_acheteur"]."', '".$ligne_select_num_transaction["id_acheteur"]."')");
							  
							// Historique du transfert du titre
							  mysql_query("INSERT INTO freepay_titre_transferer values ('".date("Y")."-".date("m")."-".date("j")." ".date("H").":".date("i").":".date("s")."', '$ISIN', '".$ligne_select_num_transaction["mail_acheteur"]."', '".$mb_amount."', '".$ligne_select_num_transaction["profit_titre"]."')");
							  
						}
						
						//Dans tout les cas, la transaction interne change de status
						mysql_query("UPDATE freepay_achat_en_attente SET status = '2' WHERE num_transaction = '$transaction_id' ");
						
						// Notification (feedback) du recepteur         
						include("notifications.php");
					}
			}else{
			  echo "<h4 class='info'>La transaction a déjà été enregistrée</h4>";
			}
		}else{
			echo "<p class='erreur'>La base est introuvable ou les parametres sont incorrects.</p>";
		}
 
  }
  
	include("../../nav_bas.php"); // inclure le bas de la page
       
?>
Return current item: Give One. Get Two.