Wellrad und PayPal

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
tigerknut93
Posts: 64
Joined: Mon May 26, 2008 5:29 pm
Location: Bielefeld

Wellrad und PayPal

Post by tigerknut93 » Tue Jan 17, 2012 3:40 pm

Hallo allerseits,

über den Shop auf meiner Website http://www.kerber-collectors-edition.com/
wurde im Shop erstmals über PayPal bestellt.
Lief auch soweit gut, nur das wohl keine E-Mail über die Bestellung eingegangen ist und der Kunde jetzt fragt, ob der Käufer auch keine Bestellbestätigung bekommen hat. Bei PayPal war die bestellte Bild-Edition angegeben. Gibt es bei dieser Bestellart keine separate Mail wie bei den anderen Bestellungen?

tigerknut93

Martin
Posts: 346
Joined: Thu Oct 23, 2008 11:57 am
Contact:

Re: Wellrad und PayPal

Post by Martin » Tue Jan 17, 2012 6:24 pm

Hallo tigerknut93,

das Paypal-Problem ist mir beim Testen nie aufgefallen, mittlerweile habe ich es aber auf dem Schirm. Normalerweise, wenn alles richtig eingestellt ist, schickt Paypal nach der Bezahlung den Käufer zurück zum Shop. Und dann läuft alles wie bei den anderen Zahlweisen, der Rechnungsentwurf wird geschrieben, die E-Mails an Kunde und Händler verschickt.

Diese Vorgehensweise ist aber natürlich nicht ausreichend: Falls der Kunde den Browser schließt oder blitzschnell woanders hinsurft, wird der Shop nicht informiert und schreibt auch keine E-Mails. Das zu lösen ist nicht wirklich kompliziert: Man kann von Paypal eine Instant Payment Notification (IPN) anfordern, die sendet eine Nachricht an eine anzugebende URL mit den Informationen über den Zahlungsstatus. Um darauf reagieren zu können, muss der Shop die Bestelldaten (aus der Session) in einer temporären Datei zwischenspeichern, diese Datei auslesen sobald Paypal die erfolgte Zahlung meldet und mit diesen Daten dann das übliche anstellen. Zusätzlich noch dafür sorgen, dass das ganze nicht ein zweites Mal passiert, wenn der Kunde am Ende doch zum Shop zurückkommt ...

Der Code dafür ist, hoffentlich!, schon fertig. Leider habe ich gerade eine so grottenschlechte Internetverbindung, dass ich ihn nicht in der Paypal-Sandbox testen kann: Noch ehe die Paypal-Formulare aufgebaut sind, wird die Verbindung zurückgesetzt. Es ist ein Graus - und ich muss um etwas Geduld bitten.

(Betroffen sind übrigens nur zwei Funktionen, eine in wrs_frontendcontroller.php, die andere natürlich in paypal.php. Zumindest bei der ersten gibt es bei dir doch, wenn ich mich recht erinnere, ein paar Anpassungen? Da müssten wir uns also noch einmal kurzschließen.)

LG
Martin

powerpress
Posts: 9
Joined: Thu Mar 10, 2011 11:28 am
Contact:

Re: Wellrad und PayPal

Post by powerpress » Mon Apr 16, 2012 8:57 pm

Hallo Martin

Ich hab genau das gleiche Problem wie tigerknut. Wenn paypal zur Seite zurückleitet ist der Warenkorb immer noch voll und es hat den Anschein, dass die Bezahlung bzw. Bestellung nicht ausgelöst wurde. emails werden von wellrad keine verschickt, aber nach kurzer Zeit von paypal an Shop und Käufer.

Ich hab Dir heut schon emails geschickt, aber ganz vergessen in der letzten email den von mir geänderten Code in der paypal.php dranzuhängen. Das erste Problem konnte ich bereits lösen. Bei mir war anfangs ja die Verbindung zu paypal nicht möglich. Es kam immer folgende Fehlermeldung:
"The link you have used to enter the PayPal system contains an incorrectly formatted item amount"
Danach hab ich recherchiert und auf http://wordpress.org/support/topic/wp-s ... tem-amount eine Problemlösung für Wordpress gefunden und grad mal ausprobiert.

Wenn man in Zeile 76 in plugins/wellrad/classes/paymentmodules/paypal/paypal.php den vorhandenen Code

Code: Select all

     <input type="hidden" name="amount_' . $item['itemCounter'] .'" value="' . sprintf('%.2f', $item['price']) . '" />
mit folgendem ersetzt:

Code: Select all

     <input type="hidden" name="amount_' . $item['itemCounter'] .'" value="' . number_format($item['price'],2) . '" />
funktioniert die Verbindung auf wundersame Weise...

Bloss die Rückkehr zum Shop und der Abschluss der Bestellung ist nicht zufriedenstellend.

Gruss
Dieter

powerpress
Posts: 9
Joined: Thu Mar 10, 2011 11:28 am
Contact:

Re: Wellrad und PayPal

Post by powerpress » Wed Apr 18, 2012 6:17 am

Hallo Martin

