<?php

////////////////////////////////////////////////////////////////////////////////
function logs_hipay($txt) {
////////////////////////////////////////////////////////////////////////////////

  // ecrit un message dans le fichier ./hipay.txt
  // ne pas utiliser la fonction logs() definie dans helpers.php car il est inclus ci dessous !
  
  $logfile = "./hipay.txt";
  
  $fp=fopen($logfile, "a");

  $now = date ("Y-m-d H:i:s");
  $ip = $_SERVER["REMOTE_ADDR"];
  
  fwrite($fp, "$ip | $now | $txt\n");

  fflush ($fp);
  fclose ($fp);
}

////////////////////////////////////////////////////////////////////////////////
// PROGRAMME PRINCIPAL
////////////////////////////////////////////////////////////////////////////////
/*
include_once ("defines.php");
include_once ("helpers.php");
include_once ("labels.php");

$display_identifier = $_REQUEST["display_identifier"];   // non defini si on affiche le paiement depuis l'admin
$subscription_id = $_REQUEST["subscription_id"];         // id de un des 4 types de packs definis dans la table subscriptions
$discount = $_REQUEST["discount"];  // "1" ou "2" si on beneficie d'une reduction sur cette subscription, 0 sinon
$from = $_REQUEST["from"];          // provenance : "app" / "web"
$language = $_REQUEST["language"];  // fr, uk, us, de, es (a convertir dans le code language a utiliser pour SG)
$ext = $_REQUEST["ext"];            // fr, be, us, com.au, etc
$app = $_REQUEST["app"];            // 1 : apx, 2 : j1p, 3 : pmi

// valeurs par defaut si non renseignees dans l'URL (pour les texts, sinon toujours renseignees)
if (!$display_identifier) $display_identifier = "1";    // sur FR pour test
if (!$subscription_id) $subscription_id = 2;    // pack 1 promotion
if (!$language) $language = "fr";
if (!$from) $from = "web";
if (!$app) $app = 1;
if (!$ext) $ext = get_ext();

$EXT = preg_replace("/\./", "_", $ext);     // com.au => com_au

//~ echo ("<html>");
//~ echo("<head>");
//~ echo("<title>HIPAY - Secure Payment</title>");
//~ echo("<meta name='viewport' content='user-scalable=no,width=device-width' />");
//~ echo("<meta charset='utf-8'>");
//~ echo("</head>");

//~ echo("<body bgcolor=#ffffff>");
//~ echo("<font color=#000000>");

//~ echo("<br><center><img src='images/bank/hipay.png' width='200'></center><br>");
//~ echo("<br><center><span>" . get_label("redirection vers un site securise") . "</span></center><br>");

$count_connect = 0;
$nb_retry = 3;
ob_start();

$link = mysql_connect(HOST_BD, LOGIN_BD, PWD_BD);
while (!$link && $count_connect != $nb_retry)
{
  $count_connect = $count_connect + 1;
	sleep(0.5);
	$link = mysql_connect(HOST_BD, LOGIN_BD, PWD_BD);
}

ob_end_clean();

if (!$link) {
  //die (mysql_error());
  echo("<center><b><h2>Unreachable Database!</h2></center></b>");
  echo("<br><br><br>");
}
else {
  mysql_select_db (NAME_BD);
  
  // recherche du commercant associe a ce display identifier
  $query = "select * from merchants";
  $query .= " where display_identifier='$display_identifier'";
  $query .= " and removed_on is null";

  //~ echo $query;
  //~ return;

  $result = mysql_query ($query);
  $row = mysql_fetch_assoc ($result);
  mysql_free_result ($result);

  if (!$row) {
    echo("<center><b><h2>Unknown merchant (id=$display_identifier) </h2></center></b>");
    echo("<br><br><br>");
  }
  else {
    // en fonction de la localisation du commercant et de son type de subscription, rechercher le montant et la devise de paiement
    $id = $row["id"];                           // id du commerce dans la table merchants
    
    $email = $row["email"];   // email du client pour envoyer un mail de confirmation par hipay
    
    // recherche du type de montant associé a l'activite de ce commercant
    $activity_id = $row["activity_id"];
    $query = "select * from activities";
    $query .= " where id=$activity_id";
    
    //~ echo $query;
    //~ return;
    
    $result = mysql_query ($query);
    $row = mysql_fetch_assoc ($result);
    mysql_free_result ($result);
    
    if (!$row) {
      // activite non trouvee : on considere que le montant associe est d'id 1
      $amount_id = 1;
    }
    else {
      // type du montant pour cette activite, a associer au montant reel dans la table subscriptions
      $amount_id = $row["amount_id"];
    }
    if ($amount_id != 1 && $amount_id != 2 && $amount_id != 3 && $amount_id != 4 && $amount_id != 5) {
      // amount_id est inconnu : on le prend egal a 1
      $amount_id = 1;
    }
    if (!$ext) {
      echo("<center><b><h2>'ext' parameter not filled in call_request</h2></center></b>");
      echo("<br><br><br>");
      echo("</body></html>");
    }
    else {
      // rechercher les infos de paiement dans la table parameters (TVA, currency_code)
      $parameters = get_parameters();
      if (!$parameters) {
        echo("<center><b><h2>Empty 'parameters' table</h2></center></b>");
        echo("<br><br><br>");
        echo("</body></html>");
      }
      else {
        $currency = $parameters["currency"];
        $vat = $parameters["vat"];
        $country_codes = $parameters["country_codes"];    // liste des cc separes par , 
        
        // on recupere le 1er country code de la liste
        $arr = explode(",", $country_codes);        // ["fr", "mq"]
        $country_code = strtoupper($arr[0]);        // "fr" => "FR"
        
        // le montant varie selon le type de subscription
        $subscription = get_subscriptions($subscription_id);
        
        if (!$subscription) {
          echo("<center><b><h2>Unknown subscription! (id: $subscription_id)</h2></center></b>");
          echo("<br><br><br>");
          echo("</body></html>");
        }
        else {
          $amount = $subscription["amount$amount_id"];   // amount1, amount2,... amount5
          $national_send = $subscription["national_send"];
          $discount_percent = $subscription["discount_percent"];
          $discount_dollars = $subscription["discount_dollars"];
          $discount_percent_on_close_payment = $subscription["discount_percent_on_close_payment"];
          
          // ajouter le prix de l'envoi national si present
          if ($national_send) {
            $amount_national_send = $subscription["amount_national_send"];
            $amount = $amount + $amount_national_send;
          }

          if ($discount == 1) {
            if ($discount_percent) $amount = $amount * (1 - $discount_percent);
            else if ($discount_dollars) $amount = $amount - $discount_dollars;
          }
          else if ($discount == 2) {
            if ($discount_percent_on_close_payment) $amount = $amount * (1 - $discount_percent_on_close_payment);
          }
          
          // creer une transaction dans la table transactions
          $transaction_id = get_new_transaction_id($app, $id, $subscription_id, $amount, $vat, $currency_code);
          
          // ajouter la TVA selon le pays
          $amount_ttc = $amount * (1 + $vat);            // 1.2, soit 20%
          $amount_ttc = number_format($amount_ttc, 2);   // 2 decimales
          
          //~ if ($ext == "fr") echo "<br><center>La transaction sera de $amount_ttc € (incluant la TVA)</center>";
          //~ if ($ext == "com.ar") echo "<br><center>La transacción se convierte en USD</center>";
          if ($language == "fr") $language_hipay = "fr";
          else if ($language == "uk") $language_hipay = "en";
          else if ($language == "us") $language_hipay = "en";
          else if ($language == "de") $language_hipay = "de";
          else if ($language == "it") $language_hipay = "it";
          else if ($language == "es") $language_hipay = "es";
          else $language_hipay = "en";
  */
        
        function get_domain ($app) {return "google";}
          $account_id = "9565809";   // compte principal
          $website_id = "396785";    // aproximeo.com
          $age_group = "ALL";        // paiements pour tous les ages
          $category_id = "621";      // id de la categorie des produits vendus sur hipay
          $renewable = "12";         // nb de mois apres lequel on renouvelle l'abonnement
          $url_acquital = "http://$ext." . get_domain($app) . ".com/hipay_autoresponse.php";   // url autoresponse apres achat / prelevement ok ou non
          $url_ok = "http://$ext." . get_domain($app) . ".com?transaction=1";       // url de retour a la boutique apres succes
          $url_ko = "http://$ext." . get_domain($app) . ".com?transaction=0";       // url de retour a la boutique apres echec
          $url_cancel = "http://$ext." . get_domain($app) . ".com";                 // url de retour a la boutique en cas d'abandon
          $url_logo = "";         // url du logo de l'application
          $locale = $language_hipay."_".$country_code;    // "fr_FR"
          $issuer_account_login = strtolower($email);     // email pre rempli du commercant
          $vat = $vat * 100;      // 0.2 => 20 (en %)
          
          $xml = "<?xml version='1.0' encoding='utf-8' ?>";
          $xml .= "<order type='subscription'>";
          $xml .=   "<userAccountId>$account_id</userAccountId>";
          $xml .=   "<currency>$currency</currency>";
          $xml .=   "<ageGroup>$age_group</ageGroup>";
          $xml .=   "<categoryId>$category_id</categoryId>";
          $xml .=   "<urlAcquital><![CDATA[$url_acquital]]></urlAcquital>";
          $xml .=   "<urlOk><![CDATA[$url_ok]]></urlOk>";
          $xml .=   "<urlKo><![CDATA[$url_ko]]></urlKo>";
          $xml .=   "<urlCancel><![CDATA[$url_cancel]]></urlCancel>";
          $xml .=   "<urlLogo><![CDATA[$url_logo]]></urlLogo>";
          $xml .=   "<locale>$locale</locale>";
          $xml .=   "<issuerAccountLogin>$issuer_account_login</issuerAccountLogin>";
          $xml .=   "<data>";     // data sera retourne en reponse dans autoresponse.php
          $xml .=     "<from>$from</from>";
          $xml .=     "<app>$app</app>";
          $xml .=     "<ext>$ext</ext>";
          $xml .=     "<transaction_id>$transaction_id</transaction_id>";
          $xml .=     "<national_send>$national_send</national_send>";
          $xml .=   "</data>";
          $xml .=   "<items>";
          $xml .=     "<item>";
          $xml .=       "<amount>$amount</amount>";             // montant HT
          $xml .=       "<delay type='month'>1</delay>";        // recurrence tous les mois
          $xml .=       "<renewable>$renewable</renewable>";    // abonnement renouvelle au bout de X mois (pour ne pas le limiter)
          if ($vat) {
            $xml .=     "<taxes>";
            $xml .=       "<tax id='1'>";
            $xml .=         "<label>VAT</label>";
            $xml .=         "<amount>$vat%</amount>";
            $xml .=       "</tax>";
            $xml .=     "</taxes>";
          }
          $xml .=     "</item>";
          $xml .=   "</items>";
          $xml .= "</order>";
          
          $data = trim($xml); 
          
          header('Content-Type: text/xml');
          echo $xml;
          return;
          
          logs_hipay("Envoye dans hipay_request : $data");
          
          // your website Hipay key 
          $signKey = "4251fae333650590f7f7fb524e870e2b"; 
          $encodedData = base64_encode($data); 
          $md5Sign = md5($encodedData.$signKey);          
          
          // urls pour effetctuer les paiements
          $hipay_url = "https://payment.hipay.com/index/form/";              // url reelle
          $hipay_test_url = "https://test-payment.hipay.com/index/form/";    // url de test
          
          $hipay_url = $hipay_test_url;   // pour activer le mode test
          
          echo "<form name='form_hipay' target='_blank' action='$hipay_url' method='post'>";
          echo   "<input type='hidden' name='mode' value='MODE_B'/>";
          echo   "<input type='hidden' name='website_id' value='$website_id'/>";
          echo   "<input type='hidden' name='sign' value='$md5Sign'/>";
          echo   "<input type='hidden' name='data' value='$encodedData'/>";
          echo   "<input style='display:none1' type='submit' value='Payer'/>";
          echo "</form>";
          echo "<script>";
          //~ echo "setTimeout(function(){document.form_hipay.submit();}, 2000)";   // afficher directement la page de paiement
          echo "</script>";


echo("</body></html>");

?>
