Members: 16,996
Threads: 38,845
Posts: 159,389
Online: 20

Newest Member: Kl_broka@rediffmail.com


Odoo.tv - Outdoor Television


Sedo - Domains kaufen und verkaufen das Projekt mambers.com steht zum Verkauf Besucherstatistiken von mambers.com etracker® Web-Controlling statt Logfile-Analyse
Old 16.07.2004, 14:00   #1 (permalink)
Junior Mamber
 
merida's Avatar
 
Join Date: May 2004
Location: Magdeburg
Posts: 30
merida is on a distinguished road
Default phpShop: neues Bezahlsystem anlegen

Hallo,

der phpShop bietet zwar die Möglichkeit neue Bezahlarten anzulegen, jedoch sind die Bezahlsysteme fest eingestellt.

Im Bezahlsystem stecken alle Eigenschaften des Bezahlvorganges.Die dem Bezahlsystem zugeordnete Bezahlart erbt sie dann gewissermaßen.

Der Vorteil eines neuen Bezahlsystemes kann einerseits eine höhere Übersichtlichkeit sein und andererseits bekommt man dadurch die Möglichkeit eigene Plausibilitätsprüfungen für die dem neuen Bezahlsystem zugeordnete Bezahlart vorzunehmen.
(Beispiel für Plausibilitätsprüfungen: für das bereits integrierte Bezahlsystem "Bankeinzug" werden bei der Bestellung die Kontodaten des Kunden überprüft).
D.h. bei allen Bezahlarten die ich dem Bezahlsystem "Bankeinzug" zuordne, werden auch diese Plausibilitätsprüfungen durchgeführt

Um ein neues Bezahlsystem in den phpShop zu integrieren ist folgendes abzuändern/hinzuzufügen:

(1) - generell
in .../administrator/components/com_phpshop/languages/germanf.php muß folgende Variable hinzugefügt werden.

- ca. Zeile 953 (in diesem Code heißt das neue Bezahlsystem z.B. "Vorkasse")
Quote:
Code:
var $_PHPSHOP_PAYMENT_FORM_NB = "Vorkasse";
(2) – Eintrag des neuen Bezahlsystemes ins Listenfeld des Bezahlart-Formulars

- die .../administrator/components/com_phpshop/html/store.payment_method_form.php muß folgendermaßen abgeändert werden
(Beachte: das value =‘V‘ (oder anderer Buchstabe) darf in der Inputbox nur einmal vorkommen )

-ca. Zeile 73
Quote:
Code:
<select class="inputbox" name="enable_processor">
<? $payment_process = $db->f("enable_processor"); ?>
<option <?php if ($payment_process=='') echo "selected"; ?> value=''><? echo $PHPSHOP_LANG- 
          >_PHPSHOP_PAYMENT_FORM_CC ?></option>
<option <?php if ($payment_process=="Y") echo "selected"; ?> value='Y'><? echo $PHPSHOP_LANG-
          >_PHPSHOP_PAYMENT_FORM_USE_PP ?></option>
<option <?php if ($payment_process=="B") echo "selected"; ?> value='B'><? echo $PHPSHOP_LANG- 
          >_PHPSHOP_PAYMENT_FORM_BANK_DEBIT ?></option>
<option <?php if ($payment_process=="N") echo "selected"; ?> value='N'><? echo $PHPSHOP_LANG-
          >_PHPSHOP_PAYMENT_FORM_AO ?></option>
<!-- Beginn der Änderung (zus. Eintrag im Listenfeld "Bezahlsystem nutzen (z.B. authorize.net)?:" im 
        Bezahlartformular) -->
<option <?php if ($payment_process=="V") echo "selected"; ?> value='V'><? echo $PHPSHOP_LANG-
          >_PHPSHOP_PAYMENT_FORM_NB ?></option>
<!-- Ende der Änderung (zus. Eintrag im Listenfeld "Bezahlsystem nutzen (z.B. authorize.net)?:" im 
       Bezahlartformular) -->
</select>
(3) – Anzeige des neuen Bezahlsystemes in der Spalte „Bezahlsystem nutzen“ der Bezahlartenliste

