So, ich habe den Fehler gefunden und nun wird mir auch der Link angezeigt. Wenn ich aber auf den Link klicke öffnet sich eine Seite und ich bekomme dann folgende Meldung: "This transaction cannot be processed. The amount to be charged is zero." Was mache ich denn nun schon wieder falsch?
Vermutlich nichts.... Ich habe das mit v2.1 getestet, muss dann wohl doch mal auch die 2.2 untersuchen.... Anscheinend gibt es da Unterschiede in der Ermittlung des Bestellwerts.
Ich habe es auch nochmal gestest und ich hatte auch schon etwas im Kopf. Es wurde nun bestätigt. Wenn ich die Bestellung im Backend erstelle, also manuell, funktioniert es nicht. Es funktioniert nur, wenn ich die Bestellung im Frontebd tätige funktioniert es 1a. Könntest du noch mal nachschauen, warum es bei einer manuellen Bestellung nicht funktioniert?
Wo und wie erstellst Du eine Bestellung manuell? Das liegt vermutlich daran, dass die benötigte "order_id" aufgrund der Verhältnisse bei der Bestellung im Frontend ermittelt wird...
Das klappt wohl. Wenn es jetzt noch eine Lösung für abgebrochene PP-Zahlungen gäbe, wäre es perfekt. Derzeit bekommen die Kunden nach einer abgebrochenen Zahlung ja keine Bestellbestätigung und werden in den Checkout zurückgeleitet. Das führt dann zu mehrfachen Bestellungen. Besser wäre es, die Bestellbestätigung mit dem Link sofort zu versenden und die Kunden bei abgebrochener Zahlung auf die normale Checkout-success zurückzuleiten. Dort könnte der Link dann auch nochmal eingeblendet werden, so daß der Kunde die Möglichkeit hat, die Zahlung nochmals zu probieren. So hatte ich das in den letzten Jahren mit Reimanns PayPal-Gold-Modul, welches es nicht mehr gibt, was aber 100%ig funktionierte. Der Sinn darin, warum Bestellbestätigungen nicht versendet werden wenn die Zahlung nicht erfolgt, erschliesst sich mir nicht.
Ja, wie ich vermutet hatte wird die "orders_id" falsch ermittelt, wenn das aus dem Admin-Bereich aktiviert wird, so dass der Betrag "0" .... errechnet wird.... Hier die geänderte Version des Overloads: PHP: class pt_paypal_paylink_SendOrderContentView extends pt_paypal_paylink_SendOrderContentView_parent{ public function __construct() { parent::__construct(); $orders_id = $GLOBALS['insert_id']; if (!$orders_id ) { $orders_id = $_GET['oID']; } if ($orders_id) { $orders_query_sql = " SELECT ot.value as order_total FROM ".TABLE_ORDERS." o LEFT JOIN ".TABLE_ORDERS_TOTAL." ot USING (orders_id) WHERE o.orders_id='$orders_id' AND ot.class = 'ot_total'"; $orders_query=xtc_db_query($orders_query_sql); $orders_data=xtc_db_fetch_array($orders_query); $amount=round((float)$orders_data['order_total'],2); $paypal = new GMPayPal(); $paycode = md5(uniqid()); $paypal->setPaycode($orders_id, $paycode, $amount); $paylink = HTTP_SERVER.DIR_WS_CATALOG."paypal_payment.php?paycode=".$paycode; $message=' <p>Um diese Bestellung per PayPal zu bezahlen, folgen Sie bitte diesem Link: </p> <p><a href="%s">Bestellung per PayPal bezahlen</a></p> '; $paylink=sprintf($message,$paylink); $this->set_content_data('PAYPAL_PAYLINK',$paylink); } }}
Ja, das wurde schon des öfteren diskutiert.... Die Bestellung ist ja gültig, auch wenn die direkte Zahlung nicht erfolgreich war.... Andererseits hatte Steffen ja kürzlich ein Modul veröffentlicht, um solche doppelten Bestellungen zu löschen....
Man kann im Backend unter Kunden eine neue Bestellung erzeugen bzw. unter Bestellungen bereits erstellte Bestellung bearbeiten. Wenn man diese eine der beiden Varianten benutzt und dann auf Bestellbestätigung neu erzeugen klickt, so funktioniert der PayPay-Link nicht mehr. Es wäre wirklich super, wenn es bei manuell-erstellten Bestellungen auch funktionieren würde. Das habe ich gerade getestet und das System erstellt wirklich eine Bestellung nach der Anderen, wenn man versucht nach einer abgebrochenen Bestellung diese neu zu bezahlen. Sehr komisch. Hey Avenger, du bist wirklich eine große Bereicherung für dieses Forum. Vielen lieben Dank.
hmm... Wenn man den Link mehrfach aufruft, wird auch bei nicht erfolgter Zahlung folgende Fehlermeldung ausgegeben: "Payment has already been made for this InvoiceID."
Das müsste dann auch bei den im Admin verschickten Pay-Links so geschehen. Denn ich nutze ja die bestehende Gambio-Infrastruktur dafür
Ich habe es nochmals probiert und kann das Problem nicht reproduzieren. Schon eigenartig. Kann man Variable auch in die checkout_success einbinden?
Ich habe das mal soeben nachgeholt mit dem "DANKE"-Button. Ich bräuchte dann doch nochmal deine Hilfe. Nach langem suchen im Forum habe ich nichts gefunden. Es passt jetzt auch nicht hier so wirklich rein, aber hat dennoch mit der Sache zu tun. Nun zum Problem. Ich habe festgestellt, wenn ich eine Bestellbestätigung maschinell im Frontend erzeugen lasse, stellt das System die Bestellbestätigung ordnungsgemäß dar. (siehe im Bild linke Bestellbestätigung) Wenn ich aber eine Bestellbestätigung manuell im Backend bearbeite oder erzeuge, dann haut das System das Leerzeichen zwischen der bearbeiteten Position und dem Betrag raus. (siehe im Bild rechte Bestellbestätigung) Es ist jetzt nicht gravierend, aber es sieht nicht schön aus.
Der Vollständigkeit halber nun auch noch dieses Overload... Die beiden "Overloads" befinden sich im Archiv im Anhang. Für "checkout_success" wir zusätzlich noch die Variable "PAYMENT_MODUL" erstellt (bei "send_order" ist die schon enthalten). Damit kann man z.B. verhindern, dass der Pay-Link angezeigt wird, wenn die Zahlart "paypalng" ist. PHP: {if $PAYMENT_MODUL<>'paypalng'}{/if} Wie immer gilt: Anwendung auf das ausschließliche Risiko des Shopbetreibers. Es gibt keinerlei Gewährleistung. Erst in einem Testshop testen. Cache leeren.
Funktioniert nicht... Der Link in der Email ist ungültig und in der Checkout-Success wird nichts ausser Header und Footer angezeigt.