HowTo Zahlungsmodul einbinden im JTL Shop

Modulexpert

Sehr aktives Mitglied
14. März 2007
1.678
1
Ich hab mal ein kleines HowTo geschrieben wie mal eigene Zahlungmodule einbinden kann.

Da man ja nicht mit den Modulen des JTL Team in Konflikt geraten will
sollte man eine Id Wählen über der 10000er Marke.Dazu muß man allerdings eine Tabelle ändern

PHP:
ALTER TABLE `tbestellung` CHANGE `kZahlungsart` `kZahlungsart` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0';

Wie soll das Zahlungsmodul denn heißen ? Das gibt man hier an: Ich hab das Modul mal Zahlungsmodul genannt
PHP:
INSERT INTO `tmodul` VALUES ('za_zah_jtl', 'Zahlungsmodul', 'Thorsten Peters - Spielekiosk.de', 'Zahlungsmodul', '', '', '2010-01-15 21:01:09');

INSERT INTO `tzahlungsart` VALUES (11000, 'Zahlungsmodul', 'za_zah_jtl', NULL, '', '', 0);

INSERT INTO `tzahlungsartsprache` VALUES (11000, 'ger', 'Zahlungsmodul', 'Gebühr');
INSERT INTO `tzahlungsartsprache` VALUES (11000, 'eng', 'Billing', 'Fee');

In Zeile eins wird das Modul reingesetzt in die Datenbank.Ganz wicht ist vorne
der Modulname,dieser ist Hauptname in der Datenbank.Nehmt einen Namen der auch
das Modul wiederspiegelt. Als Beispiel PayPal : za_paypal_jtl

In Zeile 2 wird das Modul in Zahlungsarten gesetzt. Wichtig ist hier nur die
Hauptid,in dem Fall die 11000.

In Zeile 3 und 4 wird die Sprache in die Datenbank geschrieben,Wichtig ist hier
das die ID übereinstimmt mit der zweiten Zeile

Nun kommen wir zu den Einstellungen.Diese 3 Einstellungen müssen rein:
PHP:
INSERT INTO `teinstellungen` VALUES (100, 'zahlungsart_za_zah_jtl_min_bestellungen', '0', 'za_zah_jtl');
INSERT INTO `teinstellungen` VALUES (100, 'zahlungsart_za_zah_jtl_min', '0', 'za_zah_jtl');
INSERT INTO `teinstellungen` VALUES (100, 'zahlungsart_za_zah_jtl_max', '0', 'za_zah_jtl');

Vorne steht die ID das es sich um eine Zahlungseinstellung handelt.Danach kommt der Einstellungsname
Am besten so aufgebaut : zahlungsart + Modulname + Einstellungsart.
Danach der Standardwert. Ganz zum Schluß der Modulname wie angegeben bei Modul .In dem Fall za_zah_jtl

Jetzt kommen die Beschreibungstexte
PHP:
INSERT INTO `teinstellungenconf` VALUES (11001, 100, 'Anzahl Bestellungen nötig', 'Nur Kunden, die min. soviele Bestellungen bereits durchgeführt haben, können diese Zahlungsart nutzen.', 'zahlungsart_za_zah_jtl_min_bestellungen', 'zahl', 'za_zah_jtl_jtl', 1110, 'Y');
INSERT INTO `teinstellungenconf` VALUES (11002, 100, 'Mindestbestellwert', 'Erst ab diesem Bestellwert kann diese Zahlungsart genutzt werden.', 'zahlungsart_za_zah_jtl_min', 'kommazahl', 'za_zah_jtl', 1120, 'Y');
INSERT INTO `teinstellungenconf` VALUES (11003, 100, 'Maximaler Bestellwert', 'Nur bis zu diesem Bestellwert wird diese Zahlungsart angeboten. (einschliesslich)', 'zahlungsart_za_zah_jtl_max', 'kommazahl', 'za_zah_jtl', 1130, 'Y');
Fangen wir mal an :) . Zuert kommt die ID ,einfach immer die ID des Moduls plus 1 nehmen.
Also 11001 ,11002 usw.
Dann folgt die ID das es sich um eine Zahlungsart handel. also 100.
Dann folgt die Kurzbeschreibung
Danach die Lange Beschreibung
dann der Modulname der Einstellung.
Dann die Art in dem Beispiel nur zahl.Es gibt noch kommazahl,text.pass und selectbox
bei der Selectbox muß noch zusätzlich pro Option etwas in DB geschrieben werden.
Also Beispiel hier kurz die Optionen 0 und 1.Nacheinander ID der Beschreibung,Textbeschreibung Option
Optionsvalue und Sortiernummer
PHP:
INSERT INTO `teinstellungenconfwerte` VALUES (11004,'Einmalzahlung',0,1);
INSERT INTO `teinstellungenconfwerte` VALUES (11004,'Userhandle',1,2);

