Hilfe für PayPal-Zahlung via IPN?

Ich würd als erstes mal das hier:

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

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

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



}

durch

PHP:
print_r($_POST);

ersetzen und das res Array auch mal ausgeben lassen eventuell steht da ja was drin (außer invalid).
 
hmm hallo! danke mal!

ich hab mich auf englischen foren noch ein bisschen schlau gemacht.. also ich hab da wohl auch was verwechselt gehabt..

naja also IPN:
ich hab da in der sandboxversion unter Profile->instant payment notification
die datei angegeben, bei der die socket geschichte läuft (URL1), wo er mir die daten in die datenbank speichern sollte... hatte ich vorher nicht eingestellt gehabt.. da sollte er mir (laut script vom paypal 1:1 übernommen die daten in meine datenbank schreiben)

und dann habe ich unter der seite webseite zahlungsoptionen die seite angegeben, an die ich nach der PP zahlung wieder gelangen sollte...
da hab ich die automat. rückleitung aktiviert und die url angegeben. (URL2)
übertragung der zahlungsdaten auch auf aktiviert gestellt, die anderen optionen belassen und gespeichert...


so nun nach meiner logik (wusste ich vorher nicht) sollte das so ablaufen dass nach der zahlung ich wieder auf meine seite zurückkomme (URL2)

die abspeicherung in die datenbank (URL1) über die notification seite erfolgt "backend" also nicht für mich ersichtlich.. lieg ich soweit richtig?

ich will nun nur wissen wie ich zB eine variable auf der zurückgekommenen seite abfragen (URL2) kann, damit ich weis, welcher (zB bild) download gestartet wurde (ID)
 
Zuletzt bearbeitet:
Du kannst selbst ne Hidden Variable mit Bild Id absenden. Und so wie ich das damals gemacht habe läuft der DB Eintrag klar über dich selbst.

Du kannst am einfachsten mein Script so ändern das statt das ein DB User Acc gemacht wird einfach die Bild Id bei User XY eingetragen wird. Genauso ist in meinem Script schon ein log drin. Versuchs mal.

Abspeicherung erfolgt in URL2, weil da ja erst gecheckt wurde ob alles okay ist. Sonst erhält der ja ne Leistung ohne bezahlt zu haben.
 
ja,schaus mir gerne mal an!
kannst du mir da dein "absende formular" auch zur ansicht senden?
so in der art hab ich mir das auch vorgestellt!

hmm
hab dich probiert zu adden im icq (131263870)
 
Hallo! :)

Ist schon ne Weile her, aber evtl. kann mir ja einer helfen...

PHP:
fopen()

geht leider nicht bei mir, da vom provider nicht erlaubt...

PHP:
Curl()
sollte nach dessen Aussage funktionieren...

@Danny Faak: Dein Script gefällt mir ganz gut! Hast vermutlich auch Ahnung von curl()... kannst du mir da kurz was basteln? Oder ne Hilfestellung geben?!

oder
@Dennis Wronka: Wo kann man Deine Klasse beziehen, sehen!? Wird dort auch fopen() benutzt?

Danke schonmal! ;)

Nochwas: Muss ich alle Variablen an Paypal übermitteln oder nur die für mich wichtigen...?
 
Hallo Leute,

Sorry für dieses nochmalige Nachfragen, aber ich hab jetzt seit 3 Tagen herumgebastelt, und gegoogled wie ein blöder.
So oft ich mir auch diverse Foreneinträge durchlese, ich komme nicht auf das KERN-PROBLEM.

Fakten:
Ich will auf meiner Seite eine Paypal Bezahllösung anbieten.
Paypal Konto hatte ich schon, dann einiges zum Thema durchgelesen OK.
Es gibt die Möglichkeit via

1.) IPN (Instant Payment Notification) wird von allen als bevorzugte Methode empfolen
2.) PDT (Payment Data Transfer)
3.) Ich denke es gibt auch noch eine "manuelle" Methode ? (wird nicht empfohlen)

So ich hab wie gesagt kurz alles überdacht und bin zum Entschluss gekommen, dass ich es mit IPN einbinden will.

