Modulexpert
Sehr aktives Mitglied
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
Wie soll das Zahlungsmodul denn heißen ? Das gibt man hier an: Ich hab das Modul mal Zahlungsmodul genannt
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:
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
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
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 :
genau die selben Zeilen macht Ihr jetzt dahinter,aber mit euren Modulnamen.
die php Datei sollt hier liegen /includes/modules/zahlungsmodul/zahlungsmodul.php
Beispiel:
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 :
Danach direkt eure geänderten Zeilen einfügen.Gleicher Aufbau ,nur mit eurem Zahlungsmodul:
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
Fügt danach nun eure geänderten Zeilen ein:
Und als letzte Änderung:
template/IDR_smooth/lang/ger.conf oder andere Sprache
Suche
Danach eure Beschreibung für euer Modul
Das Wars, Das Modul ist nun eingebaut.
Ich hoffe der kleine Kurs war verständlich genug, ansonsen einfach hier fragen.
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');
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']));
}
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'])));
}
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;
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;
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>
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.'
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.