NAVIGATION
This shows you the differences between two versions of the page.
deutsch:module:shop:paypal-neu [2012/02/26 13:56] Robert |
deutsch:module:shop:paypal-neu [2018/06/03 18:09] (current) |
||
---|---|---|---|
Line 17: | Line 17: | ||
==== #1: DB-Update ==== | ==== #1: DB-Update ==== | ||
- | Es muß eine neuen Zwischenspeicher-Tabelle angelegt werden. | + | Es muß eine neue Zwischenspeicher-Tabelle angelegt werden. |
<code php|h SQL-Anweisung in phpmyadmin ausführen:|h> | <code php|h SQL-Anweisung in phpmyadmin ausführen:|h> | ||
Line 51: | Line 51: | ||
) ENGINE=MyISAM AUTO_INCREMENT=14 ; | ) ENGINE=MyISAM AUTO_INCREMENT=14 ; | ||
</code> | </code> | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
==== #2: Einspielen der notwendige Dateien ==== | ==== #2: Einspielen der notwendige Dateien ==== | ||
- front_order_process.inc.php \\ | - front_order_process.inc.php \\ | ||
- paypal.class.php \\ | - paypal.class.php \\ | ||
- | hier herunterladen | + | hier herunterladen \\ |
- | {{:deutsch:module:shop:phpwcms_paypal.zip|}} | + | {{:deutsch:module:shop:phpwcms_r421andup_paypal.zip|}} |
- | und auf den Server/ in include/inc_module/mod_shop_paypal/inc kopieren. | + | und auf den Server in include/inc_module/mod_shop_paypal/inc kopieren. |
\\ | \\ | ||
- | ==== #3: Modifizieren des bestehenden Orderprocess ==== | ||
\\ | \\ | ||
\\ | \\ | ||
+ | \\ | ||
+ | |||
+ | ==== #3: Modifizieren des bestehenden Orderprocess ==== | ||
=== 1. Template File === | === 1. Template File === | ||
Line 123: | Line 129: | ||
- | === 2.1: frontend.render.php === | + | === 2: frontend.render.php === |
Nach | Nach | ||
<code> | <code> | ||
Line 173: | Line 179: | ||
$_SESSION['shopping_cart']['order_number'] = $order_num; | $_SESSION['shopping_cart']['order_number'] = $order_num; | ||
- | switch( $_SESSION['shopping_cart']['payby'] ){ | + | switch( $_SESSION[CART_KEY]['payby'] ){ |
- | + | ||
case 'paypal': | case 'paypal': | ||
headerRedirect(PHPWCMS_URL.$_tmpl['config']['cart_url']."&shop_order_process"); | headerRedirect(PHPWCMS_URL.$_tmpl['config']['cart_url']."&shop_order_process"); | ||
Line 191: | Line 197: | ||
} //endswitch | } //endswitch | ||
</code> | </code> | ||
- | wieder schließen. \\ | + | wieder schließen. |
\\ | \\ | ||
- | + | \\ | |
- | + | \\ | |
- | + | \\ | |
- | + | Suche | |
- | + | ||
- | === 6. frontend.render.php === | + | |
- | Suche die Funktion | + | |
<code> | <code> | ||
- | get_payment_options() | + | $supported = array('prepay' => 0, 'pod' => 0, 'onbill' => 0); |
</code> | </code> | ||
- | suchen und | + | und überschreiben mit |
<code php|h $supported mit:|h> | <code php|h $supported mit:|h> | ||
- | $supported = array('paypal' => 0, 'prepay' => 0, 'pod' => 0, 'onbill' => 0); | + | $supported = array('paypal' => 0, 'prepay' => 0, 'pod' => 0, 'onbill' => 0); |
</code> | </code> | ||
- | überschreiben. \\ | + | überschreiben. |
- | \\ | + | \\ |
- | Anschließend | + | \\ |
- | <code php|h das ans ende vor dem schließenden PHP-Tag kopieren.:|h> | + | \\ |
+ | \\ | ||
+ | Das ans ende vor dem schließenden PHP-Tag kopieren: | ||
+ | <code php|h |h> | ||
function validateReferrer( $yoursite, //Your site url without 'http://' or subdomain | function validateReferrer( $yoursite, //Your site url without 'http://' or subdomain | ||
$domain_name //Type your domain with www. this time | $domain_name //Type your domain with www. this time | ||
Line 436: | Line 442: | ||
} | } | ||
- | </code> | ||
- | |||
- | |||
- | === 7. processing.preferences.inc.php === | ||
- | Ersetzungen wie folgt. Nach | ||
- | <code> | ||
- | $plugin['data']['shop_pref_email_from'] = clean_slweg($_POST['pref_email_from']); | ||
- | </code> | ||
- | ggf. das einfügen | ||
- | <code> | ||
- | $plugin['data']['shop_pref_email_paypal'] = clean_slweg($_POST['pref_email_paypal']); | ||
</code> | </code> | ||
\\ | \\ | ||
- | nach | ||
- | <code> | ||
- | if(! is_valid_email($plugin['data']['shop_pref_email_from']) ) $plugin['data']['shop_pref_email_from'] = ''; | ||
- | </code> | ||
- | ggf. das einfügen: | ||
- | <code> | ||
- | if(! is_valid_email($plugin['data']['shop_pref_email_paypal']) ) $plugin['data']['shop_pref_email_paypal'] = ''; | ||
- | </code> | ||
\\ | \\ | ||
- | vor | ||
- | <code> | ||
- | 'prepay' => empty($_POST['pref_payment_prepay']) ? 0 : 1, | ||
- | </code> | ||
- | ggf. das einfügen | ||
- | <code> | ||
- | 'paypal' => empty($_POST['pref_payment_paypal']) ? 0 : 1, | ||
- | </code> | ||
- | \\ | ||
- | nach | ||
- | <code> | ||
- | _setConfig('shop_pref_email_from', $plugin['data']['shop_pref_email_from'], 'module_shop'); | ||
- | </code> | ||
- | ggf. das einfügen | ||
- | <code> | ||
- | _setConfig('shop_pref_email_paypal', $plugin['data']['shop_pref_email_paypal'], 'module_shop'); | ||
- | </code> | ||
\\ | \\ | ||
- | nach | ||
- | <code> | ||
- | 'shop_pref_email_from' => '', | ||
- | </code> | ||
- | ggf. das einfügen | ||
- | <code> | ||
- | 'shop_pref_email_paypal' => '', | ||
- | </code> | ||
\\ | \\ | ||
- | nach | + | |
- | <code> | + | ==== #4: Zusammenfassung ==== |
- | 'prepay'=> 1, | + | Jetzt müßte \\ |
- | </code> | + | a. die Zahlart PayPal Auswahl im Shop verfügbar sein |
- | ggf. das einfügen | + | b. der Shop innerhalb seiner normalen Parameter funktionieren |
- | <code> | + | c. eine Weiterleitung geschehen (höchstwahrscheinlich fehlerhaft!) |
- | 'paypal' => 1, | + | |
- | </code> | + | |
\\ | \\ | ||
- | \\ | + | Sollte eine der oben aufgeführten Punkte nicht zutreffen gibt es ein Problem. Kontrollier bitte noch einmal ganz genau die Punkt eins bis drei. |
- | === 8. Language-Files === | + | |
- | Ggf. die language files unter /include/inc_module/mod_shop/lang mit paypal anreichern. \\ | + | |
- | Das sollte eigentlich bei phpwcms > 2007 bereits vorhanden sein. | + | |
\\ | \\ | ||
- | Bspw. für deutsch nach | ||
- | <code> | ||
- | $BLM['shopprod_payment_method'] = 'Zahlungsmethoden'; | ||
- | </code> | ||
- | das einfügen | ||
- | <code> | ||
- | $BLM['shopprod_payby_paypal'] = 'PayPal'; | ||
- | $BLM['shopprod_email_paypal'] = 'PayPal E-Mail'; | ||
- | </code> | ||
\\ | \\ | ||
\\ | \\ | ||
- | \\ | + | ==== #5: config.inc.php ==== |
- | ==== #4: Zwischenzusammenfassung ==== | + | Mit großer Wahrscheinlichkeit ist die Weiterleitungen beim Abschliessen des Bestellprozesses fehlerhaft. Die Parameter $phpwcms['machine_alias'] und $phpwcms['site_domain'] existieren Standardmäßig nicht und sollten in die config.inc.php nachgetragen werden. |
- | Ab jetzt müßte \\ | + | |
- | a. die Zahlart PayPal Auswahl im Shop verfügbar sein \\ | + | |
- | b. eine Weiterleitung zu PayPal geschehen (derzeit ist noch die Sandbox Testumgebung aktiv) \\ | + | |
- | c. der Shop innerhalb seiner normalen Parameter funktionieren. \\ | + | |
- | \\ | + | |
- | Sollte eine der oben aufgeführten Punkte nicht zutreffen gibt es ein Problem. Kontrollier bitte noch einmal ganz genau die Punkt eins bis drei. | + | |
- | \\ | + | |
- | \\ | + | |
- | Sollte es zu eigenartigen Weiterleitungen beim ABschliessen des Bestellprozesses kommen, dann trifft dies zu: | + | |
- | Die zur Verfügung gestellte Datei front.order_process.inc.php enthält einen Abschitt, zum Überprüfen des Referrer. | + | |
- | <code> | + | |
- | switch ($_GET['action']) { | + | |
- | + | ||
- | case 'process': // Process and order... | + | |
- | validateReferrer( $phpwcms['site_domain'], | + | |
- | $phpwcms['machine_alias'].'.'.$phpwcms['site_domain'] | + | |
- | );//or bail... | + | |
- | </code> | + | |
- | Diese Parameter $phpwcms['machine_alias'] und $phpwcms['site_domain'] existieren Standardmäßig nicht und sollten ggf. in die config.inc.php nachgetragen werden. | + | |
Konkret wäre das: | Konkret wäre das: | ||
<code> | <code> | ||
Line 536: | Line 465: | ||
$phpwcms['machine_alias'] = 'alias'; // www oder subdomain | $phpwcms['machine_alias'] = 'alias'; // www oder subdomain | ||
</code> | </code> | ||
- | |||
- | Bitte ggf auch die frontend.render.php => function validateReferrer() einsehen und verstehen was da passiert! | ||
- | |||
- | ==== #5.1: Übersetzung ==== | ||
- | Wird ein Kunde zu Paypal weiter geleitet erscheint eine Meldung. Diese ist derzeit in englischer Sprache. Unter paypal.class.php kann dies verändert werden. \\ | ||
\\ | \\ | ||
- | Such nach | + | In diesem Zusammenhang auch die frontend.render.php => function validateReferrer() einsehen und verstehen was da passiert! |
- | <code> | + | |
- | // Generate the request header | + | |
- | </code> | + | |
- | und ersetze das darauf folgende | + | |
- | <code php|h beispielhaft mit:|h> | + | |
- | echo "<html>\n"; | + | |
- | echo "<head><title>PayPal Zahlung...</title></head>\n"; | + | |
- | + | ||
- | echo "<body onLoad=\"document.forms['paypal_form'].submit();\">\n"; | + | |
- | + | ||
- | echo "<center><h2>Bitte warten. Sie werden jetzt zu PayPal weiter geleitet.</h2></center>\n"; | + | |
- | echo "<form method=\"post\" name=\"paypal_form\" "; | + | |
- | echo "action=\"".$this->paypal_url."\">\n"; | + | |
- | + | ||
- | foreach ($this->fields as $name => $value) { | + | |
- | echo "<input type=\"hidden\" name=\"$name\" value=\"$value\"/>\n"; | + | |
- | } | + | |
- | echo "<center><br/><br/>Sollten Sie nicht innerhalb der nächsten Sekunden weitergeleitet werden "; | + | |
- | echo "klicken Sie bitte hier...<br/><br/>\n"; | + | |
- | echo "<input type=\"submit\" value=\"Zu PayPal\"></center>\n"; | + | |
- | + | ||
- | echo "</form>\n"; | + | |
- | echo "</body></html>\n"; | + | |
- | </code> | + | |
- | \\ | + | |
- | \\ | + | |
- | ==== #5.2: Übersetzung ==== | + | |
- | Die Success/ Error Page muß ebenso angepasst werden. Diese -wie zuvor angelegt/ eingefügt- im Template ganz am Ende zu finden. \\ | + | |
- | \\ | + | |
- | <code php|h beispielhafte deutsche übersetzung:|h> | + | |
- | <!--PAYPAL_ORDER_DONE_START//--> | + | |
- | <h2>Bestellung #{ORDER} erfolgreich platziert</h2> | + | |
- | <p>Hallo <strong>{INV_FIRSTNAME} {INV_NAME}</strong>,<br /> | + | |
- | Vielen Dank für deine Bestellung. Du erhälst eine Benachrichtigung an <strong>{EMAIL}</strong> sobald uns Deine Bezahlung von PayPal bestätigt wurde.</p> | + | |
- | <p>Deine Bestellnummer lautet: <strong>{ORDER}</strong>. Bitte verwende die Nummer bei Rückfragen.</p> | + | |
- | <!--PAYPAL_ORDER_DONE_END//--> | + | |
- | + | ||
- | <!--PAYPAL_ORDER_DEBUG_START//--> | + | |
- | <h2>Paypal Fehler</h2> | + | |
- | <p><strong>{DEBUG_MSG1} </strong></p> | + | |
- | <p><strong>{DEBUG_MSG2} </strong></p> | + | |
- | <!--PAYPAL_ORDER_DEBUG_END//--> | + | |
- | </code> | + | |
- | \\ | + | |
- | \\ | + | |
- | \\ | + | |
- | ==== #6: Beheben des Steuerbug ==== | + | |
- | Zwar gibt es unter Shop > Produkte die Möglichkeit zu bestimmen ob ein Preis in brutto oder netto vorliegt. Die Erweiterung wertet dies jedoch nicht aus sondern geht standardmäßig von einem Netto-Preis aus. Das bedeutet PayPal rechnet noch einmal die Mehrwertsteuer oben drauf. Diese Erweiterung beseitigt das unerwünschte Verhalten. \\ | + | |
- | \\ | + | |
- | **ACHTUNG:** Hier wäre eine Abfrage wünschenswert die anhand der Erfassung im Backend entscheidet ob Artikel mit oder ohne MwSt. an Paypal übergeben werden muß. Der folgende Core-Hack erfordert **alle** Produkte des Shops als Brutto. \\ | + | |
- | \\ | + | |
- | Vorgehensweise: Quick&Dirty wird die Tax-Zeile aus der Übergabe an PayPal entfernt. \\ | + | |
- | \\ | + | |
- | <code php|h Suche in paypal.class.php: |h> | + | |
- | foreach ($this->fields as $name => $value) { | + | |
- | echo "<input type=\"hidden\" name=\"$name\" value=\"$value\"/>\n"; | + | |
- | } | + | |
- | </code> | + | |
- | <code php|h Ersetze die Funktion mit: |h> | + | |
- | foreach ($this->fields as $name => $value) { | + | |
- | //remove tax from data-output + q23.media 23102011 | + | |
- | if (substr($name, 0, 3) != 'tax') { | + | |
- | echo "<input type=\"hidden\" name=\"$name\" value=\"$value\"/>\n"; | + | |
- | } | + | |
- | } | + | |
- | </code> | + |