Umgebung:
Meine Seite ist auf SSL Basis mit einem Class1 SSL Zertifikat.
In meinem Paypal Konto habe ich auch die Option nur erlauben von SSL gesicherten Seiten akzeptieren angehakt (Button input Daten werden dann bei Paypal gehostet) = hosted_button_id -> Stimmt soweit oder?
Ich habe einen zweiten Paypal Account wo ich meinen Testartikel für 0,01 € kaufe.
Die Scripts habe ich von Paypaltech.com (nützen scheinbar eh einige User auch).
Übermittlung erfolgt ins Paypal Live System mit SSL (habs aber auch schon ohne SSL versucht selbes Ergebnis.

Unklarheiten:
Bei IPN Methode sind input return und rm notwendig?
Was ist die success.php (kommt beim Button erstellen vor) ist das gleich wie notify_url?
Muss ich unbedingt an Paypal input Daten senden, weil ich bekommen im $POST nichts retour? -> Gibt es initiale Daten die man schicken MUSS?
Was geschieht danach, muss ich dafür sorgen (PDT/IPN) dass die Transaktionsnummer bei mir in der Datenbank gespeichert wird, Falls der User den Link mit den "GET Parametern" kopiert und nochmals in den Browser eingibt, oder sollte dass dann Paypal schon abfangen, bzw. liegt da vielleicht der Unterschied zu PDT/IPN?
Leider steht dass nirgendwo GUT beschrieben.

Eigentliches Problem:
Ich bekomme vom Paypal System via IPN Methode diese Meldung retour.
The response from IPN was: INVALID (paypaltech.com script mit html als ausgabe).
ICH ERHALTE JEDOCH DAS GELD****? Manche User haben scheinbar ein ähnliches Problem geschildert diese erhielten jedoch KEIN GELD...

Hier noch im Detail wenn ich $res ausgeben lasse:

Code:
HTTP/1.1 200 OK Date: Tue, 21 Feb 2012 20:41:16 GMT Server: Apache X-Frame-Options: SAMEORIGIN Set-Cookie: cwrClyrK4LoCV1fydGbAxiNL6iG=Fc4RU2_uQox0xS5CFC5NDKjJbo9Y2KJfTwnKERK7D5JvGjup2qsqm4ZKY3dGDYXxR1V6BSnMZ8mHoFwQwNjjnd3AZsUS4LsjS9LTi0nVxliowow1gbj890soDLu%7cOjmI5KQ_sIhIPjIomR-iLAQk53qQE5Crltx2yiSnYg7oq5rs-z7H7CDoTSjV2RcqmI6560%7c19MepPah4w_eUebyETEyHhoXvGG_gK0Bv80lBRupCCPtYBmf5FqwuWubve_UK5-TS5xtQ0%7c1329856876; 

domain=.paypal.com; path=/; Secure; HttpOnly Set-Cookie: cookie_check=yes; expires=Fri, 18-Feb-2022 20:41:16 GMT;
domain=.paypal.com; path=/; Secure; HttpOnly Set-Cookie: navcmd=_notify-validate; 
domain=.paypal.com; path=/; Secure; HttpOnly Set-Cookie: navlns=0.0; expires=Mon, 16-Feb-2032 20:41:16 GMT; 
domain=.paypal.com; path=/; Secure; HttpOnly Set-Cookie: Apache=10.73.8.52.1329856876414885; 

path=/; expires=Thu, 13-Feb-42 20:41:16 GMT Vary: Accept-Encoding Strict-Transport-Security: max-age=14400 Connection: close 
Content-Type: text/html; charset=UTF-8 INVALID
The response from IPN was: INVALID

Weiter unten habe ich meine beiden INPUT und OUTPUT Files gepostet.

Workaround:
Wenn ich die PDT Methode verwende, dann funktioniert es prächtig, aber ich habe immer das ungute Gefühl das PDT vielleicht nicht so sicher oder veraltet ist...
Und ausserdem würd ich das IPN Problem doch ganz gerne verstehen und lösen.

Danke schon mal im Voraus fürs LESEN und vielleicht hat ja jemand eine Idee warum dass bei mir nicht funkt.


PHP Code Eingabe (paypal.php):

PHP:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
            <input type="hidden" name="cmd" value="_s-xclick">
            <input type="hidden" name="hosted_button_id" value="X9FM744LC4K3S">
            <input type="hidden" name="return" value="https://mysite.com/ipn.php?userid=<?php echo $vv_uid; ?>">
            <input type="hidden" name="rm" value="2">
            <input type="hidden" name="notify_url" value="https://mysite.com/ipn.php">
            <input type="image" src="https://www.paypalobjects.com/de_DE/AT/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="Jetzt einfach, schnell und sicher online bezahlen – mit PayPal.">
            <img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1">
            </form>

PHP Code Ausgabe (ipn.php)
PHP:
<?php

// Revision Notes
// 11/04/11 - changed post back url from https://www.paypal.com/cgi-bin/webscr to https://ipnpb.paypal.com/cgi-bin/webscr
// For more info see below:
// https://www.x.com/content/bulletin-ip-address-expansion-paypal-services
// "ACTION REQUIRED: if you are using IPN (Instant Payment Notification) for Order Management and your IPN listener script is behind a firewall that uses ACL (Access Control List) rules which restrict outbound traffic to a limited number of IP addresses, then you may need to do one of the following: 
// To continue posting back to https://www.paypal.com  to perform IPN validation you will need to update your firewall ACL to allow outbound access to *any* IP address for the servers that host your IPN script
// OR Alternatively, you will need to modify  your IPN script to post back IPNs to the newly created URL https://ipnpb.paypal.com using HTTPS (port 443) and update firewall ACL rules to allow outbound access to the ipnpb.paypal.com IP ranges (see end of message)."


// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';

print_r($_POST);
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://ipnpb.paypal.com', 443, $errno, $errstr, 30);
//$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);
echo $res;
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);
}
?>
 
