<?php
/**
*-------------------------------------------------------------------------------
* JTL-Shop 2
* File: paypal/notify.php, php file
*
* JTL-Shop 2 include file
*
* @author JTL-Software <thomas@jtl-software.de>
* @copyright 2007, JTL-Software
* @link http://jtl-software.de/jtlshop.php
* @version v1.0 / 31.05.07
*-------------------------------------------------------------------------------
*/
require_once("../../../includes/globalinclude.php");
require_once(PFAD_ROOT.PFAD_CLASSES."class.JTL-Shop.Bestellung.php");
require_once(PFAD_ROOT.PFAD_SMARTY."Smarty.class.php");
require_once(PFAD_ROOT.PFAD_INCLUDES."sprachfunktionen.php");
require_once(PFAD_ROOT.PFAD_INCLUDES."mailTools.php");
// read the post from PayPal system and add 'cmd'
//writeLog("/tmp/notify.log","Notification eingegangen",1);
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value)
{
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
// post back to PayPal system to validate
$header .= "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$header .= "Host: www.paypal.com\r\n";
$header .= "Connection: Close\r\n";
$fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);
if (!$fp)
{
// HTTP ERROR
}
else
{
fputs ($fp, $header . $req);
while (!feof($fp))
{
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0)
{
// echo the response
//writeLog("/tmp/notify.log",print_r($_POST,1),1);
// check the payment_status is Completed
if ($_POST['payment_status']!="Completed")
{
// writeLog("/tmp/notify.log","payment status nicht completetd",1);
die('0');
}
// check that txn_id has not been previously processed
$txn_id_obj = $GLOBALS['DB']->executeQuery("select * from tzahlungsid where txn_id=\"".$_POST['txn_id']."\"",1);
if ($txn_id_obj->kBestellung>0)
{
// writeLog("/tmp/notify.log","zahlungsid bereits gahbt",1);
die('0');
}
// check that receiver_email is your Primary PayPal email
$Einstellungen = getEinstellungen(array(CONF_ZAHLUNGSARTEN));
if ($Einstellungen['zahlungsarten']['zahlungsart_paypal_empfaengermail']!=$_POST['receiver_email'] && $Einstellungen['zahlungsarten']['zahlungsart_paypal_empfaengermail']!=$_POST['business'])
{
// writeLog("/tmp/notify.log","email nicht gleich mit empfänger",1);
die('0');
}
// check that payment_amount/payment_currency are correct
$zahlungsid = $GLOBALS['DB']->executeQuery("select * from tzahlungsid where cId=\"".$_POST['custom']."\"",1);
if (!$zahlungsid->kBestellung)
{
// writeLog("/tmp/notify.log","zahlungsid unbekannt",1);
die('0');
}
$b = $GLOBALS['DB']->executeQuery("select kKunde from tbestellung where kBestellung=".$zahlungsid->kBestellung,1);
$kunde = $GLOBALS['DB']->executeQuery("select * from tkunde where kKunde=".$b->kKunde,1);
$Sprache = $GLOBALS["DB"]->executeQuery("select cISO from tsprache where kSprache=".$kunde->kSprache,1);
if (!$Sprache)
$Sprache = $GLOBALS["DB"]->executeQuery("select cISO from tsprache where cStandard=\"Y\"",1);
require_once(PFAD_ROOT.PFAD_LANGUAGE.$Sprache->cISO.".php");
$bestellung = new Bestellung($zahlungsid->kBestellung);
$bestellung->fuelleBestellung(0);
if ($bestellung->Waehrung->cISO!=$_POST['mc_currency'])
{
// writeLog("/tmp/notify.log","falsche währung",1);
die('0');
}
//zahlung setzen
$GLOBALS['DB']->executeQuery("update tbestellung set
dBezahltDatum=now(),
cStatus=\"".BESTELLUNG_STATUS_BEZAHLT."\" where kBestellung=".intval($bestellung->kBestellung),4);
unset($bestellung);
$bestellung = new Bestellung($zahlungsid->kBestellung);
$bestellung->fuelleBestellung(0);
// process payment
$paymentDateTmp=strtotime($_POST['payment_date']);
$zahlungseingang->kBestellung = $bestellung->kBestellung;
$zahlungseingang->cZahlungsanbieter = "PayPal";
$zahlungseingang->fBetrag = $_POST['mc_gross'];
$zahlungseingang->fZahlungsgebuehr = $_POST['payment_fee'];
$zahlungseingang->cISO = $_POST['mc_currency'];
$zahlungseingang->cEmpfaenger = $_POST['receiver_email'];
$zahlungseingang->cZahler = $_POST['payer_email'];
$zahlungseingang->cAbgeholt = 'N';
$zahlungseingang->dZeit = strftime('%Y-%m-%d %H:%M:%S',$paymentDateTmp);
$GLOBALS['DB']->insertRow('tzahlungseingang',$zahlungseingang);
//mail
$obj->tkunde = $kunde;
$obj->tbestellung = $bestellung;
sendeMail(MAILTEMPLATE_BESTELLUNG_BEZAHLT,$obj);
}
}
fclose ($fp);
}
echo("1");
?>