Guten morgen liebe Community,
Ich schlage mich nun seit gestern morgen (bis heute morgen um 6 ) mit der Integration von der Paypal IPN herum.
Ich habe diverse Code snipets getestet aber alle liefern mir das selbe Problem ! INVALID !
meine letzter versuch war mit der Download Source von evoluted.
Ich habe das ganze versuch zu Debuggen in dem ich alles was das Script tut in eine DB schreibe.
sql_log.png
externer link bild : http://pic-hoster.net/view/63672/sql_log.png.htm
allerdings bringt mach das nicht weiter.
Ich habe auch gut und gerne 100 Vorschläge zur Lösung versucht, allerdings ohne erfolg.
Meine Paypments sind zurzeit wie folgt aus
Getestet habe ich sowohl über den Pay Button als auch über den Sandkasten von Paypal ( IPN Simulator / Express Checkout / Web Accept).
über jede Hilfe bin ich sehr dankbar.
Liebe grüße ausem Schwobe ländle
Ich schlage mich nun seit gestern morgen (bis heute morgen um 6 ) mit der Integration von der Paypal IPN herum.
Ich habe diverse Code snipets getestet aber alle liefern mir das selbe Problem ! INVALID !
meine letzter versuch war mit der Download Source von evoluted.
Ich habe das ganze versuch zu Debuggen in dem ich alles was das Script tut in eine DB schreibe.
sql_log.png
externer link bild : http://pic-hoster.net/view/63672/sql_log.png.htm
allerdings bringt mach das nicht weiter.
Ich habe auch gut und gerne 100 Vorschläge zur Lösung versucht, allerdings ohne erfolg.
Meine Paypments sind zurzeit wie folgt aus
PHP-Code:
<?php
// Database variables
$host = "localhost"; //database location
$user = "******"; //database username
$pass = "*****"; //database password
$db_name = "****"; //database name
// PayPal settings
$paypal_email = 'mail@admin.de';
$return_url = 'http://www.secretdomain.de/pp/payment-successful.html';
$cancel_url = 'http://www.secretdomain.de/pp/payment-cancelled.html';
$notify_url = 'http://www.secretdomain.de/pp/payments.php';
$item_name = 'Test Item';
$item_amount = 5.00;
// Include Functions
include("functions.php");
// Check if paypal request or response
if (!isset($_POST["txn_id"]) && !isset($_POST["txn_type"])){
$querystring = '';
// Firstly Append paypal account to querystring
$querystring .= "?business=".urlencode($paypal_email)."&";
// Append amount& currency (£) to quersytring so it cannot be edited in html
//The item name and amount can be brought in dynamically by querying the $_POST['item_number'] variable.
$querystring .= "item_name=".urlencode($item_name)."&";
$querystring .= "amount=".urlencode($item_amount)."&";
//loop for posted values and append to querystring
foreach($_POST as $key => $value){
$value = urlencode(stripslashes($value));
$querystring .= "$key=$value&";
}
// Append paypal return addresses
$querystring .= "return=".urlencode(stripslashes($return_url))."&";
$querystring .= "cancel_return=".urlencode(stripslashes($cancel_url))."&";
$querystring .= "notify_url=".urlencode($notify_url);
// Append querystring with custom field
//$querystring .= "&custom=".USERID;
//Database Connection
$link = mysql_connect($host, $user, $pass);
mysql_select_db($db_name);
$result = mysql_query("INSERT INTO `pp_log`(bridgemsg,date) VALUES ('REDIRECT:location:https://www.sandbox.paypal.com/cgi-bin/webscr".$querystring."','".time()."')", $link);
// Redirect to paypal IPN
header('location:https://www.sandbox.paypal.com/cgi-bin/webscr'.$querystring);
exit();
} else {
//Database Connection
$link = mysql_connect($host, $user, $pass);
mysql_select_db($db_name);
// Response from Paypal
$result = mysql_query("INSERT INTO `pp_log`(bridgemsg,date) VALUES ('RESPONSE','".time()."')", $link);
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$value = preg_replace('/(.*[^%^0^D])(%0A)(.*)/i','${1}%0D%0A${3}',$value);// IPN fix
$req .= "&$key=$value";
}
// assign posted variables to local variables
$data['item_name'] = $_POST['item_name'];
$data['item_number'] = $_POST['item_number'];
$data['payment_status'] = $_POST['payment_status'];
$data['payment_amount'] = $_POST['mc_gross'];
$data['payment_currency'] = $_POST['mc_currency'];
$data['txn_id'] = $_POST['txn_id'];
$data['receiver_email'] = $_POST['receiver_email'];
$data['payer_email'] = $_POST['payer_email'];
$data['custom'] = $_POST['custom'];
// 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 .= "Host: www.sandbox.paypal.com\r\n"; // www.paypal.com for a live site
$header .= "Content-Length: " . strlen($req) . "\r\n";
$header .= "Connection: close\r\n\r\n";
$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
if (!$fp) {
// HTTP ERROR
$result = mysql_query("INSERT INTO `pp_log`(bridgemsg,date) VALUES ('HTTP ERROR','".time()."')", $link);
} else {
fputs($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
$result = mysql_query("INSERT INTO `pp_log`(bridgemsg,date) VALUES ('".serialize($res)."','".time()."')", $link);
if (strcmp($res, "VERIFIED") == 0) {
// Used for debugging
// mail('user@domain.com', 'PAYPAL POST - VERIFIED RESPONSE', print_r($post, true));
$result = mysql_query("INSERT INTO `pp_log`(bridgemsg,date) VALUES ('VERFIED RESPONSE','".time()."')", $link);
// Validate payment (Check unique txnid & correct price)
$valid_txnid = check_txnid($data['txn_id']);
$valid_price = check_price($data['payment_amount'], $data['item_number']);
// PAYMENT VALIDATED & VERIFIED!
if ($valid_txnid && $valid_price) {
$orderid = updatePayments($data);
if ($orderid) {
// Payment has been made & successfully inserted into the Database
$result = mysql_query("INSERT INTO `pp_log`(bridgemsg,date) VALUES ('ALL FINE','".time()."')", $link);
} else {
// Error inserting into DB
// E-mail admin or alert user
// mail('user@domain.com', 'PAYPAL POST - INSERT INTO DB WENT WRONG', print_r($data, true));
$result = mysql_query("INSERT INTO `pp_log`(bridgemsg,date) VALUES ('INSERT WRONG','".time()."')", $link);
}
} else {
// Payment made but data has been changed
// E-mail admin or alert user
$result = mysql_query("INSERT INTO `pp_log`(bridgemsg,date) VALUES ('PAY BUT CHANGE,'".time()."')", $link);
}
} else if (strcmp ($res, "INVALID") == 0) {
// PAYMENT INVALID & INVESTIGATE MANUALY!
// E-mail admin or alert user
// Used for debugging
//@mail("user@domain.com", "PAYPAL DEBUGGING", "Invalid Response<br />data = <pre>".print_r($post, true)."</pre>");
$result = mysql_query("INSERT INTO `pp_log`(bridgemsg,date) VALUES ('INVALID RESPONSE','".time()."')", $link);
}
}
fclose ($fp);
$result = mysql_query("INSERT INTO `pp_log`(bridgemsg,date) VALUES ('NO HTTP ERROR','".time()."')", $link);
}
}
mysql_close($link);
?>
Getestet habe ich sowohl über den Pay Button als auch über den Sandkasten von Paypal ( IPN Simulator / Express Checkout / Web Accept).
über jede Hilfe bin ich sehr dankbar.
Liebe grüße ausem Schwobe ländle
Kommentar