-
10.06.11 20:21 #16
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.520
Dann hast du es richtig gemacht, war das die Sandbox? Wenn ja, mach doch mal ein Payment auf dem Live-System.
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
hast du denn auch die authentication parameter angepasst?
Meines wissens unterscheiden sich die zugängangsdaten für sandbox und livesystem.
Vieleicht auch mal im accesslog gucken ob der IPN callback überhaupt erfolgt
-
-
Deine API calls haben einen USER, einen SIGNATURE und einen PWD parameter.
Die müssen logischerweise auf einen auf dem paypal live system freigeschalteten account zeigen.
Diese 3 daten unterscheiden sich normalerweise vom sandbox system! Sollten sie dir nicht bekannt sein, musst du dich mit deinem ansprechpartner bei paypal in verbindung setzen.
-
Eine Sofortige Zahlungsbestätigung (IPN) müsste doch auch ohne API möglich sein.
Alternative Option: PayPal Starter (ohne API-Programmierkenntnisse)
https://www.paypalobjects.com/de_DE/..._pps_home.html
Redirect:
PHP-Code:$str = "cmd=_xclick&business=" . urlencode(test@paypalemail.com) . "&no_shipping=0&no_note=1";
$str .= "&item_name=Test";
$str .= "&amount=10";
$str .= "¤cy_code=EUR";
$str .= "¬ify_url=" . urlencode('http://www.example.com/ppipn.php');
$str .= "&return=" . urlencode('http://www.example.com/success.html');
$str .= "&cancel_return=" . urlencode('http://www.example.com/cancel.html');
$str .= "&item_number=1";
if($test_mode == true) {
header("Location: https://www.sandbox.paypal.com/cgi-bin/webscr?" . $str);
} else {
header("Location: https://www.paypal.com/cgi-bin/webscr?" . $str);
}
IPN:
PHP-Code:$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
$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($test_mode == true) {
$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
} else {
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
}
if (!$fp) {
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, 'VERIFIED') == 0) {
mail($_POST['payer_email'], "Test", "Hallo Kunde", "From: Test <test@paypalemail.com>");
} else if (strcmp ($res, 'INVALID') == 0) {
}
}
fclose ($fp);
}
?>
So sieht mein Script aus und funktioniert wenn $test_mode => true.
Gruß proloserGeändert von proloser (11.06.11 um 19:00 Uhr)
-
Stimmt, im falle des PayPal starter APIs gibts keine zugangsdaten die du übergeben musst, weil du die transaktion vorher nicht registrierst.
Ich würd jetzt erstmal gucken ob das IPN script überhaupt aufgerufen wird. (im webserver log).
Und dann musst du raus finden was nicht funktioniert
Ich könnte mir vorstellen, dass dieser aufruf:
aus irgend nem grund fehlschlägt (Zertifikat fehler oder ähnliches).PHP-Code:$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
Ab besten mal prüfen ob $fp auch tatsächlich erstellt wird.
-
11.06.11 20:36 #22
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.520
Offensichtlich wirds aufgerufen, wenn der Code, der dafür verantwortlich ist, ausgeführt wird. Die Frage ist nur, warum es Live anders reagiert als in der Sandbox.
Außerdem rate ich dir dringend ab, das Starter zu nutzen. Das Formular mit sämtlichen darin befindlichen Daten kann man manipulieren. Ich könnte bspw. die business-Email ändern, und damit an mich selbst überweisen. Das Geld würde trotzdem bei dir im Shop als "gutgeschrieben" ankommen.
Das Starter ist höchst unsicher.Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
Natürlich verschlüssle ich die wichtigen Daten bevor ich sie übergebe und prüfe sie in der IPN nochmals. Diesen Teil hab ich zum Testen extra rausgenommen, um sicher zu gehen damit es nicht an dem scheitert.
-
11.06.11 21:08 #24
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.520
Ok, du bekommst im IPN also die business-Email-Adresse auch wieder zurück und kannst diese validieren. Das geht aus der Doku erstmal nicht hervor.
Hast du schon Gelegenheit gehabt, die komplette Antwort mal raus zu loggen, um zu sehen, was da tatsächlich drin steht?
Edit:
Ich würde im IPN mal diesen Teil hier debuggen:
Code php:1 2 3 4 5 6 7 8 9 10 11
while (!feof($fp)) { $res = fgets ($fp, 1024); Logger::log($res); // Wenn du meine Klasse verwendest, ansonsten trigger_error() oder etwas eigenes. if (strcmp ($res, 'VERIFIED') == 0) { mail($_POST['payer_email'], "Test", "Hallo Kunde", "From: Test <test@paypalemail.com>"); } else if (strcmp ($res, 'INVALID') == 0) { } }
Dann die app.log anschauen und dann siehst du evtl. den Fehler. Im Übrigen würde ich strcmp() für diesen Zweck nicht verwendet. ANSI <=> UTF-8 könnte hier ein Problem darstellen. Verwende statt dessen einfach ein ==, aber was kommt da eigentlich wirklich rüber? Kann es sein, das in dem String evtl. mehr als nur "VERIFIED" drin steht, evtl. sowas wie "payer_status=verified"? Könnte es sein, das der Wert statt groß komplett klein geschrieben ist? strcmp() unterscheidet zwischen Groß- und Kleinschreibung.Geändert von saftmeister (11.06.11 um 21:15 Uhr)
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
So vielen Dank für eure Hilfe, es funktioniert jetzt einwandfrei! Das Problem lang wirklich an einem Zertifikat Problem.
"fsockopen" mit folgender Zeile austauschen und es funktioniert:
PHP-Code:$fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);
Ich bin jetzt froh das es funktioniert aber unverständlich ist es für mich dennoch, denn über die Sandbox funktioniert es ja auch über die SSL verbindung.
Gruß proloser
Ähnliche Themen
-
PayPal IPN
Von olektu im Forum PHPAntworten: 0Letzter Beitrag: 20.04.11, 21:03 -
Paypal Integration
Von Sprint im Forum Stellenangebote (entgeltlich)Antworten: 0Letzter Beitrag: 01.03.11, 21:46 -
Paypal und PHP
Von puschelchen im Forum PHPAntworten: 9Letzter Beitrag: 14.01.11, 12:51 -
PayPal
Von proloser im Forum Coders TalkAntworten: 1Letzter Beitrag: 02.04.07, 21:23 -
PayPal
Von Adam Wille im Forum Internet, DSL & FlatrateAntworten: 3Letzter Beitrag: 08.10.05, 14:53



2Danke


Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren