PayPal Update v1.0.1 Erstellt am 14.12.2011 von Michael Schwiedop, Gambio GmbH Für Shopversionen GX 1 mit Service Pack 1.0.14e HINWEIS: Vor der Installation dieses PayPal Updates, installieren Sie bitte das vorherige PayPal Update v1.0.0, welches Sie im Gambio-Kundenportal unter Downloads Gambio GX Zahlungsmodule herunterladen können. Datensicherung: Zunächst führen Sie bitte eine komplette Datensicherung durch. Dazu gehört sowohl die Sicherung aller Dateien und Ordner des Shops, als auch die Sicherung der Shopdatenbank. Für den Fall, dass nach der Installation der Shop nicht wie gewünscht funktioniert, können Sie einfach die Datensicherung wieder einspielen. Wird keine Datensicherung durchgeführt, gehen alte Daten möglicherweise verloren und können nicht rekonstruiert werden. Datenbankänderungen: Kopieren Sie die "paypal_db_updater.php" in das Stammverzeichnis Ihres Shops. Rufen Sie anschließend die Datei über den Browser auf (http://adresse-zum-shop/paypal_db_updater.php). Wird eine Erfolgsmeldung ausgegeben, wurden die Datenbankänderungen durchgeführt. Löschen Sie nun die Datei "paypal_db_updater.php" wieder von Ihrem Server. Durchgeführte Änderungen Feedback für den Kunden von PayPal oder dem Shop bei Problemen im Bestellvorgang verbessert Neukunden die mit PayPal-Express zahlen, bekommen nun automatisch eine Kundennummer curl Alternative bei der IPN Benachrichtigung wird verwendet wenn nötig Veraltete Parameter aktualisiert PayPal Warenkorb erweitert E-Mail für ungültige PayPal-Sofortige Zahlungsbestätigung überarbeitet Neues PayPal-Logo verwendet Rote Fehlermeldung bei Abbruch der Bestellung bei PayPal- Express entfernt Im PayPal-Express Checkout muss die Versandart im gambio- Template nicht mehr zwingend per Klick auf den Radio-Button ausgewählt werden Mindestbestellwert wird nun auch bei PayPal-Express berücksichtigt
1. Ersetzte Dateien: Kopieren Sie die folgenden Dateien mit einem FTP Client (z.b. FileZilla) in die entsprechenden Ordner des Shops und ersetzen Sie so die vorhandenen Zieldateien. includes/classes/paypal_checkout.php includes/modules/payment/paypal.php includes/modules/payment/paypalexpress.php 2. Angepasste Dateien: Führen Sie diese Änderungen in einem einfachen Text-Editor Ihrer Wahl, z.b. Editor oder Notepad unter Windows, durch. Wenn Sie an diesen Dateien keine individuellen Änderungen vorgenommen haben, können Sie die Dateien auch ersetzen. inc/xtc_redirect.inc.php lang/english/admin/gm_english.php lang/english/english.php lang/german/admin/gm_german.php lang/german/german.php templates/gambio/boxes/box_paypal.html paypal_checkout.php shopping_cart.php HINWEIS: Sollten Sie bei den folgenden Schritten Probleme damit haben, den Quelltext aus dem PDF Dokument in Ihre Dateien zu kopieren, benutzen Sie bitte die Datei Quelltext.txt als Quelle für die Änderungen!
inc/xtc_redirect.inc.php Folgendes (ca. Zeile 44): header('location: '. eregi_replace("[\r\n]+(.*)$", "", $url)); header('location: '. preg_replace("/[\r\n]+/i", "", $url)); lang/english/english.php Folgendes (ca. Zeile 522): define('gm_paypal_session_error', 'Your session has expired, please try to place your order again.'); define('gm_paypal_error_10445', 'This transaction cannot be processed at this time. Please try again later.'); define('gm_paypal_error_10729', 'There\'s an error with this transaction. Please enter your state in the shipping address.'); define('gm_paypal_error_10736', 'A match of the Shipping Address City, State, and Postal Code failed.'); define('gm_paypal_session_error', 'Your session has expired, please try to place your order again.'); define('gm_paypal_unallowed_country_error', 'The country of your address selected on the PayPal web site is not allowed in this store.'); define('gm_paypal_error_10422', 'You must return to the PayPal website and select a different payment method'); define('gm_paypal_error_10445', 'This transaction cannot be processed at this time. Please try again later.'); define('gm_paypal_error_10525', 'This transaction cannot be processed. The amount to be charged is zero. Please contact the store owner.'); define('gm_paypal_error_10729', 'There\'s an error with this transaction. Please enter your state in the shipping address.'); define('gm_paypal_error_10736', 'A match of the Shipping Address City, State, and Postal Code failed.'); define('paypal_error','paypal abort'); lang/english/admin/gm_english.php nach (ca. Zeile 24): define('status_errorcode_10412', 'Payment has already been made for this Invoice.<br />Notes:<br />Please correct your number range. PayPal identified the payments on the basis of order id.<br />Please take contact with the customer on.'); define('status_errorcode_10422', 'Customer must go to the PayPal-Website and choose new funding sources.<br /><br />Note: Please take contact with the customer on.'); nach (ca. Zeile 37): define('status_errorcode_10610', 'Amount specified exceeds allowable limit.'); define('status_errorcode_13113', 'The Buyer cannot pay with PayPal for this Transaction.<br /><br />Note: Please take contact with the customer on.');
lang/german/admin/gm_german.php Folgendes (ca. Zeile 23): define('status_errorcode_10011', 'Die PayPal Zahlung wurde nicht abgeschlossen.<br />Hinweis: Bitte setzen Sie sich mit dem Kunden in Verbindung.'); define('status_errorcode_10011', 'Die PayPal Zahlung wurde nicht abgeschlossen.<br />Möglicherweise hat der Kunde die Zahlung abgebrochen.<br />Hinweis: Bitte setzen Sie sich mit dem Kunden in Verbindung.'); nach (ca. Zeile 26): define('status_errorcode_10412', 'Eine andere Zahlung mit diese Bestellnummer wurde bereits durchgeführt, weshalb PayPal die Zahlung abgelehnt hat.<br /><br /><br />Hinweise:<br /><br />Bitte korrigieren Sie Ihren Nummernkreis unter "Konfiguration->Nummernkreise->Nächste Bestellnummer", da PayPal die Zahlungen anhand der Bestellnummer identifiziert.<br /><br />Bitte setzen Sie sich mit dem Kunden in Verbindung.'); define('status_errorcode_10422', 'Die Zahlung wurde nicht durchgeführt. Der Käufer muss zur PayPal-Website zurückkehren, eine andere Zahlungsmethode auswählen und eine neue Bestellung ausführen.<br /><br />Hinweis:<br />Bitte setzen Sie sich mit dem Kunden in Verbindung.'); nach (ca. Zeile 39): define('status_errorcode_10610', 'Der angeforderte Betrag stimmt nicht mit dem reserviertem Betrag überein. Bitte überprüfen Sie Ihre Eingabe.'); define('status_errorcode_13113', 'PayPal meldet das der Kunde diese Transaktion nicht mit PayPal zahlen kann.<br /><br />Hinweis: Bitte setzen Sie sich mit dem Kunden in Verbindung.');
lang/german/german.php Folgendes (ca. Zeile 464): define('gm_paypal_session_error', 'Ihre Session ist abgelaufen, bitte führen Sie Ihre Bestellung erneut durch.'); // BOF GM_MOD define('gm_paypal_error_10445', 'Diese Transaktion kann zur Zeit nicht bearbeitet werden. Bitte versuchen Sie es später noch einmal.'); define('gm_paypal_error_10729', 'Bitte überprüfen Sie die Lieferadresse. Der Bundesstaat in der Lieferadresse fehlt.'); define('gm_paypal_error_10736', 'Bitte überprüfen Sie die Lieferadresse. Stadt, Bundesland und Postleitzahl stimmen nicht überein.'); define('gm_paypal_session_error', 'Ihre Session ist abgelaufen, bitte führen Sie Ihre Bestellung erneut durch.'); define('gm_paypal_unallowed_country_error', 'Das Land der auf der PayPal-Seite gewählten Adresse ist in diesem Shop nicht erlaubt.'); // BOF GM_MOD define('gm_paypal_error_10422', 'Sie müssen zur PayPal-Website zurückkehren und eine andere Zahlungsmethode auswählen.'); define('gm_paypal_error_10445', 'Diese Transaktion kann zur Zeit nicht bearbeitet werden. Bitte versuchen Sie es später noch einmal.'); define('gm_paypal_error_10525', 'Diese Transaktion kann nicht verarbeitet werden, da der zu zahlende Betrag null ist. Bitte wenden Sie sich an den Shopbetreiber.'); define('gm_paypal_error_10729', 'Bitte überprüfen Sie die Lieferadresse. Der Bundesstaat in der Lieferadresse fehlt.'); define('gm_paypal_error_10736', 'Bitte überprüfen Sie die Lieferadresse. Stadt, Bundesland und Postleitzahl stimmen nicht überein.'); // PayPal Meldungen sind Umlaute erlaubt define('paypal_error','paypal Abbruch'); templates/gambio/boxes/box_paypal.html Folgendes (ca. Zeile 13): <a href="#" onclick="javascript:window.open('https://www.paypal.com/de/cgi-bin/webscr? cmd=xpt/marketing/popup/olcwhatispaypal-outside','olcwhatispaypal','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=400, height=500'); return false;"><img src="https://www.paypal.com/de_de/de/i/logo/lockbox_150x47.gif" border="0" alt="paypal-bezahlmethoden-logo" /></a> <a href="#" onclick="javascript:window.open('https://www.paypal.com/de/cgi-bin/webscr? cmd=xpt/marketing/popup/olcwhatispaypal-outside','olcwhatispaypal','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=400, height=500'); return false;"><img src="https://www.paypal-deutschland.de/external/logocenter-update/logo-paypal- 150x41.gif" border="0" alt="paypal-bezahlmethoden-logo" /></a>
paypal_checkout.php nach (ca. Zeile 167): if ($check_address['total']!= '1') $_SESSION['billto'] = $_SESSION['customer_default_address_id']; if (isset ($_SESSION['payment'])) unset ($_SESSION['payment']); $t_country_error = ''; // check if country of selected shipping address is not allowed $t_country_check_sql = "SELECT a.address_book_id FROM ". TABLE_ADDRESS_BOOK. " a, ". TABLE_COUNTRIES. " c WHERE a.address_book_id = '". (int) $_SESSION['sendto']. "' AND a.entry_country_id = c.countries_id AND c.status = 1"; $t_country_check_result = xtc_db_query($t_country_check_sql); if(xtc_db_num_rows($t_country_check_result) == 0) $t_country_error.= ERROR_INVALID_SHIPPING_COUNTRY. ' '; // check if country of selected payment address is not allowed $t_country_check_sql = "SELECT a.address_book_id FROM ". TABLE_ADDRESS_BOOK. " a, ". TABLE_COUNTRIES. " c WHERE a.address_book_id = '". (int) $_SESSION['billto']. "' AND a.entry_country_id = c.countries_id AND c.status = 1"; $t_country_check_result = xtc_db_query($t_country_check_sql); if(xtc_db_num_rows($t_country_check_result) == 0) $t_country_error.= ERROR_INVALID_PAYMENT_COUNTRY; if($t_country_error!= '' && PAYPAL_EXPRESS_ADDRESS_CHANGE == 'true') $smarty->assign('error', $t_country_error); elseif($t_country_error!= '') xtc_redirect(xtc_href_link(filename_shopping_cart, 'gm_paypal_error=4'));
nach (ca. Zeile 325): default : $pass = false; $t_shipping_free_over = (double)module_order_total_shipping_free_shipping_over; if($_session['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status'] ['customers_status_add_tax_ot'] == 0 && (int)module_order_total_shipping_tax_class > 0) $t_shipping_free_over = $t_shipping_free_over / (1 + $xtprice- >TAX[MODULE_ORDER_TOTAL_SHIPPING_TAX_CLASS] / 100); Folgendes (ca. Zeile 339): if (($pass == true) && ($order->info['total'] - $order- >info['shipping_cost'] >= $xtprice- >xtcformat(module_order_total_shipping_free_shipping_over, false, 0, true))) if (($pass == true) && ($order->info['total'] - $order- >info['shipping_cost'] >= $xtprice->xtcformat($t_shipping_free_over, false, 0, true))) Folgendes (ca. Zeile 400): $smarty->assign('form_shipping_action', xtc_draw_form('checkout_shipping', xtc_href_link(filename_paypal_checkout, '', 'SSL')).xtc_draw_hidden_field('action', 'process')); $smarty->assign('form_shipping_action', xtc_draw_form('checkout_shipping', xtc_href_link(filename_paypal_checkout, '', 'SSL'), 'post', 'name="paypal_shipping"').xtc_draw_hidden_field('action', 'process')); nach (ca. Zeile 426): $module_smarty = new Smarty; $module_smarty->assign('paypal_express', 1);
shopping_cart.php Folgendes (ca. Zeile 50): // BOF GM_MOD // Paypal Error Messages: if($_get['gm_paypal_error'] == '2') switch($_session['reshash']['l_errorcode0']) case '10729': $t_paypal_error = GM_PAYPAL_ERROR_10729; case '10736': case '10730': $t_paypal_error = GM_PAYPAL_ERROR_10736; case '10445': $t_paypal_error = GM_PAYPAL_ERROR_10445; default: $t_paypal_error = GM_PAYPAL_ERROR; $smarty->assign('paypal_error', $t_paypal_error); if(!empty($_session['tmp_oid'])) require_once(dir_ws_classes.'paypal_checkout.php'); $o_paypal = new paypal_checkout(); $o_paypal->logging_status($_session['tmp_oid']); elseif($_get['gm_paypal_error'] == '3') $t_paypal_error = GM_PAYPAL_SESSION_ERROR; $smarty->assign('paypal_error', $t_paypal_error); // EOF GM_MOD // BOF GM_MOD // Paypal Error Messages: if($_get['gm_paypal_error'] == '2') $p_errorcode = $_SESSION['reshash']['L_ERRORCODE0']; if(defined('gm_paypal_error_'.$p_errorcode)) $t_paypal_error = constant('gm_paypal_error_'.$p_errorcode); else $t_paypal_error = GM_PAYPAL_ERROR; $smarty->assign('paypal_error', $t_paypal_error); if(!empty($_session['tmp_oid'])) require_once(dir_ws_classes.'paypal_checkout.php'); $o_paypal = new paypal_checkout(); $o_paypal->logging_status($_session['tmp_oid']); elseif($_get['gm_paypal_error'] == '3') $t_paypal_error = GM_PAYPAL_SESSION_ERROR; $smarty->assign('paypal_error', $t_paypal_error); elseif($_get['gm_paypal_error'] == '4') $t_paypal_error = GM_PAYPAL_UNALLOWED_COUNTRY_ERROR; $this->set_content_data('paypal_error', $t_paypal_error); // EOF GM_MOD