php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.10.2009, 19:30  
Erfahrener Benutzer
 
Registriert seit: 05.02.2009
Beiträge: 1.401
PHP-Kenntnisse:
Fortgeschritten
Destruction ist zur Zeit noch ein unbeschriebenes Blatt
Standard [Erledigt] Paypal automatisch checken

Moin,

War mir net sicher wohin damit, aber dachte dass es wohl am meisten mit Software Design zu tun hat

Folgendes:

Ich will nach einer Spende auf meiner Seite automatisch checken ob das Geld wirklich angekommen ist und ihm dann einen VIP-Account freischalten.
Problem:

Mein Script sagt mir immer:
"Es wurden keine Informationen übergeben", also wird wohl was im oberen Teil des Scripts schief laufen. ( habe das Script von einem Kollegen und habe jetzt mal das ob_start usw. außenrum gebaut um zu schauen was für Informationen ausgegeben werden. )

Vielen Dank schon mal für eure Hilfe:

PHP-Code:
<?php
ob_start
();
$sid $_GET['sid'];
$tx_token $_GET['tx'];
$paypalmail "MeineMail@mail.de";

if(
$tx_token == "")
{
echo 
"Es wurden keine Informationen übergeben.";
}else{

$req 'cmd=_notify-synch';

$auth_token "Händlerkey";

$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); # www.sandbox.paypal.com
$fp fsockopen ('www.sandbox.paypal.com'80$errno$errstr30); # www.sandbox.paypal.com
// If possible, securely post back to paypal using HTTPS
// Your PHP server will need to be SSL enabled
//$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);

if (!$fp) {
echo 
"Verbindung zu PayPal fehlgeschlagen";

} else {
fputs ($fp$header $req);

$res '';
$headerdone false;
while (!
feof($fp)) {
$line fgets ($fp1024);
if (
strcmp($line"\r\n") == 0) {

$headerdone true;
}
else if (
$headerdone)
{

$res .= $line;
}
}

$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(
$_GET[st] == "Completed")
{
if(
$keyarray['receiver_email'] == $paypalmail)
{

$spender $jumpperspend $keyarray['mc_gross'];

### Hier können daten in die Datenbank geschrieben werden ####
# z.B. VIPTickets erstellen
# Ticket an die E-Mailadresse schicken
# usw
# $keyarray['payer_email']
# #############################################################
mail("Meinemail","GELD","Geld");

}else{
echo 
"Fehler, PayPalMailadresse ist falsch von dir zurück gegeben worden";
}
echo 
"Fehler, konnte nicht fertig bearbeiten";
}
}
else if (
strcmp ($lines[0], "FAIL") == 0) {
$infoboxtext "Spende war erfolgreich, aber ein sonstiger Fehler ist aufgetreten";
}
}

fclose ($fp);

}
$data ob_get_contents();
ob_end_flush();
mail("Meinemail","mail",$data);
?>
Edit.: Habe ein paar Debuggingausgaben eingebaut und nun herausgefunden, dass wohl der Fehler string(16) "FAIL Error: 4003" auftritt, schaue gerade was das bedeuten kann.
__________________
"Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

Geändert von Destruction (05.10.2009 um 19:53 Uhr).
Destruction ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 05.10.2009, 19:58  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hi,

hast du mal "einfache" Zeilenumbrüche ("\n" statt "\r\n") versucht, das hat schon oft bei Socket-Connections zu Fehlern geführt, weil Header nicht richtig erkannt wurden.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 05.10.2009, 20:05  
Erfahrener Benutzer
 
Registriert seit: 05.02.2009
Beiträge: 1.401
PHP-Kenntnisse:
Fortgeschritten
Destruction ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von dr.e. Beitrag anzeigen
Hi,

hast du mal "einfache" Zeilenumbrüche ("\n" statt "\r\n") versucht, das hat schon oft bei Socket-Connections zu Fehlern geführt, weil Header nicht richtig erkannt wurden.
Moin,

das hat leider nichts gebracht, immer noch der selbe Fehler...
__________________
"Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]
Destruction ist offline   Mit Zitat antworten
Alt 05.10.2009, 20:45  
Erfahrener Benutzer
 
Registriert seit: 05.02.2009
Beiträge: 1.401
PHP-Kenntnisse:
Fortgeschritten
Destruction ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Sodele...
Klappt nun alles
PHP-Code:
<?php
ob_start
();
// read the post from PayPal system and add 'cmd'
$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.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " strlen($req) . "\r\n\r\n";

      
//If testing on Sandbox use:
    //$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
$fp fsockopen ('ssl://www.sandbox.paypal.com'443$errno$errstr30);


if (!
$fp) {
// HTTP ERROR
} else {
fputs ($fp$header $req);
while (!
feof($fp)) {
$res fgets ($fp1024);
if (
strcmp ($res"VERIFIED") == 0) {
// check the payment_status is Completed
// check that txn_id has not been previously processed
// check that receiver_email is your Primary PayPal email
// check that payment_amount/payment_currency are correct
// process payment


// echo the response
echo "The response from IPN was: <b>" .$res ."</b><br><br>";

//loop through the $_POST array and print all vars to the screen.

foreach($_POST as $key => $value){

        echo 
$key." = "$value."<br>";



}


}
else if (
strcmp ($res"INVALID") == 0) {
// log for manual investigation

// echo the response
echo "The response from IPN was: <b>" .$res ."</b>";

  }

}
fclose ($fp);
}
$data ob_get_contents();
mail("mail","haha",$data);
?>
Neuer Code, neues Glück hehe.

