Gelöst:XTC Moneybookers-,Paypal Zahlungen automatisch als bezahlt markieren in JTL

ingmar1601

Aktives Mitglied
23. August 2009
106
0
In XT-Commerce gibt es Zahlungsmodule z.b. Paypal Express oder Moneybookers, mit denen es möglich, den Zahlungsstatus autmatisch im shop zu setzen.

Leider werden aber alle erfolreichen und abgebrochenden Zahlungen über den connector in die Wawi übertagen und man muss hier nochmal den Abgleich für jede Bestellung machen und die Zahlung nochmal manuell auf bezahlt setzen oder nicht.

Das fand ich ziemlich umständlich und unbefriedigend und habe deshalb das Problem wie folgt gelöst:

1) Damit die Zahlungsart richtig in der Wawi erkannt wird und nicht nur bei den Anmerkungen steht, muss man erstmal das mapping richtig anpassen. Das macht man in der Datei

/admin/includes/modules/jtlwawi_connector/dbeS/GetBestellung.php

Folgende Switch Anweisungen müssen angepasst werden um die XTC Zahlungsarten (case 'xyz') den Wawi Zahlungsarten(Zahlungsweise: xyz) zugerpdnet werden.

Code:
switch ($Bestellung->payment_method)
{
case 'banktransfer':
$Bestellung->zahlungsweise = "Zahlungsweise: Lastschrift";
$VersandKey = -1;
break;
case 'cc':
$Bestellung->zahlungsweise = "Zahlungsweise: Kreditkarte";
$VersandKey = -1;
break;
case 'moneybookers_cc':
$Bestellung->zahlungsweise = "Zahlungsweise: Kreditkarte";
$VersandKey = -1;
break;
case 'moneybookers_elv':
$Bestellung->zahlungsweise = "Zahlungsweise: Bankeinzug";
break;
case 'cod':
$Bestellung->zahlungsweise = "Zahlungsweise: Nachnahme";
break;
case 'invoice':
$Bestellung->zahlungsweise = "Zahlungsweise: Auf Rechnung";
break;
case 'paypal':
$Bestellung->zahlungsweise = "Zahlungsweise: PayPal";
break;
case 'paypalexpress':
$Bestellung->zahlungsweise = "Zahlungsweise: PayPal Express";
break;
case 'moneyorder':
$Bestellung->zahlungsweise = "Zahlungsweise: Vorkasse";
break;
case 'ipayment':
$Bestellung->zahlungsweise = "Zahlungsweise: Kreditkarte";
break;
case 'ipaymentelv':
$Bestellung->zahlungsweise = "Zahlungsweise: Lastschrift";
break;

default:
$Bestellung->zahlungsweise = "Zahlungsweise: $Bestellung->payment_method";
break;
}
2) Wenn man folgenden SQL im Wawi Connector anpasst, dann werden nur die gewünschten Bestellstati übertragen:

/admin/includes/modules/jtlwawi_connector/dbeS/GetBestellung.php

Code:
[B][I]//hole alle neuen order    [/I]
    $cur_query = eS_execute_query("select orders.payment_method, orders.orders_id, orders.customers_id, orders.comments, date_format(orders.date_purchased, \"%d.%m.%Y\") as ErstelltDatumF from orders LEFT JOIN eazysales_sentorders ON orders.orders_id=eazysales_sentorders.orders_id where eazysales_sentorders.orders_id is NULL AND[COLOR=Red][B] orders_status in(3,4,9,10,16)[/B][/COLOR] limit 1");[/B]
Den gewünschten orders_status bekommt man aus der Tabelle "orders_status" . Ich übertrage z.b. folgende Stati (Vorkasse, Moneybookers ok, Paypal ok,Nachnahme, Versendet). Negative (abgebrochen,offen etc) werden nicht übertragen.

3) Jetzt werden nur die gewünschten Bestellungen in die Wawi übertragen. Aber steht z.B. bei Moneybookers- oder Paypal Zahlungen der "Bezahlt" Status immer noch auf "N"

Um das zu lösen, habe ich 2 trigger in der WAWI Datenbank erstellt. Diese kann man z.B. mit Microsft SQL 2005 Express auf dem Server erstellen.

