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> | + | |