Es folgt der Hauptmodulname,die Sortiernummer und ob es aktiv sein soll.Ich schreib immer "Y"
Die Kunden kriegen es eh erst zu sehen wenn ich es bei den Versandarten einbungen haben.

Somit haben Wir unser Modul schonmal in der Datenbank drin und kann schon eingestellt werden.

Damit es aber sichtbar für die Kunden wird fehlt noch ein bischen.

In der Bestellabschluss.php sucht Ihr nach :
PHP:
  		elseif ($_SESSION['Zahlungsart']->cModulId=="za_clickpay_cc_jtl")
		{
			require_once(PFAD_INCLUDES_MODULES."clickpay/clickpay_cc.php");
			$smarty->assign('clickpay_cc_form',gib_clickpay_dd_form($obj->tkunde,$bestellung,$Einstellungen['zahlungsarten']['zahlungsart_clickpay_cc_merchantid'],$Einstellungen['zahlungsarten']['zahlungsart_clickpay_cc_secrethash']));
		}
genau die selben Zeilen macht Ihr jetzt dahinter,aber mit euren Modulnamen.
die php Datei sollt hier liegen /includes/modules/zahlungsmodul/zahlungsmodul.php
Beispiel:
PHP:
		elseif ($_SESSION['Zahlungsart']->cModulId=="za_zah_jtl")
		{
			require_once(PFAD_INCLUDES_MODULES."zahlungsmodul/zahlungsmodul.php");
			$smarty->assign('zahlungsmodulform',gib_zahlungsmodul_form($bestellung, ($Einstellungen['zahlungsarten']['zahlungsart_za_zah_jtl_id']), ($Einstellungen['zahlungsarten']['zahlungsart_za_zah_jtl_project_id'])));
		}
Was Ihr der Funktion übergeben woll ist euch überlassen. $bestellung ist aber ein muss.

Als letzte Änderung muß noch includes/bestellvorgang_inc.php bearbeitet werden
Dazu sucht Ihr :
PHP:
		case 'za_uos_dd_jtl':
			if ($Zahlungsart->einstellungen['zahlungsart_uos_dd_min_bestellungen']>0)
			{
				if ($_SESSION['Kunde']->kKunde>0)
				{
					$anzahl_obj = $GLOBALS["DB"]->executeQuery("select count(*) as anz from tbestellung where kKunde=".$_SESSION['Kunde']->kKunde." and (cStatus=\"".BESTELLUNG_STATUS_BEZAHLT."\" or cStatus=\"".BESTELLUNG_STATUS_VERSANDT."\")",1);
					if ($anzahl_obj->anz<$Zahlungsart->einstellungen['zahlungsart_uos_dd_min_bestellungen'])
						return false;
				}
				else
					return false;
			}

			if ($Zahlungsart->einstellungen['zahlungsart_uos_dd_min']>0 && $_SESSION['Warenkorb']->gibGesamtsummeWaren(1)<=$Zahlungsart->einstellungen['zahlungsart_uos_dd_min'])
				return false;

			if ($Zahlungsart->einstellungen['zahlungsart_uos_dd_max']>0 && $_SESSION['Warenkorb']->gibGesamtsummeWaren(1)>=$Zahlungsart->einstellungen['zahlungsart_uos_dd_max'])
				return false;
			break;
Danach direkt eure geänderten Zeilen einfügen.Gleicher Aufbau ,nur mit eurem Zahlungsmodul:
PHP:
		case 'za_zah_jtl':
			if ($Zahlungsart->einstellungen['zahlungsart_za_zah_jtl_min_bestellungen']>0)
			{
				if ($_SESSION['Kunde']->kKunde>0)
				{
					$anzahl_obj = $GLOBALS["DB"]->executeQuery("select count(*) as anz from tbestellung where kKunde=".$_SESSION['Kunde']->kKunde." and (cStatus=\"".BESTELLUNG_STATUS_BEZAHLT."\" or cStatus=\"".BESTELLUNG_STATUS_VERSANDT."\")",1);
					if ($anzahl_obj->anz<$Zahlungsart->einstellungen['zahlungsart_za_zah_jtl_min_bestellungen'])
						return false;
				}
				else
					return false;
			}

			if ($Zahlungsart->einstellungen['zahlungsart_za_zah_jtl_min']>0 && $_SESSION['Warenkorb']->gibGesamtsummeWaren(1)<=$Zahlungsart->einstellungen['zahlungsart_za_zah_jtl_min'])
				return false;

			if ($Zahlungsart->einstellungen['zahlungsart_za_zah_jtl_max']>0 && $_SESSION['Warenkorb']->gibGesamtsummeWaren(1)>=$Zahlungsart->einstellungen['zahlungsart_za_zah_jtl_max'])
				return false;
			break;