Der erste trigger schaut nach, wenn ein neuer Auftrag erstellt wird. Wenn bestimmte Zahlungen (die ungleich 'Vorkasse','Scheck/Vorkasse','Überweisung' sind'), also Kreditkarte, Paypal etc. dann wird ein Eintrag in der Tabelle tZahlung erstellt mit dem Daten aus den neuen Auftrag. Leider ist zu diesem Zeitpunkt noch nicht der Zahlbetrag bekannt und deswegen braucht man noch einen 2. Trigger.


1. Trigger
Code:
USE [eazybusiness]
GO
/****** Object:  Trigger [dbo].[trig_zahlstatus]    Script Date: 09/03/2009 23:29:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE TRIGGER [dbo].[trig_zahlstatus]

ON [dbo].[tbestellung]

FOR INSERT 

AS
SET NOCOUNT ON;

DECLARE @zahlart varchar(100)
SELECT @zahlart = (Select CName from tZahlungsart z,Inserted i where z.kZahlungsArt=i.kZahlungsArt)

[B][COLOR=Red]IF (@zahlart != 'Vorkasse' AND @zahlart != 'Scheck/Vorkasse' AND @zahlart != 'Überweisung')[/COLOR][/B]
 BEGIN

DECLARE @maxID int 
SELECT @maxID = (Select ISNULL(max(kZahlung),0)+1 from tZahlung)

DECLARE @orderid int
SELECT @orderid = (SELECT kBestellung FROM Inserted)

INSERT INTO tZahlung (kZahlung, cName, dDatum, fBetrag, kBestellung, kBenutzer, nAnzahlung)
Select @maxID,@zahlart, dErstellt,99 ,kBestellung,tBenutzer_kBenutzer,0 from Inserted

END
Der 2. Trigger ermittelt den Zahlbetrag aus der tbestellpos Tabelle und fügt diesen zu den oben erstellt zu den oben erstellten Eintrag in der Tabelle tZahlung hinzu.

2. Trigger
Code:
USE [eazybusiness]
GO
/****** Object:  Trigger [dbo].[trig_ordervalue]    Script Date: 09/03/2009 23:28:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[trig_ordervalue]

ON [dbo].[tbestellpos]

FOR INSERT 

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
DECLARE @orderid int
SELECT @orderid = (SELECT tBestellung_kBestellung FROM Inserted)

UPDATE tZahlung SET fBetrag=(SELECT sum(fVKPreis*nAnzahl)FROM tbestellpos WHERE kBestellung=tBestellung_kBestellung) WHERE kBestellung=@orderid
 
END
Jetzt sollten die gwünschten Zahlungen automatisch als bezahlt markiert sein nach dem Import.

Ich würde mich sehr freuen, wenn hier ein JTL Entwickler mal rüberschauen kann, ob alles so seine Richtigkeit hat. Noch viel mehr würde es mich freuen wenn die WAWI sowas von Haus aus unterstützen würde.
 

Smarti

Aktives Mitglied
8. Februar 2008
440
0
AW: Gelöst:XTC Moneybookers-,Paypal Zahlungen automatisch als bezahlt markieren in JT

hee klasse
genau das was meine Frau möchte bei den Paypal Bezahlungen !!
werde es Testen
 

ingmar1601

Aktives Mitglied
23. August 2009
106
0
AW: Gelöst:XTC Moneybookers-,Paypal Zahlungen automatisch als bezahlt markieren in JT

Bei dem Update fehlt in dieser Formel noch der Rabatt:

SELECT sum(fVKPreis*nAnzahl)FROM tbestellpos

Es wäre schön, ein JTL Programmierer sagen könnte, wie hier die Fromel mit Rabatt lautet. Oder bekommt man den Bestellwert noch aus einer anderen Tabelle als einen Wert?
 

r-laden

Gut bekanntes Mitglied
22. Oktober 2009
141
0
AW: Gelöst:XTC Moneybookers-,Paypal Zahlungen automatisch als bezahlt markieren in JT

Hallo,
nach genau der Funktion habe ich auch gesucht. Bevor ich es auch einbaue, funktioniert bisher alles reibungslos?

Finde ich schade das sich nicht mal jemand von JTL hier im Thread gemeldet hat wenn sich jemand schon so ne Mühe macht und mit helfen tut....



MfG
jens
 

ingmar1601

Aktives Mitglied
23. August 2009
106
0
AW: Gelöst:XTC Moneybookers-,Paypal Zahlungen automatisch als bezahlt markieren in JT

Wir haben es seit Anfang September im Einsatz und es funktioniert problemlos und nimmt viel Arbeit ab.

Wenn man z.B. Rabatte, Gutscheine verwendet, dann müsste das update statement bei der Zahlung noch angepasst werden. Wir werden demnächst eine Gutscheinaktion starten und dann kann ich mal schauen, ob es hier Probleme gibt und es ggf. anpassen.

Ich finde es auch schade, dass der Vorschlag auf so wenig Feedback stößt. Ich habe es auch schon bei den Verbesserungsvorschlägen gepostet...leider hat sich noch keiner gemeldet. Aus meiner Sicht, wäre es schnell zu realisieren und würde den Usern viel lästige Arbeit abnehmen.
 

mexx

Aktives Mitglied
19. Januar 2010
21
0
AW: Gelöst:XTC Moneybookers-,Paypal Zahlungen automatisch als bezahlt markieren in JT

Hi!

Danke für das tolle Modul! Allerdings denke ich ein großes Problem entdeckt zu haben. Habe es jetzt mit der Sandbox von Paypal getestet.

Habe auf meiner letzten Shop-Seite die Bestellung abgeschickt und bin dann auf die Login-Maske der Sandbox weitergeleitet worden - dort habe ich mich allerdings nicht eingeloggt sondern einfach das Fenster geschlossen - somit ist hier keine Bezahlung bei Paypal getätigt worden.

Und jetzt das Problem:
JTL übernimmt die Bestellung trotzdem mit dem Status "Bezahlt"...
Ich müsste jetzt wieder ins Paypal-Konto schauen, ob tatsächlich eine Bezahlung durchgeführt wurde...

Gibt es hierfür eine Lösung?
 

ingmar1601

Aktives Mitglied
23. August 2009
106
0
AW: Gelöst:XTC Moneybookers-,Paypal Zahlungen automatisch als bezahlt markieren in JT

Ich denke nicht, dass es ein Problem von dem workaround ist. Wie ist der Status von der Bestellung im xt- shop? Immer noch als bzahlt markiert?
 

mexx

Aktives Mitglied
19. Januar 2010
21
0
AW: Gelöst:XTC Moneybookers-,Paypal Zahlungen automatisch als bezahlt markieren in JT

Danke für die schnelle Reaktion! Echt sehr gut das Forum hier!
Die Bestellung ist bei einer abgebrochenen Paypal-Bezahlung auf "In Bearbeitung".

Hab mir gerade gedacht, dass es eine Lösung sein könnte, wenn ich einen Bezahlstatus mit "Abgebrochen" definiere und diesen bei nicht abgeschlossener Bestellung übernehme. Mit dem ersten Teil deiner Lösung kann ich ja definieren, dass er gewisse Stati nicht übernimmt.

Könnte das eine Lösung sein?

lg, mexx.
 

ingmar1601

Aktives Mitglied
23. August 2009
106
0
AW: Gelöst:XTC Moneybookers-,Paypal Zahlungen automatisch als bezahlt markieren in JT

ja genau das ist die Lösung...Du darfst nur erfolgreiche Bestellungen erlauben. Die Anpassung machst Du im Wawi Connector wie oben beschrieben.

Du musst den hinteren Teil dieses SQLs anpassen und die jeweilgen Bestellstati eintragen..

$cur_query = eS_execute_query("select orders.payment_method, orders.orders_id, orders.customers_id, orders.comments, date_format(orders.date_purchased, \"%d.%m.%Y\") as ErstelltDatumF from orders LEFT JOIN eazysales_sentorders ON orders.orders_id=eazysales_sentorders.orders_id where eazysales_sentorders.orders_id is NULL AND orders_status in(3,4,9,10,16) limit 1"
 

mexx

Aktives Mitglied
19. Januar 2010
21
0
AW: Gelöst:XTC Moneybookers-,Paypal Zahlungen automatisch als bezahlt markieren in JT

Super! Hab an diese Variante beim Verfassen des Eintrags noch nicht gedacht! Danke für die schnelle Hilfe und für die tolle Erweiterung.

lg, mexx.
 

ingmar1601

Aktives Mitglied
23. August 2009
106
0
AW: Gelöst:XTC Moneybookers-,Paypal Zahlungen automatisch als bezahlt markieren in JT

Viel Spass :) Und berichte uns, ob es alles klappt. Hoffentlich wird diese Funktion mal fest in der Wawi/ Connector eingebaut.
 

mexx

Aktives Mitglied
19. Januar 2010
21
0
AW: Gelöst:XTC Moneybookers-,Paypal Zahlungen automatisch als bezahlt markieren in JT

Das hoff ich doch auch!
Eine Frage hätte ich noch... funktioniert das ganze auch mit "Sofortüberweisung.de"?
 

ingmar1601

Aktives Mitglied
23. August 2009
106
0
AW: Gelöst:XTC Moneybookers-,Paypal Zahlungen automatisch als bezahlt markieren in JT

Ich benutze Sofortüberweisung.de nicht, aber soweit ich weiß, wird ja nur die Überweisung elektronische ausgefüllt, aber Du das hast das Geld noch nicht und bekommst es genau wie bei Vorkasse und musst es dann abgleichen.

https://www.payment-network.com/de/vendor/sofortueberweisung-ablauf.html

Dem workaround ist egal....Du legst ja fest, welche Stati als bezahlt markiert werden oder nicht.
 

mexx

Aktives Mitglied
19. Januar 2010
21
0
AW: Gelöst:XTC Moneybookers-,Paypal Zahlungen automatisch als bezahlt markieren in JT

Ok, Danke!!!

Werd das einfach mal durchtesten!

lg, mexx.
 

marcopolo

Aktives Mitglied
7. August 2010
9
0
AW: Gelöst:XTC Moneybookers-,Paypal Zahlungen automatisch als bezahlt markieren in JT

ich bin anfänger mit ms sql und gerade dabei auf jtl wawi umzustellen
die php skript änderungen sind schnell implementiert
bei den mssql 2005 trigger scripten bin ich nicht ganz sicher:
wie werden die eingebaut und wie und wann werden die ausgeführt?

habe das ms sql server management studio express installiert und bereits zur Sicherung in Benutzung

habe mir den trigger wizard grob angeschaut und die beiden trigger scripts als trigger vorlagen immerhin im template explorer mal angelegt
wie könnte es weiter gehen?

dank und gruss
marco
 

ingmar1601

Aktives Mitglied
23. August 2009
106
0
AW: Gelöst:XTC Moneybookers-,Paypal Zahlungen automatisch als bezahlt markieren in JT

Hallo Marco,
die trigger werden automoatisch ausgeführt, sobald ein Datensatz in die Tabelle tbestellpos und tbestellung eingefügt wird.

Um die Trigger zu erstellen muss der Code einfach in ein leeres SQL Anweisungsfenster eingefügt und danach ausgeführt werden. Der Trigger taucht dann unter der Tabelle tbestellpos und tbestellung auf.
 

bernd12

Gut bekanntes Mitglied
1. Oktober 2009
518
1
w
AW: Gelöst:XTC Moneybookers-,Paypal Zahlungen automatisch als bezahlt markieren in JT

Den gewünschten orders_status bekommt man aus der Tabelle "orders_status" . Ich übertrage z.b. folgende Stati (Vorkasse, Moneybookers ok, Paypal ok,Nachnahme, Versendet). Negative (abgebrochen,offen etc) werden nicht übertragen.



bei mir werden nach dem Patch alle auf bezahlt gesetzt oder z.B. keine NN-Bestellung mehr importiert.

ich habe bei

//hole alle neuen order
$cur_query = eS_execute_query("select orders.payment_method, orders.orders_id, orders.customers_id, orders.comments, date_format(orders.date_purchased, \"%d.%m.%Y\") as ErstelltDatumF from orders LEFT JOIN eazysales_sentorders ON orders.orders_id=eazysales_sentorders.orders_id where eazysales_sentorders.orders_id is NULL AND orders_status in(3,4,9,10,16) limit 1");
noch die IDs 1 , 2, 3 dazugemacht. Hat auch nichts gebracht, sobald diese Zeile da drin steht, kommt keine NN Bestellung mehr in der Wawi an
 

bernd12

Gut bekanntes Mitglied
1. Oktober 2009
518
1
w
AW: Gelöst:XTC Moneybookers-,Paypal Zahlungen automatisch als bezahlt markieren in JT

das NN Problem habe ich gelöst. Es hat einfach gefehlt im ersten trigger.

AND @zahlart != 'Nachnahme'

Das alle auf bezahlt stehn noch nicht. Die abgebrochenen Bestellungen einfach nicht zu importieren kann ja auch keine Lösung sein, da diese Kunden meist auf eine Andere Zahlart umschwenken, und dann überweisen wollen...
 

ingmar1601

Aktives Mitglied
23. August 2009
106
0
AW: Gelöst:XTC Moneybookers-,Paypal Zahlungen automatisch als bezahlt markieren in JT

Dann wird es höchstwahrscheinlich daran liegen, dass die Bestellung bereits an Wawi übertragen wurde und dann nicht nochmal importiert wird.
Damit sie nochmal importiert wird muss man in der xtc Tabelle eazysales_sentorders die Bestellung löschen.

Zu Deinem anderen Post. Wenn ein Kunde bei einer abgebrochenen Zahlung auf eine andere Zahlart umschwenkt, dann kann man die Zahlart und Status im XTC backend einstellen und die Bestellung wird dann an die Wawi übertragen.
 

Ähnliche Themen