Hallo,
ich habe ein kleines Problem.
Vorab: Alle Variablen etc werden ordnungsgemäß übermittelt. Angenommen $keyarray['payment_status'] == "Completed"...
in diesem Falle sollte das Skript unten 1 mal in die Datenbank schreiben. Komischerweise erstellt das Skript 3 Einträge, wobei bei den letzten beiden Einträgen die "Authid" leer bleibt. Also nur der erste Datensatz der 3 eingetragenen ist vollständig.
Woran kann es liegen das er 3 Einträge erstellt?
ich habe ein kleines Problem.
Vorab: Alle Variablen etc werden ordnungsgemäß übermittelt. Angenommen $keyarray['payment_status'] == "Completed"...
in diesem Falle sollte das Skript unten 1 mal in die Datenbank schreiben. Komischerweise erstellt das Skript 3 Einträge, wobei bei den letzten beiden Einträgen die "Authid" leer bleibt. Also nur der erste Datensatz der 3 eingetragenen ist vollständig.
Woran kann es liegen das er 3 Einträge erstellt?
PHP-Code:
include 'inc/dbinc.php';
include 'inc/message.php';
//print_r($HTTP_POST_VARS);
//echo "Get";
//print_r($HTTP_GET_VARS);
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-synch';
$tx_token = $_GET['tx'];
$auth_token = "D8uFNAmFhdfhdfghzxn1vjdO";
$req .= "&tx=$tx_token&at=$auth_token";
// post back to PayPal system to validate
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);
// If possible, securely post back to paypal using HTTPS
// Your PHP server will need to be SSL enabled
// $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
// read the body data
$res = '';
$headerdone = false;
while (!feof($fp)) {
$line = fgets ($fp, 1024);
if (strcmp($line, "\r\n") == 0) {
// read the header
$headerdone = true;
}
else if ($headerdone)
{
// header has been read. now read the contents
$res .= $line;
}
}
// parse the data
$lines = explode("\n", $res);
$keyarray = array();
if (strcmp ($lines[0], "SUCCESS") == 0) {
for ($i=1; $i<count($lines);$i++){
list($key,$val) = explode("=", $lines[$i]);
$keyarray[urldecode($key)] = urldecode($val);
}
if($keyarray['payment_status'] == "Completed")
{
// Zahlung OK: Was wurde gekauft?
if($keyarray['item_number'] == "sms_pack_1")
{
$addcreds = "1";
}
$sql_addcreds = "UPDATE mx_users SET creds = creds+'$addcreds' WHERE userID = '$authid';";
$raw = mysql_query($sql_addcreds) OR die(mysql_error());
$value = $addcreds;
echo $gutgeschrieben;
}
if($keyarray['payment_status'] == "Failed")
{
$tx_id = $keyarray['txn_id'];
$tx_item = $keyarray['item_number'];
$status = $keyarray['payment_status'];
$sql_insert_failed = "INSERT INTO `mx_transaction`
( `id` , `tx_id` , `pack`, `status`, `user` )
VALUES (
'',
'$tx_id',
'$tx_item',
'$status',
'$authid'
);";
$raw = mysql_query($sql_insert_failed) OR die(mysql_error());
echo $txfehler;
}
if($keyarray['payment_status'] == "Pending")
{
$tx_id = $keyarray['txn_id'];
$tx_item = $keyarray['item_number'];
$status = $keyarray['payment_status'];
$sql_insert_pending = "INSERT INTO `mx_transaction`
( `id` , `tx_id` , `pack`, `status`, `user` )
VALUES (
'',
'$tx_id',
'$tx_item',
'$status',
'$authid'
);";
$raw = mysql_query($sql_insert_pending) OR die(mysql_error());
echo $txpending;
}
}
else if (strcmp ($lines[0], "FAIL") == 0) {
echo "FAIL";
// log for manual investigation
}
}
fclose ($fp);
Kommentar