Sollte ihc hier was vergessen haben ,so möge mich JTL darauf hinweisen.

So als letztes noch 2 Änderungen bei den Templates:
Hier als Beispiel IDR-SMOOTH
template/IDR_smooth/bestellabschluss.tpl
Suche
PHP:
	{elseif $Bestellung->Zahlungsart->cModulId=="za_uos_dd_jtl"}
		{#uosDesc#}
		<br><br>
		{$uos_dd_form}
		<br>
Fügt danach nun eure geänderten Zeilen ein:
PHP:
  {elseif $Bestellung->Zahlungsart->cModulId=="za_zah_jtl"}
		{#zahlungsmodulDesc#}
		<br><br>
		{$zahlungsmodulform}
		<br>

Und als letzte Änderung:
template/IDR_smooth/lang/ger.conf oder andere Sprache
Suche
PHP:
sofortueberweisungDesc = 'Mit einem Klick auf diesen Button werden Sie zu Sofortüberweisung (Payment Network AG) geleitet und können sofort Ihre Bestellung bezahlen.'
Danach eure Beschreibung für euer Modul
PHP:
zahlungsmodulDesc = 'Mit einem Klick auf diesen Button werden Sie zu ZahlungsmodulGmbH) geleitet und können sofort Ihre Bestellung bezahlen.'

Das Wars, Das Modul ist nun eingebaut.

Ich hoffe der kleine Kurs war verständlich genug, ansonsen einfach hier fragen.
 

Blutlust

Aktives Mitglied
18. Oktober 2006
217
0
AW: HowTo Zahlungsmodul einbinden im JTL Shop

Danke Danke

werde ich mir bei gelegenheit anschauen und prüfen ob wir so unsere Dresdner WebPOS Schnittstelle einbinden können...
 

Modulexpert

Sehr aktives Mitglied
14. März 2007
1.678
1
AW: HowTo Zahlungsmodul einbinden im JTL Shop

Hi!

Da kannste nur was mit anfangen wenn der Rest fertig ist.
Hier wird nur beschrieben wie du dein fertiges Modul im Shop einbinden kannst.

Sorry hab ich derzeit keine Luft zum coden.Das Großprojekt Preisvision nimmt mir die ganze Zeit
 

mikatigra

Aktives Mitglied
11. August 2009
16
0
AW: HowTo Zahlungsmodul einbinden im JTL Shop

Hallo,

reicht es aus, wenn ich für sofortueberweisung.de die entsprechenden Einstellungen im Backend bei Zahlungs- u. Versandarten mache oder muss der php-Code des Shops (JTL- Shop 2.19) noch angepasst werden.
Muss ich noch was in der Wawi einstellen?

Ich erhalte die Fehlermeldung: "Der übergebene Input-Hash stimmt nicht mit dem von uns berechneten Input-Hash überein."

Beste Grüße,
Mika
 

ahahnedv

Gut bekanntes Mitglied
7. März 2007
144
0
Chemnitz
AW: HowTo Zahlungsmodul einbinden im JTL Shop

Hallo,

ich habe das selbe Problem bei einem Shop wie mikatigra.

Der übergebene Input-Hash stimmt nicht mit dem von uns berechneten Input-Hash überein. Wenn Sie der Shopbetreiber sind, überprüfen Sie bitte, ob das in Ihrem Shopsystem gespeicherte Projektpasswort mit dem Projektpasswort in den Projekteinstellungen Ihres Kundenmenüs übereinstimmt.

Kann evtl. jemand was dazu sagen?
Auch ein Anruf bei Paymant Network brachte keinen erfolg.
Durch die Verwendung neuer Projektpasswörter welche inkl. Sonderzeichen sind gibts wohl Probleme mit neuen Acounts bei denen bzw. hier beim Sofortüberweisungsmodul.
Vielleicht hat jemand einen Tipp für mich?
DANKE :)