Ich steh da im Moment grad im Wald. Wie Du schon geschrieben hast sollte die Kommunikation zwischen paypal und wellrad über eine IPN funktionieren. So steht es ja auch bei paypal: https://www.paypalobjects.com/de_DE/htm ... c_ipn.html

Dafür fehlt mir aber in wellrad ein entsprechender script, der diese Vorgänge der IPN bearbeitet.

paypal empfiehlt auf obiger Seite ganz unten einen script-generator von payaltech auf der man einen Beispielcode erhält, den man als Ausgangspunkt verwenden kann. Da hört es bei mir aber schon wieder auf. Hier mal der Code für ein "IPN-PHP Write to HTML-page":

Aber das hast Du sicher auch schon vorliegen. Ob und welche Variablen da noch für wellrad rein müssen...???

Code: Select all

<?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';

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);


if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
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);
}
?>


Gruss

Martin
Posts: 346
Joined: Thu Oct 23, 2008 11:57 am
Contact:

Re: Wellrad und PayPal

Post by Martin » Thu Apr 19, 2012 2:16 pm

Hallo Dieter,

jetzt gibt es einen IPN-Patch-Download.

Der Ordner enthält das komplette, um eine Umschaltmöglichkeit zwischen Sandbox-Testumgebung und echtem Konto, "number_format()" und vor allem den ipn-Listener ergänztes Paypal-Modul. Damit müsstest du den Ordner plugins/wellrad/classes/paymentmodules/paypal ersetzen. Der darin enthaltene Unterordner "tmp_orders" muss beschreibbar sein. (Dort werden die Sessions als "***.temp" zwischengespeichert, nach der Bestätigungsnachricht von Paypal in "***.sent" umbenannt und, falls der Käufer zum Shop zurückkommt, auch wieder gelöscht.

D.h. im Laufe der Zeit werden sich dort ein paar Dateien ansammeln: Ein paar "***.temp"-Dateien von Interessenten, die den Kauf abgebrochen haben oder von Paypal nicht verifiziert wurden, "***.sent"-Dateien von Kunden, die nach dem Bezahlen nicht wieder zum Shop zurückgekommen sind. Eine Löschroutine gibt es noch nicht, aber die Dateien sind jeweils gerade mal ein gutes KB groß und vielleicht interessant für die Statistik. Wenn's zu viel wird, einfach per Hand löschen.

Ersetzt werden muss außerdem plugins/wellrad/classes/app/wrs_frontend_controller.php. Falls du den schon für dich angepasst hast: Die Änderungen sind minimal und ich könnte sie hier auch kurz aufschreiben, wenn gewünscht.

LG

Martin

powerpress
Posts: 9
Joined: Thu Mar 10, 2011 11:28 am
Contact:

Re: Wellrad und PayPal

Post by powerpress » Thu Apr 19, 2012 4:30 pm

Hallo Martin

Ich hab das gleich mal ausprobiert. Umschaltmöglichkeit funktioniert, man landet auf Wunsch in der Sandbox. Ich hab es aber gleich mal im "richtigen Leben" getestet. Leider hat es noch immer nicht geklappt. Ich hab es mit zwei unterschiedlichen Bestellungen probiert.

1. Test: Bezahlung bei paypal ausgeführt, danach gibt paypal dem Käufer aber zwei Möglichkeiten. Zurück zum Händlershop sowie das Konto ansehen. Ich hab mir gedacht, schau Dir mal das Konto an (viele denken vielleicht so, da sie bei der Gelegenheit schon mal den Kontostand prüfen wollen). Gut, das kann man ja machen, man wird dann auch schon über eine provisorische Transaktion informiert, danach logt man sich aus paypal aus und normalerweise war's das auch für den Käufer.
Bestätigung von paypal geht an Käufer sowie Verkäufer, scheint alles zu klappen. Bloss email von meinem Shop geht immer noch keine raus.
Ok, ich geh nochmal auf meine Seite und sehe, dass mein Warenkorb immer noch voll ist. So wie schon vor dem patch.

Tmp-Ordner gecheckt: Ein tmp ist vorhanden

2. Test: Ich wähle jetzt die Option "zurück zum Händlershop", komme auch brav dorthin, bekomme dann folgende Sicherheitswarnung angezeigt:
Obwohl diese Seite verschlüsselt ist, werden die von Ihnen eingegebenen Informationen über eine unverschlüsselte Verbindung gesendet und können leicht von Dritten gelesen werden.
Sollen diese Informationen wirklich gesendet werden?
Fortsetzen Abbrechen
Dann sehe ich wieder, dass der Warenkorb nicht leer ist.
Bestätigung von paypal geht wieder korrekt an Käufer sowie Verkäufer. Emails aus dem Shop werden keine versendet.

Tmp-Ordner gecheckt: Kein neues tmp vorhanden (somit müsste paypal ja kommuniziert haben, oder?)

Irgendwo harzt es noch

Liebe Grüsse
Dieter

albert
Posts: 526
Joined: Sun Mar 07, 2010 8:01 pm
Location: Germany
Contact:

Re: Wellrad und PayPal

Post by albert » Wed May 09, 2012 8:38 pm

Hallo Martin,

ganz überraschend ist das Problem bei mir auch aufgetaucht, dass jemand was bestellt und mit paypal bezahlt hat - und ich erfahre von nichts !!! Ich bin mir sicher, dass es bei div. Testkäufen immer funktioniert hat.
Hab das paypal jetzt vorerst deaktiviert.
Ersetzt werden muss außerdem plugins/wellrad/classes/app/wrs_frontend_controller.php. Falls du den schon für dich angepasst hast: Die Änderungen sind minimal und ich könnte sie hier auch kurz aufschreiben, wenn gewünscht.
Da ich nicht mehr genau weiss, was ich am frontend_controller verändert habe, wär es nett, wenn du die Änderungen hier exact niederschreiben würdest. Danke

Etwas nachdenklich macht mich was powerpress geschieben hat
Ok, ich geh nochmal auf meine Seite und sehe, dass mein Warenkorb immer noch voll ist. So wie schon vor dem patch.
Daher meine Frage: Bist du sicher, dass jetzt alle Eventualitäten abgecheckt sind und paypal wirklich zuverlässig klappt?

Danke für Deine Mühen (ich komme erst nächste Woche dazu, hier weiterzumachen, aber es wär ganz nett, wenn du bis dahin was für mich hättest)

Liebe Grüße
albert

powerpress
Posts: 9
Joined: Thu Mar 10, 2011 11:28 am
Contact:

Re: Wellrad und PayPal

Post by powerpress » Thu May 10, 2012 5:52 am

Hallo Albert

Martin hat den Fehler entdeckt und seit dieser Korrektur funktioniert es bei mir.

Die Datei wird nicht gefunden. Wahrscheinlich liegt es an der PHP-Version. Das verwendete __DIR__ gibt es erst ab PHP 5.3. Eigentlich kein richtiger Fehler, denn mit der richtigen PHP Version würde es ja anscheinend funktionieren. Mein Provider verwendet PHP 5.2.17 und somit funktioniert ein Befehl nicht.

Wenn das das einzige Problem ist, ist die Lösung einfach: In paypal.php, etwa Z. 250

Code: Select all

  $file =   __DIR__ . '/tmp_orders/pp_' . $_POST['custom'];
ersetzen durch

Code: Select all

  $file =   dirname(__FILE__) . '/tmp_orders/pp_' . $_POST['custom'];
Wegen der Änderungen im frontend_controller musst Du auf eine Antwort von Martin warten oder die Dateien vergleichen. Da ich noch keine Änderungen in der Datei hatte, hab ich gleich den patch verwendet und danach nochmal obige Zeile verändert, seitdem läuft es prima.

Liebe Grüsse
Dieter

albert
Posts: 526
Joined: Sun Mar 07, 2010 8:01 pm
Location: Germany
Contact:

Re: Wellrad und PayPal

Post by albert » Wed May 16, 2012 1:48 pm

Hallo,

bin jetzt erst dazu gekommen, mich um paypal zu kümmern.
Leider klappt das mit dem patch so (noch) nicht, hab den neuen wrs_frontend_controller unverändert übernommen und den neuen paypal-Ordner reinkopiert.

Es hängt jetzt bei "letzter Check", aber nur wenn paypal ausgewählt ist. Sieht so aus:
Zusammenfassung
Bestelldatum: 16. May. 2012
Lieferung an: %FIRST_NAME% %LAST_NAME%
%STREET%
usw.....
und man kann natürlich auch nicht auf "jetzt kaufen" drücken.

Weiss Jemand Rat (sitze jetzt schon den ganzen Tag dran und bin am Ende...). Danke

Wer mir helfen möchte kann einen Testkauf machen: bei Zahlungsart paypal erscheint bei mir eine schwarzweisse Seite und zum Schluss kein "jetzt kaufen", es geht also nicht weiter und es wird auch kein Kauf ausgelöst.
http://www.natur-und-handgemacht.de/?Shop
LG albert
Last edited by albert on Thu May 17, 2012 7:13 pm, edited 3 times in total.

albert
Posts: 526
Joined: Sun Mar 07, 2010 8:01 pm
Location: Germany
Contact:

Re: Wellrad und PayPal

Post by albert » Thu May 17, 2012 6:16 pm

Hallo kann mir denn Niemand helfen??? Martin???

Ich komme wohl gar nicht erst rein ins paypalsystem, oder?

Ich glaube da ist was mit der neuen paypal.php (habe versuchsweise alle anderen von mir geänderten dateien in den Orig.zustand zurückversetzt ohne Erfolg)

An powerpress: danke für den Tip in paypal.php Zeile 250. Habe selber auch php 5.2.17, hat aber bisher noch nichts gebracht, es hängt wohl noch davor.
Übrigens in Zeile 77

Code: Select all

<input type="hidden" name="business" value="' . $this->settings['business'] . '">
sollte am Ende wohl /> sein.

Post Reply