- die .../administrator/components/com_phpshop/html/store.payment_method_list.php muß folgendermaßen abgeändert werden:

- ca. Zeile 111

Quote:
Code:
switch($enable_processor) { 
                    case "Y": 
                        echo $PHPSHOP_LANG->_PHPSHOP_PAYMENT_FORM_USE_PP;
                        break;
                    case "N":
                        echo $PHPSHOP_LANG->_PHPSHOP_PAYMENT_FORM_AO;
                        break;
/* Anfang der Änderungen - Anzeige von "Name des neuen Bezahlsystemes" in der Spalte "Bezahlsystem nutzen" in der Bezahlartenliste */
                    case "V":
                        echo $PHPSHOP_LANG->_PHPSHOP_PAYMENT_FORM_NB;
                        break;
/* Ende der Änderungen - Anzeige von "Name der neuen Bezahlsystemes" in der Spalte "Bezahlsystem nutzen" in der Bezahlartenliste*/
                    case "B":
                        echo $PHPSHOP_LANG->_PHPSHOP_PAYMENT_FORM_BANK_DEBIT;
                        break;
(4) – Anzeige der Bezahlart eines neuen Bezahlsystemes während der Bestellung (Radiobuttons)

- die .../administrator/components/com_phpshop/html/checkout.paymentradio.php muß folgendermaßen abgeändert werden:

(4.1) - Aufnahme des neuen Bezahlsystemes in die Kategorien "Creditkarte" ($cc_payments=true) oder „keine Creditkarte ($nocc_payments=true)“

- ist das neue Bezahlsystem ein Kreditkarten- oder Internet-Bezahlsystem muß hier folgendes hinzugefügt werden:
- ca.Zeile 30
Quote:
Code:
    $q = "SELECT DISTINCT * from #__pshop_payment_method,#__pshop_shopper_vendor_xref WHERE ";
    $q .= "user_id='".$auth['user_id']."' AND #__pshop_payment_method.shopper_group_id=#__pshop_shopper_vendor_xref.shopper_group_id";
    $q .= " AND (enable_processor='' or enable_processor='Y'  or (enable_processor='V'))";
    $db_cc->query($q);
    if ($db_cc->num_rows()) {
        $cc_payments=true;
oder

- ist das neue Bezahlsystem kein Kreditkarten- oder Internet-Bezahlsystem muß hier folgendes hinzugefügt werden:
- ca. Zeile 42
Quote:
Code:
$q = "SELECT DISTINCT * from #__pshop_payment_method,#__pshop_shopper_vendor_xref WHERE ";
    $q .= "user_id='".$auth['user_id']."' AND #__pshop_payment_method.shopper_group_id=#__pshop_shopper_vendor_xref.shopper_group_id";
    $q .= " AND ((enable_processor='B') or (enable_processor='N') or (enable_processor='V'))";
    $db_nocc->query($q);
if ($db_nocc->num_rows()) {
        $nocc_payments=true;
(4.2) – Aufnahme des neuen Bezahlsystemes in den Aufruf der Funktion „list_checkNeuesBezahlsystem“

- ca. zeile 96
Quote:
Code:
<td nowrap width=10% align=right><? echo $PHPSHOP_LANG->_PHPSHOP_CHECKOUT_PAYMENT_SELECT ?></td>
        <td><?php $ps_payment_method->list_nocheck($payment_method_id, true); 
                  $ps_payment_method->list_bank($payment_method_id, true);
                  $ps_payment_method->list_checkNeuesBezahlsystem($payment_method_id, true);?> </td>
(4.3) – Erstellen einer neuen Funktion (hier "list_checkNeuesBezahlsystem")

- in der .../administrator/components/com_phpshop/classes/ps_payment_method.php muß folgende Funktion hinzugefügt werden:

-ca. Zeile 357
Quote:
Code:
/* Anfang der Änderung - Übergabe der neuen Bezahlart an die Fkt. "list_payment_radio"*/
  function list_checkNeuesBezahlsystem($payment_method_id, $horiz) {
    $this->list_payment_radio("V",$payment_method_id, $horiz); //A bit easier :-)
  }
/* Ende der Änderung - Übergabe der neuen Bezahlart an die Fkt. "list_payment_radio"*/
Hinweis

- Plausibilitätsprüfung
In der ps_checkout.php kann man in der folgender Funktion: "function validate_payment_method(&$d, $is_test)" für das neue Bezahlsystem über das Feld „enable_processor“ (z.B. enable_processor="V") verschiedene Plausibilitätsprüfungen vornehmen.

Das Feld „enable_processor“ in der Tabelle „mos_pshop_payment_method“ (wird abgespeichert im Bezahlart-Formular „.../administrator/components/com_phpshop/html/store.payment_method_form.php ") kennzeichnet gewissermaßen die Bezahlsysteme, sodaß man Sie dadurch im Code von einander unterscheiden kann

- Aufschlag
Soll für eine Bezahlart ein Aufschlag erhoben werden (z.B. eine Nachnahme-Gebühr), muß im Feld Rabatt (das übrigens in der germanf.php
var $_PHPSHOP_PAYMENT_METHOD_LIST_DISCOUNT und
var $_PHPSHOP_PAYMENT_METHOD_FORM_DISCOUNT

z.B. auf „Nachnahme-Gebühr“ umbenannt werden kann)
ein Aufschlag als negative Zahl eingegeben werden (z.B. –4.00 für 4 € Aufschlag )

- Vorkasse
Der Bezahlart "Vorkasse" sollte man entweder das Bezahlsystem „Nachnahme“ (wie schon von amarok Mwst im Warenkorb und der Produktübersicht (Reply Nr.17) richtig dargestellt) zuweisen, da dort keine Plausibilitätsprüfungen erfolgen, oder aber man legt sich nach dieser Anleitung dafür ein eigenes Bezahlsystem an. Das ist reine Geschmackssache. Die erste Variante (amarok s.o.) ist auf jede Fälle die schnellere. Nur wenn man eigene Plausibilitätsprüfungen für die Bezahlung braucht, kommt man um die zweite Variante nicht umhin.

- Code-Feld
Das Feld „Code“ im Bezahlart-Formular muß zwar, beim Anlegen einer neuen Bezahlart, ausgefüllt werden, jedoch wird es nur ausgewertet, wenn man das Bezahlsystem „Kreditkarte“ oder „Nutzung mit Internet-Bezahlsystem“ gewählt hat, das Häkchen im Feld „Kreditkarten-Bezahlart?:“ gesetzt hat und einer der folgenden Zeichenfolgen: (mc, visa, amex und discover) im Feld Code stehen.
Die Auswertung erfolgt in Form von einer Format-Überprüfung der Kreditkartennummern und einer Gültigkeitsüberprüfung des Datum der Kreditkartenlaufzeit in der ps_payment_method.php.
Soll diese Auswertung trotz Kreditkarte nicht erfolgen muß man eine „0“ eintragen.

Werden also Bezahlarten angelegt, die nicht dem Bezahlsystem „Kreditkarte“ oder „Nutzung mit Internet-Bezahlsystem“ zugeordnet werden (z.B. Vorkasse) kann man eine beliebige Zeichenfolge im Feld „Code“ eingeben.

Im Anhang sind wieder die modifizierten Dateien.
merida is offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Sponsored Links
Old 16.07.2004, 14:36   #2 (permalink)
Mamber
 
soeren's Avatar
 
Join Date: Apr 2004
Posts: 119
soeren is on a distinguished road
Thumbs up Re: phpShop: neues Bezahlsystem anlegen

Hallo,

danke für den Hack Merida. Endlich versetzen sich einige Leute in den Shop-Code und können helfen.

Allerdings ist in Zusammenhang mit diesem Hack etwas falsch verstanden worden:

mambo-phpShop bietet folgende Bezahlarten an und deckt damit folgende Zahlarten ab:

Kreditkarte
--------------
ganz normale Kreditkartenbezahlarten ohne Verarbeitung der Nummer über authorize.net. Die KK-Nummer wird abgespeichert und ist für den admin sichtbar. Somit können Zahlungen angefordert werden.
Unterschied zu "Nachnahme": Es werden KK-Daten abgefragt, die nicht optional sind!

Nutzung mit Internet-Bezahlsystem
----------------------------------
Kreditkartenbezahlarten, bei der die Buchung direkt im Anschluss an das Absenden der Bestellung über z.B. authorize.net erfolgt.

Bankeinzug
-------------
Bezahlarten, die in irgendeiner Art und Weise die Eingabe von Bankkonto-Daten erfordern. Es wird dann geprüft, ob von dem Kunden Bankverbindungsdaten vorliegen. Wenn nicht, wird eine Fehlermeldung ausgegeben. Ist nicht nur auf Bankeinzug beschränkt!!!

Nachnahme
--------------
Bezahlarten, bei denen weder die Eingabe von KK-Daten oder der Bankverbindung erforderlich ist. Kann sein: Vorkasse, Nachname (Cash on delivery) oder ähnliches. Deckt praktisch alles sonstige ab. Ist also nicht nur auf Bankeinzug beschränkt!!!

Lasst euch also bitte von dem Namen nicht beirren. Ich musste einen auswählen und habe Nachname genommen. Geht aber ebenso für Vorkasse. Nennt einfach eine neue Bezahlart "Vorkasse" und wählt bei "Bezahlsystem nutzen" Nachname. Dann kann der Kunde bei der Bestellung "Vorkasse" aswählen. Ändert dann entsprechend auch die Datei /administrator/components/com_phpshop/email_germanf.html ab, indem ihr eure Bankverbindung und evtl. Text ergänzt und ihr habt das gleiche Ergebnis, als wenn ihr den Hack von Merida anwendet.
Dieser ist allerdings dann wirklich sinnvoll, wenn Ihr eine Bezahlart integrieren müsst, die ausnahmsweise nicht in eine der vier Kategorien passt. In diesem Fall möchte ich mambo-phpShop dann aber auch um diese erweitern...


ciao, soeren
__________________
Looking for a free, easy-to-use and up-to-date e-commerce solution for Mambo?
mambo-phpshop.net
soeren is offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Old 17.07.2004, 14:40   #3 (permalink)
Junior Mamber
 
merida's Avatar
 
Join Date: May 2004
Location: Magdeburg
Posts: 30
merida is on a distinguished road
Default Re: phpShop: neues Bezahlsystem anlegen

Hallo Soeren,

danke für die Übersicht. Vielleicht kann man diese Zusammenfassung der Bezahlarten/-system und auch anderer Funktionen des phpShops mal in die Hilfe des Shops integrieren.

Ein schönes Wochenende.
merida is offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Old 18.07.2004, 12:33   #4 (permalink)
Mamber
 
soeren's Avatar
 
Join Date: Apr 2004
Posts: 119
soeren is on a distinguished road
Default Re: phpShop: neues Bezahlsystem anlegen

Gar kein Problem.
Ich finde auch "Bezahlsystem nutzen (z.B. authorize.net)?" als Spaltenüberschrift für die Auswahl der Art der Bezahlart für absolut verwirrend. Das wird in der nächsten Version sicher anders sein.

ciao, soeren
__________________
Looking for a free, easy-to-use and up-to-date e-commerce solution for Mambo?
mambo-phpshop.net
soeren is offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Old 18.07.2004, 21:56   #5 (permalink)
Junior Mamber
 
merida's Avatar
 
Join Date: May 2004
Location: Magdeburg
Posts: 30
merida is on a distinguished road
Default Re: phpShop: neues Bezahlsystem anlegen

Fein,

wenn man Dir diesbezüglich was helfen kann, sag Bescheid.
merida is offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
lösung: phpshop / standardversand pro gewicht amarok Komponenten 5 07.07.2004 10:42
phpShop Module... problem... dunedain Module 'How Do I' Questions 4 05.07.2004 14:41
dTree module for phpshop - user manual prado Module 'How Do I' Questions 1 22.06.2004 20:08
phpShop Component & Modules -> Customization questions s-t Component 'How Do I' Questions 8 26.05.2004 23:26
VeriSign Payment Option - phpShop rfincke Component 'How Do I' Questions 1 07.04.2004 07:36


All times are GMT +2. The time now is 06:13.

Powered by vBulletin® Version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.1.0
A vBSkinworks Design
© Copyright 2004-2008 by Arthur Konze Webdesign.