+ function handler_cyber2_return(&$page, $uid = null)
+ {
+ global $globals, $platal;
+
+ /* on vérifie la signature */
+ $vads_params = array();
+ foreach($_REQUEST as $key => $value)
+ if(substr($key,0,5) == "vads_")
+ $vads_params[$key] = $value;
+ ksort($vads_params);
+ $signature = sha1(join('+',$vads_params).'+'.$globals->money->cyperplus_key);
+ //if($signature != Env::v('signature')) {
+ // cb_erreur("signature invalide");
+ //}
+
+ /* on extrait les informations sur l'utilisateur */
+ $user = User::get(Env::v('vads_cust_id'));
+ if (!$user) {
+ cb_erreur("uid invalide");
+ }
+
+ /* on extrait la reference de la commande */
+ if (!ereg('-([0-9]+)$', Env::v('vads_order_id'), $matches)) {
+ cb_erreur("référence de commande invalide");
+ }
+
+ $ref = $matches[1];
+ $res = XDB::query("SELECT mail, text, confirmation
+ FROM payments
+ WHERE id={?}", $ref);
+ if (!list($conf_mail, $conf_title, $conf_text) = $res->fetchOneRow()) {
+ cb_erreur("référence de commande inconnue");
+ }
+
+ /* on extrait le montant */
+ if (Env::v('vads_currency') != "978") {
+ cb_erreur("monnaie autre que l'euro");
+ }
+ $montant = sprintf("%.02f", ((float)Env::v('vads_amount'))/100) . " EUR";
+
+ /* on extrait le code de retour */
+ if (Env::v('vads_result') != "00") {
+ cb_erreur("erreur lors du paiement : ?? (".Env::v('vads_result').")");
+ }
+
+ /* on fait l'insertion en base de donnees */
+ XDB::execute("INSERT INTO payment_transactions (id, uid, ref, fullref, amount, pkey, comment)
+ VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?})",
+ Env::v('vads_trans_date'), $user->id(), $ref, Env::v('vads_order_id'), $montant, "", Env::v('vads_order_info'));
+ echo "Paiement stored.\n";
+
+ // We check if it is an Xnet payment and then update the related ML.
+ $res = XDB::query('SELECT eid
+ FROM group_events
+ WHERE paiement_id = {?}', $ref);
+ if ($eid = $res->fetchOneCell()) {
+ require_once dirname(__FILE__) . '/xnetevents/xnetevents.inc.php';
+ $evt = get_event_detail($eid);
+ subscribe_lists_event(0, $user->id(), $evt, $montant, true);
+ }
+
+ /* on genere le mail de confirmation */
+ $conf_text = str_replace(
+ array('<prenom>', '<nom>', '<promo>', '<montant>', '<salutation>', '<cher>', 'comment>'),
+ array($user->firstName(), $user->lastName(), $user->promo(), $montant,
+ $user->isFemale() ? 'Chère' : 'Cher', $user->isFemale() ? 'Chère' : 'Cher',
+ Env::v('comment')), $conf_text);
+
+ global $globals;
+ $mymail = new PlMailer();
+ $mymail->setFrom($conf_mail);
+ $mymail->addCc($conf_mail);
+ $mymail->setSubject($conf_title);
+ $mymail->setWikiBody($conf_text);
+ $mymail->sendTo($user);
+
+ /* on envoie les details de la transaction à telepaiement@ */
+ $mymail = new PlMailer();
+ $mymail->setFrom("webmaster@" . $globals->mail->domain);
+ $mymail->addTo($globals->money->email);
+ $mymail->setSubject($conf_title);
+ $msg = 'utilisateur : ' . $user->login() . ' (' . $user->id() . ')' . "\n" .
+ 'mail : ' . $user->forlifeEmail() . "\n\n" .
+ "paiement : $conf_title ($conf_mail)\n".
+ "reference : " . Env::v('vads_order_id') . "\n".
+ "montant : $montant\n\n".
+ "dump de REQUEST:\n".
+ var_export($_REQUEST,true);
+ $mymail->setTxtBody($msg);
+ $mymail->send();
+ echo "Notifications sent.\n";
+ exit;
+ }
+