<?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
?>