Zuletzt bearbeitet:
Hallo,

Ich habe noch einige Parameter ausprobiert und habe das Problem lösen können.
Auf der Paypal Seite (unter Website Zahlungslösungen siehe Screenshot) darf man Übertragung der Zahlungsdaten (optional) NICHT aktivieren. Stehen tut das aber niergendwo...

Falls andere User das selbe Problem haben, hoffe ich dass Ihnen diese Info eventuell hilft.

Danke und lg aus Österreich
 
Hallo,

Ich habe noch einige Parameter ausprobiert und habe das Problem lösen können.
Auf der Paypal Seite (unter Website Zahlungslösungen siehe Screenshot) darf man Übertragung der Zahlungsdaten (optional) NICHT aktivieren. Stehen tut das aber niergendwo...

Falls andere User das selbe Problem haben, hoffe ich dass Ihnen diese Info eventuell hilft.

Danke und lg aus Österreich

paypal_settings_ipn.png
 
Hallo Ihr,

leider muss ich dieses leidige ipn Thema wieder aufgreifen.
Ich lese und probiere mich jetzt seit 3Tagen durch dieses PayPal IPN-Geraffel. Ich hoffe sehr ihr könnt mir hier irgendwie weiterhelfen.

Ich hab mir zwei Testaccounts in der Sandbox angelegt, wo auch die Zahlung funktioniert.
Die Zahlungen tauchen dort korrekt auf.
Frage1: Ich habe in den IPN-Einstellungen und in der Rückleitung von PayPal auf meine Seite beides mal die ipn-Datei angegeben. Ist das richtig?
Wenn nicht, was muss wo eingetragen werden?

Problem 1:
Bei den Testtools in der Sandbox kann man IPN simulieren.
Wenn ich in der Sandbox mit dieser Einstellung teste geht gar nichts, das Script läuft sich tot.

//If testing on Sandbox use:
$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
//$fp = fsockopen ('ssl://ipnpb.paypal.com', 443, $errno, $errstr, 30);
Wenn ich dagegen die Sanbox auskommentiere und es über ipnbb funktioniert es ************

IPN successfully sent.

Ich habe jetzt die original erstellte PayPal-Tech ipn- PHP-Datei und das original Buttonformular hier im Rennen.
Jetzt wird auf meine Seite zurückgeleitet und sie ist schneeweiß.
Folgende Parameter werden mit übergeben:
/ipn.php?tx=6G570570AY413990H&st=Pending&amt=5.00&cc=EUR&cm=&item_number=

Ich weiß nicht mehr was ich hier noch testen soll. Genau genommen bin ich inzwischen so durch den Wind, dass ich überhaupt nicht mehr weiß, was PayPal eigentlich überhaupt haben möchte.

Kann mir einer von euch erklären, was welche Daten wann an wen schicken soll? Mir sind auch die Wege völlig unklar.
Buttonformular -> PayPal-Server
PayPal-Server -> ipn.php
ipn.php -> PayPal Server
....****? und dann

Oder bin ich vorher schon falsch?

Bitte Bitte ich verzweifel an diesem "..."

Gruß airchanjo
 
Zurück