NAVIGATION
This shows you the differences between two versions of the page.
|
deutsch:module:shop:paypal [2011/12/20 21:10] Marcus Obst fix the SQL statements |
deutsch:module:shop:paypal [2018/06/03 18:09] (current) |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Shop mit PayPal-Anbindung ====== | + | ====== Shop mit PayPal-Anbindung (alte Release) ====== |
| FIXME translate | FIXME translate | ||
| Line 14: | Line 14: | ||
| \\ | \\ | ||
| **Autor:** Robert/ q23.media \\ | **Autor:** Robert/ q23.media \\ | ||
| - | **CMS version:** = ab Shop \\ | + | **CMS version:** = < r421 \\ |
| Verzeichnis: /include/inc_module/mod_shop_paypal/\\ | Verzeichnis: /include/inc_module/mod_shop_paypal/\\ | ||
| Line 167: | Line 167: | ||
| </code> | </code> | ||
| - | === 5. in frontend.render.php === | + | === 5. in front.order_submit.inc.php === |
| Unter der stelle | Unter der stelle | ||
| <code> | <code> | ||
| Line 200: | Line 200: | ||
| wieder schließen. \\ | wieder schließen. \\ | ||
| \\ | \\ | ||
| - | + | === 6. shop.func.php === | |
| - | === 6. frontend.render.php === | + | |
| Suche die Funktion | Suche die Funktion | ||
| <code> | <code> | ||
| Line 269: | Line 268: | ||
| - | $q_result = _dbQuery("SELECT * FROM ".DB_PREPEND."phpwcms_shop_orders WHERE order_number='".$order_num."' LIMIT 1"); | + | $q_result = _dbQuery("SELECT * FROM ".DB_PREPEND."phpwcms_shop_orders WHERE order_number=".$order_num." LIMIT 1"); |
| if(isset($q_result[0])){ | if(isset($q_result[0])){ | ||
| Line 352: | Line 351: | ||
| // test the txn_id; if txn_id is used and it's not a chargeback then it's invalid | // test the txn_id; if txn_id is used and it's not a chargeback then it's invalid | ||
| - | $txn_id_is_used = _dbCount("SELECT * FROM ".DB_PREPEND."phpwcms_shop_transactions WHERE txn_id='".$trans['txn_id']."'"); | + | $txn_id_is_used = _dbCount("Select * from".DB_PREPEND."phpwcms_shop_transactions where txn_id=".$trans['txn_id']); |
| if( $txn_id_is_used && !isset($trans['reason_code']) && !( empty($trans['txn_type']) && ($trans['reason_code'] === "chargeback")) ){ | if( $txn_id_is_used && !isset($trans['reason_code']) && !( empty($trans['txn_type']) && ($trans['reason_code'] === "chargeback")) ){ | ||
| Line 428: | Line 427: | ||
| - | _dbInsertOrUpdate( DB_PREPEND."phpwcms_shop_transactions", $data, "txn_id = '".$trans['txn_id']."'", ''); | + | _dbInsertOrUpdate( DB_PREPEND."phpwcms_shop_transactions", $data, "where `txn_id` = '".$trans['txn_id']."'", ''); |
| Line 441: | Line 440: | ||
| </code> | </code> | ||
| - | |||
| === 7. processing.preferences.inc.php === | === 7. processing.preferences.inc.php === | ||
| Ersetzungen wie folgt. Nach | Ersetzungen wie folgt. Nach | ||
| Line 514: | Line 512: | ||
| \\ | \\ | ||
| \\ | \\ | ||
| - | ==== #4: Zwischenzusammenfassung ==== | + | ==== #4: Zusammenfassung ==== |
| - | Ab jetzt müßte \\ | + | Jetzt müßte \\ |
| - | a. die Zahlart PayPal Auswahl im Shop verfügbar sein \\ | + | a. die Zahlart PayPal Auswahl im Shop verfügbar sein |
| - | b. eine Weiterleitung zu PayPal geschehen (derzeit ist noch die Sandbox Testumgebung aktiv) \\ | + | b. eine Weiterleitung zu PayPal geschehen (derzeit ist noch die Sandbox Testumgebung aktiv) |
| - | c. der Shop innerhalb seiner normalen Parameter funktionieren. \\ | + | 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 eine der oben aufgeführten Punkte nicht zutreffen gibt es ein Problem. Kontrollier bitte noch einmal ganz genau die Punkt eins bis drei. Andernfalls: Happy PayPal'ing!!! |
| \\ | \\ | ||
| \\ | \\ | ||
| - | 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: | ||
| - | <code> | ||
| - | $phpwcms['site_domain'] = 'domain.de'; // ohne www oder subdomain | ||
| - | $phpwcms['machine_alias'] = 'alias'; // www oder subdomain | ||
| - | </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 | ||
| - | <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> | ||