Vielen Dank für deine Hilfe dr.e..
*erledigt*
__________________
"Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]
Destruction ist offline   Mit Zitat antworten
Alt 01.12.2010, 13:58  
Neuer Benutzer
 
Registriert seit: 01.12.2010
Beiträge: 2
PHP-Kenntnisse:
Fortgeschritten
Snake124 befindet sich auf einem aufstrebenden Ast
Standard

sorry wenn ich den alten thread wieder ausgrabe, aber ich weiß langsam echt nimmer weiter...

ich hab die verschiedensten scripts und codes getestet, allerdings bekomme ich immer Invalid zurück, selbst mit den scripts die paypal bereitstellt.

der zuletzt getestete code war der von destruction, aber naja, selbiges ergebnis.

hat jemand 1-2 tipps für mich?

danke schonmal, Aileen
Snake124 ist offline   Mit Zitat antworten
Alt 04.12.2010, 10:46  
Erfahrener Benutzer
 
Registriert seit: 09.11.2008
Beiträge: 200
smilla befindet sich auf einem aufstrebenden Ast
Standard

Ich würde das mit Paypal IPN machen. Nach der Zahlung ruft Paypal quasi einen Link auf (solange bis es klappt) und du kannst den Account freischalten. Das ist am einfachsten
smilla ist offline   Mit Zitat antworten
Alt 06.12.2010, 23:37  
Neuer Benutzer
 
Registriert seit: 01.12.2010
Beiträge: 2
PHP-Kenntnisse:
Fortgeschritten
Snake124 befindet sich auf einem aufstrebenden Ast
Standard

ich hab gedacht ich muss dort auf der "weitergeleiteten" site das ipn script einbauen oO
Snake124 ist offline   Mit Zitat antworten
Alt 07.12.2010, 01:06  
Erfahrener Benutzer
 
Registriert seit: 21.12.2009
Beiträge: 415
PHP-Kenntnisse:
Fortgeschritten
G.Schuster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nicht denken, Dokumentation lesen...
https://www.paypalobjects.com/de_DE/...er/ic_ipn.html
Da steht's auf Deutsch fast ganz oben (unterhalb von "So funktioniert die Sofortige Zahlungsbestätigung (IPN)") und das war sogar das erste Suchergebnis bei Tante G wenn man nach "Paypal IPN" sucht...
__________________
actra.development - Schwabstr. 2 - 70825 Münchingen
www.actra.de/velopment/ - eMail: php.de@actra.de
Zend Certified Engineer for PHP5
G.Schuster ist offline   Mit Zitat antworten
Alt 07.12.2010, 10:26  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

benutz PDT und IPN: PDT für die sofortige Benachrichtigung des Kunden bei erfolgter Zahlung,
IPN um definitiv eine Aktion auf Deinem Server auszulösen (z.B. Bestellung als bezahlt vermerken).

PDT ist _notify-synch, IPN ist _notify-validate.
__________________
Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.
Koala ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PayPal: IPN: Form: Datenaustausch: "nix gehen"! SvenLittkowski PHP-Fortgeschrittene 28 04.03.2011 12:37
Scriptsuche [Erledigt] PASSWORT-ZUGANG mit paypal vision67 Scriptbörse 10 06.11.2009 20:13
paypal invalid ipn mqs PHP Tipps 2009 3 13.10.2009 16:05
Datenbank automatisch abrufen djsky PHP Tipps 2009 4 04.10.2009 21:54
PayPal IPN setzt Status nicht auf bezahlt vollmilch PHP Tipps 2009 1 03.07.2009 19:37
Vorzeitiger PayPal Bezahlabbruch vollmilch PHP Tipps 2009 0 14.05.2009 20:33
Zahlungsabwicklung mit PayPal snatch-ic Off-Topic Diskussionen 0 02.02.2009 23:43
PayPal Formular "return" value="verstecken" Dan Krueger PHP Tipps 2008 0 18.09.2008 10:59
Formulare automatisch ausfüllen lassen? Marlboro PHP Tipps 2008 4 23.08.2007 20:30
Post Formular automatisch weiterleiten mansaylon PHP Tipps 2006 7 31.03.2006 10:46
radio button automatisch setzen HTML, Usability und Barrierefreiheit 2 11.10.2005 07:12
XML Tags automatisch schließen? tekknotrip PHP Tipps 2005-2 4 14.09.2005 11:51
Datum automatisch erhöht eingeben?!? Datenbanken 3 02.06.2005 12:49
array auch automatisch erzeugt wenn.. PHP Tipps 2004-2 4 04.12.2004 12:33
Bilder automatisch bei der Anzeige verkleinern. PHP Tipps 2004 3 16.08.2004 07:27

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
paypal automatisieren, paypal login check php, paypal automatisch, paypal fail error: 4003, paypal automatische zahlung, auth_token sandbox, paypal zahlung automatisieren, automatische zahlung paypal, http://www.php.de/php-fortgeschrittene/59682-erledigt-paypal-automatisch-checken.html, the response from ipn was: invalid, paypal checken, paypal automatische email, paypal auth_token, paypal error: 4003, paypal fail error 4003 sandbox, automatisch paypal, automatische währungsänderung paypal?, php if paypal, paypal verkauf automatisieren, paypal ipn invalid

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:19 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum