Jump to content
xt:Commerce Community Forum

Paypal-Workflow nicht sauber in V3.04SP2.1


fiedler

Recommended Posts

Leider funktioniert der PayPal-Workflow immer noch nicht richtig. Eigentlich müssten alle Shopbetreiber mit der Verison 3.04SP2.1 dieses Problem haben:

Wenn der Kunde eine Bestellung mit PayPal tätigt, wird er zu PayPal weitergeleitet. Daraufhin wird diese Bestellung schon in der Datenbank hinterlegt und ist für den Admin sichtbar. Wenn der Käufer die Bezahlung abbricht, da er z.B. sein PP-Passwort nicht zu Hand hat, kann er nicht zu einem späteren Zeitpunkt mehr bezahlen und der Kunde weiss nicht, ob die Bestellung vollzogen ist oder nicht. Er bekommt ja auch keine Bestellbestätigung. Meldet sich der Kunde nun im Shop wieder an, sieht er als erstes, dass der Warenkorb noch voll ist. Er vermutet also, dass keine Bestellung erfolgte. Schaut er jedoch in sein Kundenkonto, ist dort die nicht bezahlte Bestellung sichtbar. Das ist doch nicht sauber !?!

Wünschenswert wäre für meine Begriffe folgender Work-Flow:

- nach der Bestellung wir diese in die Datenbank hinterlegt

- es erscheint die "Danke-Seite"

- Kunde erhält Bestellbestätigung mit Zahlunsaufforderung in Form eines Links, mit den entsprechenen Daten (E-Mailadresse, Preis, Versandkosten, ...)

Der Kunde kann so den Zeitpunkt der PayPal-Bezahlung selber wählen.

Was meint Ihr?

Ist die Umsetzung dessen durch kleine Codeänderungen mit der Version 3.04SP2.1 mgl.?

Link to comment
Share on other sites

Nachdem ich feststellen musste, dass kein Interesse an einem kundenfreundlichen PayPal-Workflow besteht, habe ich selber versucht, die oben geschilderte PayPal-Abwicklung umzusetzen.

Als erstes habe ich in der include/modules/payment/paypal.php folgende Zeile auskommentiert:

// $this->form_action_url = 'https://www.paypal.com/cgi-bin/webscr';

Somit wird schon mal eine Bestellung abgelegt, der Kunde erhält eine Bestellbestätigung, der Warenkorb ist leer und im System ist ein Bestellung angelegt worden --> alles Super.

Nun soll in der Bestellbestätigung eine Link zu Paypal integriert werden, so dass der Kunde, wann immer er möchte, die Zahlung durchführen kann. Dazu habe ich in der Mail-Vorlage folgenden Code hinzugefügt:

{if $PAYMENT_METHOD eq 'PayPal'}

Klicken Sie auf den untenstehenden Link, um die Bestellung per PayPal zu bezahlen:

https://www.paypal.com/de/cgi-bin/webscr?cmd=_xclick&business=email-adresse&item_name=Bestellnummer:{$oID}&amount=??????????&currency_code=EUR&no_shipping=1

{/if}

Leider kenne ich nicht die Variable, in der der Gesamtbetrag steht, der dann auch mit einem Punkt und nicht mit einem Komma die Cents von den Euros trennt.

Kann mir da wenigstens einer helfen? Kommen die Variablen aus der /include/classes/afterbuy.php?

Weiterhin interessiert mich auch die Meinung anderer, zu diesem Worflow.

Link to comment
Share on other sites

Wie wäre es denn den Paypal-Link dann auch im Kundenkonto anzugeben, so dass er von dort auch die Zahlung auslösen kann?

Ich finde eine Möglichkeit, die Zahlung später durchzuführen, ist ein Muß. Bei Paypal kann man ja z.B. auch sein Konto erst per Überweisung auffüllen, bevor man die eigentliche Zahlung durchführt.

Eine IPN-Anbindung vermisse ich ja auch, da muß ich mir erstmal die Modulstrukturen genauer ansehen :-/.

Link to comment
Share on other sites

Hallo,

die Lösung einen Link bereitzustellen ist meiner Meinung nach sehr vernünftig, hat für alle Seiten nur Vorteile.

Die notwendigen Werte für den Zahlbetrag kommen aus der

TABLE_ORDERS_TOTAL

text - formatierter Wert kommagetrennt mit EUR

value - php zahlenwert, einfach auf 2 Nachkommestellen runden und dann in den Link damit

Funktioniert wunderbar

Gruß

Heiko

Link to comment
Share on other sites

Hallo,

erstmal vielen Dank für die ersten Rückmeldungen, dass diese Vorgehensweise eine doch gute Alternative zum eingebauten PayPal-Workflow ist.

Den Link in den E-Mail-Text habe ich jetzt integriert und funktioniert super.

Hallo fiedler,

was genau muss man denn nun machen, bin leider nicht so versiert.

MfG

Perle

Link to comment
Share on other sites

Als erstes habe ich in der include/modules/payment/paypal.php folgende Zeile auskommentiert:

// $this->form_action_url = 'https://www.paypal.com/cgi-bin/webscr';

Somit wird schon mal eine Bestellung abgelegt, der Kunde erhält eine Bestellbestätigung, der Warenkorb ist leer und im System ist ein Bestellung angelegt worden --> alles Super.

Weiterhin interessiert mich auch die Meinung anderer, zu diesem Worflow.

Hallo Fieldler,

die Idee finde ich ganz gut, jetzt nur eine Frage ich habe deine Änderung bis jetzt nicht eingebaut. Wir der Kunde immer noch direkt zu Paypal geleitet und kann dort direkt bezahlen? Oder bekommt er nur noch den PayPal link per Email?

Wir haben auch das Problem dass das PayPal Modul von XT:Commerce nicht feststellen kann ob die Bestellung auch bezahlt wurde. Man muss also immer bei PayPal nachschauen.

Mit meinen alten Oscommerce Shop ging das PayPalIPN Modul, aber ich musste ja auch XT umsteigen.

Falls jemand vom SUPPORT TEAM das liest, soll ja vorkommen.

Wann gibt es ein funktionierendes PayPal IPN Modul bzw wann gibt es eine neue Version ;-((.

Irgendwann hab ihr mal was von Ende des Jahres geschrieben

Link to comment
Share on other sites

Hallo,

ich bin leider kein großer Programmierer und daher denke ich, dass meine Code-Manipulation nicht die sauberste ist. Aber es funktioniert:

Folgende Änderungen habe ich vorgenommen:

1. in /includes/modules/payment/paypal.php folgende Zeile auskommentieren:

//		$this->form_action_url = 'https://www.paypal.com/cgi-bin/webscr';[/PHP\
--> somit entfällt die direkte Weiterleitung zu PayPal, es wird eine Bestellung angelegt und der Kunde erhält für diese die Bestätigungs-Mail

2. in /sendorders.php --> Code eingefügt (siehe "Eigener Code" ganz unten):
[PHP]if ($_SESSION['customer_id'] == $order_check['customers_id']) {

$order = new order($insert_id);

$smarty->assign('address_label_customer', xtc_address_format($order->customer['format_id'], $order->customer, 1, '', '<br />'));
$smarty->assign('address_label_shipping', xtc_address_format($order->delivery['format_id'], $order->delivery, 1, '', '<br />'));
if ($_SESSION['credit_covers'] != '1') {
$smarty->assign('address_label_payment', xtc_address_format($order->billing['format_id'], $order->billing, 1, '', '<br />'));
}
$smarty->assign('csID', $order->customer['csID']);

$order_total = $order->getTotalData($insert_id);
$smarty->assign('order_data', $order->getOrderData($insert_id));
$smarty->assign('order_total', $order_total['data']);

// assign language to template for caching
$smarty->assign('language', $_SESSION['language']);
$smarty->assign('tpl_path', 'templates/'.CURRENT_TEMPLATE.'/');
$smarty->assign('logo_path', HTTP_SERVER.DIR_WS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/img/');
$smarty->assign('oID', $insert_id);
if ($order->info['payment_method'] != '' && $order->info['payment_method'] != 'no_payment') {
include (DIR_WS_LANGUAGES.$_SESSION['language'].'/modules/payment/'.$order->info['payment_method'].'.php');
$payment_method = constant(strtoupper('MODULE_PAYMENT_'.$order->info['payment_method'].'_TEXT_TITLE'));
}
$smarty->assign('PAYMENT_METHOD', $payment_method);
$smarty->assign('DATE', xtc_date_long($order->info['date_purchased']));

$smarty->assign('NAME', $order->customer['name']);
$smarty->assign('COMMENTS', $order->info['comments']);
$smarty->assign('EMAIL', $order->customer['email_address']);
$smarty->assign('PHONE',$order->customer['telephone']);
// eigener Code
$smarty->assign('CURRENCY1',$order->info['currency']);
$tmp1 = eregi_replace ( ',', '.' , $order->info['total'] );
$tmp2 = floatval ($tmp1);
$smarty->assign('TOTAL1',$tmp2);
// Ende eigener Code[/PHP]

3. in templates/.../mail/german/order_mail.txt Link einfügen:

[PHP]Ihre gewählte Zahlungsmethode:
----------------------------------------------------------
{if $PAYMENT_METHOD}Zahlungsmethode: {$PAYMENT_METHOD}{/if}
{if $PAYMENT_METHOD eq 'PayPal'}


Klicken Sie auf den untenstehenden Link, um die Bestellung per PayPal zu bezahlen:

https://www.paypal.com/de/cgi-bin/webscr?cmd=_xclick&business=<eure email-Adresse>&item_name=Bestellnummer:{$oID}&amount={$TOTAL1}&currency_code={$CURRENCY1}&no_shipping=1

Hinweis: Falls der Link nicht funktioniert, kopieren Sie diesen bitte manuell in das Adressfenster Ihres Browsers.
{/if}[/PHP]

Das wars.

Über diesen Link in der Bestätigungsmail kommt der Kunde wie bisher auch direkt zu Paypal. Dort wird die Gesamtsumme angezeigt, die er zu bezahlen hat sowie die Empfänger-Adresse (Der Online-Shop) und die Bestellnummer als Zahlungsgrund werden übermitteln.

Der Vorteil ist, dass der Kunde auch zu einem späteren Zeitpunkt bezahlen kann.

Link to comment
Share on other sites

Hallo Fiedler,

vielen Dank für die Antwort ich werde über die Feiertage mal deine Änderungen ausprobieren, solche Antworten würde ich mir von dem Support auch gerne wünschen.

Aber vielleicht kann man ja mit der Antwort vom XT:C Meister

********

Beiträge aus dem Support forun sind nicht für das freie Forum bestimmt.

********

und deiner was zusammen basteln

Wobei ich jetzt zwar nicht weis wie man den Zahlungs status Zahlungserinnerung einrichtet, vielleicht meint er ja Orderstatus, Zahlungserinnerung, aber ich werde nach fragen

***************

Link to comment
Share on other sites

  • 1 month later...

Bei Tausenderbeträgen wurden diese nicht korrekt übernommen!

Habe den Code in der send_order.php mal abgeändert. Allerdings nur für EUR beträge!

// eigener Code

$smarty->assign('CURRENCY1',$order->info['currency']);

$tmp1 = str_replace ( '.', '', $order->info['total'] );

$tmp2 = eregi_replace ( ',', '.', $tmp1);

$tmp3 = eregi_replace ( ' EUR', '', $tmp2);

//$tmp3 = floatval ($tmp2);

$smarty->assign('TOTAL1',$tmp3);

// Ende eigener Code

Link to comment
Share on other sites

@medien-vision

Ich habe Deine nachträgliche Codeänderung ausprobiert ... Danke erst einmal dafür, doch meldet mir PayPal damit folgendes:

Sie haben nicht unterstützte Zeichen in dieses Feld eingegeben. Zurzeit stehen Schriftzeichen für folgende Sprachen zur Verfügung: Europäische Sprachen, Chinesisch, Koreanisch, Japanisch und Thailändisch. Versuchen Sie es bitte erneut.

und trägt im Feld des zu zahlenden Betrags folgendes ein (Gesamtpreis war 1 Euro!):

1.00�cy_code=EUR

Was ist falsch?

Danke und Gruß

back@me

--------------------------------

EDIT:

mit der Version vom fiedler funktioniert es einwandfrei ... ich habe es so gemcht, wie er beschrieben hat (die Beträge, dich einnehmen werde liegen max. im 3-Stelligen Bereich ;-))!

Link to comment
Share on other sites

  • 3 weeks later...

Großen Dank an Fieder ersteinmal. Der PayPal-Fehler ist mir auch schon aufgefallen.

Schön wäre es, wenn der Kunde dennoch zu PayPal geleitet wird, damit er gleich in einem Schwung bezahlen kann. Wenn er es nicht macht, hat er immer noch die Bestellbestätigung.

Oder man baut einen Link in die order_success.php ein. Leider kenne ich mich mit den Variablen in xtc nicht so aus, sonst würde ich es selbst machen. Mal sehen, ob ich es schaffe mit trial&error. :cool:

In der Template order_success.html klappt das hier leider nicht:

{if $PAYMENT_METHOD=="PayPal"} zeige Link {/if}

Die Variable ist leer oder falsch genutzt.

Link to comment
Share on other sites

  • 2 weeks later...

Erst mal vielen Dank an Fieder für dei Umsetzung, klappt super.

Weiss denn jemand, wie man jetzt noch erreichen kann, dass auf der paypal-Seite dann auch ale Artikel angezeigt werden und nicht nur der Gesamtpreis?

Das wäre dann so ziemlich das beste, was machbar ist. Mit ein wenig Unterstützung sollte das doch gehen, oder?

Link to comment
Share on other sites

  • 1 month later...

Hallo,

hier noch einmal der Komplette Eintrag.

Gruß - CG

Hi,

hab gerade mal die Lösung oben eingebaut. Dazu noch folgenden Code in die oder_mail.html:


{if $PAYMENT_METHOD}<strong>Zahlungsmethode:</strong> {$PAYMENT_METHOD}<br>{/if}

{if $PAYMENT_METHOD eq 'PayPal'}
Klicken Sie auf den untenstehenden Link, um die Bestellung per PayPal zu bezahlen:<br />
<a href="https://www.paypal.com/de/cgi-bin/webscr?cmd=_xclick&[email protected]&item_name=Bestellnummer:{$oID}&amount={$TOTAL1}&currency_code={$CURRENCY1}&no_shipping=1">https://www.paypal.com/de/cgi-bin/webscr?cmd=_xclick&[email protected]&item_name=Bestellnummer:{$oID}&amount={$TOTAL1}&currency_code={$CURRENCY1}&no_shipping=1</a><br />
Hinweis: Falls der Link nicht funktioniert, kopieren Sie diesen bitte manuell in das Adressfenster Ihres Browsers.<br />
{/if}
[/HTML]

Wenn ich nun auf den Link in der Mail klicke, funktionierts.

Der Code in send_order.php sieht so aus:

[HTML]
// eigener Code
$smarty->assign('CURRENCY1',$order->info['currency']);
$tmp1 = str_replace ( '.', '', $order->info['total'] );
$tmp2 = eregi_replace ( ',', '.', $tmp1);
$tmp3 = floatval($tmp2);
$smarty->assign('TOTAL1',$tmp3);
// Ende eigener Code
[/HTML]

Schönen Gruß - CG

Link to comment
Share on other sites

Kompliment. Wir waren auf der Suche nach einer derartigen Lösung. Eines muss man sagen: Die besten Lösungen liefern (leider) regelmäßig die User, nicht das Supportteam. Und ich gewinne leider immer mehr den Eindruck, dass das hier zur Regel wird. Ein bezahltes User-hilft-User-Forum?

Link to comment
Share on other sites

  • 1 month later...

Hallo,

ist ja schon mal schön, dass es funktioniert :)

Was das andere angeht: manchmal wäre ein bisschen mehr Unterstützung schon schön ... Aber das ist ja hier schon öfter diskutiert worden.

Schönen Gruß - CG

Ein bißchen off topic, ich würde gerne die Versandkosten beim PayPal bezahlen separat haben, dafür gibt es ja die Paypal variable shipping. Ich habe versucht im send_order.php mit $smarty->assign('VERSAND',$tmp2); eine weitere Variable an die ordermail.html zu übergeben, kommt aber nicht an.

Gibt es irgendwo eine DOC zu $smarty??

Danke für jeden Tipp.

Grüsse

Manfred

Link to comment
Share on other sites

  • 5 months later...

Moin zusammen,

ich muss dieses Thema noch mal aus der Versenkung holen, denn seit zwei Wochen bekomme ich Hinweise von Kunden, dass Sie nicht wissen, wie Sie die PayPal Zahlung vornehmen sollen, da kein Hinweis/ Link in der Bestätigungsmail angegeben ist.

Das hat mich sehr stutzig gemacht und ich habe mir mal die Bestätigungsmail von zwei Kunden zurück schicken lassen und musste feststellen, dass der Link zur Pay Pal Seite nicht angezeigt wird. Ich habe -nachdem ich mir diese alternative Lösung eingebaut hatte- daran keine Veränderungen mehr vorgenommen und nie Probleme damit gehabt. Der Link ist übrigens in der HTML und in der TXT Mail eingefügt.

Hat jemand von Euch das selbe Problem, dass sich Kunden melden, weil kein Link zu PayPal in der Mail auftaucht?

Vielen Dank und schöne Tage

Backy

PS.: Kann ich eigentlich eigene Testbestellungen mit der Zahlungsweise PayPal wieder im PayPal Konto löschen? Somit könnte ich alles mal selbst durchprobieren und verschiedene Bestellungen testen.

Link to comment
Share on other sites

  • 2 months later...

Hi Marco,

ich muss sagen, dass ich das Problem seit dem nicht wieder gehabt habe. Ich habe auch nicht weiter nachgeforscht, woran es gelegen hat ... hatte erst die Vermutung, dass es nur bei ausländischen Kunden vorkommt! Doch dieser Vermutung bin ich nie nachgegangen, da sich bis heute niemand mehr beschwert hat.

Grüße

Link to comment
Share on other sites

  • 2 weeks later...

Ich habe ein weiteres Problem gefunden, welches allerdings allgemein mit externen Zahlungsmodulen besteht. Das heißt eigentlich ist es dasselbe Problem, nur aus einem anderen Blickwinkel betrachtet.

Folgende Situation:

Der Kunde wählt PayPal als Zahlungsmethode und wird zur PayPal Website weitergeleitet. Dann entschließt er sich doch eine andere Zahlungsmethode zu wählen und klickt auf den Button "Zurück zu xxxx". PayPal stellt den ja zur Verfügung. Jetzt ist er wieder im Shop und kann eine andere Zahlungsmethode wählen. Zum Beispiel Sofortüberweisung. Das Problem besteht darin, dass sobald der Kunde auf eine externe Zahlungsseite weitergeleitet wird, erstellt XTC automatisch eine Bestellung. Geht der Kunde zurück und wählt eine andere Methode, wird eine neue Bestellung angelegt. Man hat also zwei identische Bestellungen, eine mit Zahlungsmethode Paypal und eine mit Sofortüberweisung.

Kennt jemand eine Lösung für dieses Problem ???

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...