Description de mon panier oscommerce dans paypal |
Bienvenue invité ( Connexion | Inscription )
Description de mon panier oscommerce dans paypal |
8 Feb 2010, 18:54
Message
#1
|
|
Ceinture blanche OSC Groupe : Membres Messages : 8 Inscrit : 19-May 05 Membre no 5917 |
Bonjour
j'ai MS2 oscommerce et j'aimerai que la description de mon panier soit enregistré chez paypal je m'explique quand un client choisit paypal comme paiement et qu'il arrive sur la page paypal, il a en description le nom de ma boutique mais moi j'aimerai qu'il ait putot le descriptif de son panier à la place. Si on peut m'aider et me dire quel fichier il faut modifier et quoi mettre comme code et la ligne d'emplacement Merci pour votre aide P.G |
|
8 Feb 2010, 22:04
Message
#2
|
|
Ceinture blanche OSC Groupe : Membres Messages : 8 Inscrit : 19-May 05 Membre no 5917 |
voila j'ai eu le temps de fouiner et j'ai trouvé ça:
Pour éviter de mettre la contrib paypal_ipn vous gardez votre module paypal par default dans includes/modules/payment/paypal.php comme ça si un client ne retourne pas dans votre boutique vous avez trace de toute la commande dans l'email paypal que vous recevez. vous effacez le contenu de votre fichier et remplacez par ceci (ça marche nickel) A++ Code <?php
class paypal { var $code, $title, $description, $enabled; // class constructor function paypal() { global $order; $this->code = 'paypal'; $this->title = MODULE_PAYMENT_PAYPAL_TEXT_TITLE; $this->description = MODULE_PAYMENT_PAYPAL_TEXT_DESCRIPTION; $this->sort_order = MODULE_PAYMENT_PAYPAL_SORT_ORDER; $this->enabled = ((MODULE_PAYMENT_PAYPAL_STATUS == 'True') ? true : false); if ((int)MODULE_PAYMENT_PAYPAL_ORDER_STATUS_ID > 0) { $this->order_status = MODULE_PAYMENT_PAYPAL_ORDER_STATUS_ID; } if (is_object($order)) $this->update_status(); $this->form_action_url = 'https://secure.paypal.com/cgi-bin/webscr'; } // class methods function update_status() { global $order; if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_PAYPAL_ZONE > 0) ) { $check_flag = false; $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_PAYPAL_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id"); while ($check = tep_db_fetch_array($check_query)) { if ($check['zone_id'] < 1) { $check_flag = true; break; } elseif ($check['zone_id'] == $order->billing['zone_id']) { $check_flag = true; break; } } if ($check_flag == false) { $this->enabled = false; } } } function javascript_validation() { return false; } function selection() { return array('id' => $this->code, 'module' => $this->title); } function pre_confirmation_check() { return false; } function confirmation() { return false; } function process_button() { global $order, $currencies, $currency; if (MODULE_PAYMENT_PAYPAL_CURRENCY == 'Selected Currency') { $my_currency = $currency; } else { $my_currency = substr(MODULE_PAYMENT_PAYPAL_CURRENCY, 5); } if (!in_array($my_currency, array('CAD', 'EUR', 'GBP', 'JPY', 'USD'))) { $my_currency = 'EUR'; } $xx = ''; for ($i=0; $i<sizeof($order->products); $i++) { $xx .= $order->products[$i]['qty'] . 'x ' . ($order->products[$i]['name']) . ' - '; } $process_button_string = tep_draw_hidden_field('cmd', '_ext-enter') . tep_draw_hidden_field('redirect_cmd', '_xclick') . tep_draw_hidden_field('business', MODULE_PAYMENT_PAYPAL_ID) . tep_draw_hidden_field('item_name', ' ' . $xx) . tep_draw_hidden_field('amount', number_format(($order->info['total'] - $order->info['shipping_cost']) * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency))) . tep_draw_hidden_field('shipping', number_format($order->info['shipping_cost'] * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency))) . tep_draw_hidden_field('currency_code', $my_currency) . tep_draw_hidden_field('first_name', $order->billing['firstname']) . tep_draw_hidden_field('last_name', $order->billing['lastname']) . tep_draw_hidden_field('address1', $order->billing['street_address']) . tep_draw_hidden_field('city', $order->billing['city']) . tep_draw_hidden_field('state', $order->billing['state']) . tep_draw_hidden_field('zip', $order->billing['postcode']) . tep_draw_hidden_field('night_phone_c', $order->customer['telephone']) . tep_draw_hidden_field('email', $order->customer['email_address']) . tep_draw_hidden_field('lc', 'FR') . tep_draw_hidden_field('rm', '2') . tep_draw_hidden_field('notify_url', tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL')) . tep_draw_hidden_field('return', tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL')) . tep_draw_hidden_field('cancel_return', tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL')); return $process_button_string; } function before_process() { return false; } function after_process() { return false; } function output_error() { return false; } function check() { if (!isset($this->_check)) { $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYPAL_STATUS'"); $this->_check = tep_db_num_rows($check_query); } return $this->_check; } function install() { tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable PayPal Module', 'MODULE_PAYMENT_PAYPAL_STATUS', 'True', 'Do you want to accept PayPal payments?', '6', '3', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('E-Mail Address', 'MODULE_PAYMENT_PAYPAL_ID', 'contact@accessoires-quad.com', 'The e-mail address to use for the PayPal service', '6', '4', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Currency', 'MODULE_PAYMENT_PAYPAL_CURRENCY', 'Selected Currency', 'The currency to use for credit card transactions', '6', '6', 'tep_cfg_select_option(array(\'Selected Currency\',\'Only USD\',\'Only CAD\',\'Only EUR\',\'Only GBP\',\'Only JPY\'), ', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_PAYPAL_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_PAYPAL_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_PAYPAL_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())"); } function remove() { tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')"); } function keys() { return array('MODULE_PAYMENT_PAYPAL_STATUS', 'MODULE_PAYMENT_PAYPAL_ID', 'MODULE_PAYMENT_PAYPAL_CURRENCY', 'MODULE_PAYMENT_PAYPAL_ZONE', 'MODULE_PAYMENT_PAYPAL_ORDER_STATUS_ID', 'MODULE_PAYMENT_PAYPAL_SORT_ORDER'); } } ?> Ce message a été modifié par creation - 8 Feb 2010, 22:10. |
|
9 Feb 2010, 14:19
Message
#3
|
|
Ceinture jaune OSC Groupe : Membres Messages : 46 Inscrit : 15-January 08 Lieu : Liège (Belgium) Membre no 20409 |
Bonjour P.G.,
Ta question m'a interpelé car je j'ai failli en poser une aussi malgré toutes mes recherches infructueuses sur le forum, et la tienne ressemble très fort à la mienne, à savoir : "Comment faire pour que le N° de la commande apparaisse à la place du nom de ma boutique, ex: Commande n° XXX, sachant que le XXX doit, bien évidemment, correspondre au n° de la commande en question dans l'admin de mon OSC !" Cela me permettrait, lors de mes vérifications de mon compte PayPal, de retrouver beaucoup plus facilement les correspondances "paiements de commande sur PayPal / commandes dans mon admin OSC". Je suis vraiment trop nul et avec toutes mes contrib installées, je m'y perds facilement ! Je te remercie d'avance pour l'immense aide que tu pourrais m'apporter, toi ou quelqu'un d'autre. Merci pour votre support. Pyram -------------------- oscommerce-2.2ms2-FR | And more contrib...
|
|
22 Jul 2010, 10:48
Message
#4
|
|
Ceinture blanche OSC Groupe : Membres Messages : 17 Inscrit : 7-July 10 Membre no 27777 |
Bonjour,
merci! super ce code, je cherchais comment faire justement. petite précision, si on veut utiliser le sandbox de paypal pour faire des tests, il suffit de changer : Code $this->form_action_url = 'https://secure.paypal.com/cgi-bin/webscr'; en Code $this->form_action_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr'; le complément est d'utiliser la contribution Master Password pour ensuite se connecter avec le compte client, reprendre le panier pour valider la commande avec par exemple un paiement par chèque, ce qui permet de l'enregistrer correctement dans OSC (décompte de stock, historique commandes, etc) |
|
23 Jul 2010, 14:29
Message
#5
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 85 Inscrit : 18-December 02 Lieu : Paris Membre no 675 |
Merci beaucoup pour ce code modifié...
Le détail de la commande est bien apparent. Ceci dit, si quelqu'un a une solution pour : 1) Passer à la ligne pour chaque item de la commande. (Essayé <br> et autres "\n", mais non interprétés) 2) Obtenir un total article qui soit cohérent ( 1x item01 à 2€ - 1x item02 à 3€ ===> 2 articles pour 5€) Encore merci, Thierry -------------------- Thierry
|
|
27 Jul 2010, 09:26
Message
#6
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 85 Inscrit : 18-December 02 Lieu : Paris Membre no 675 |
... / ...
Je continue pour vous faire part des dérives suivantes : Effectivement, ce nouveau code Paypal liste bien les éléments du panier, mais avec un gros bémol... Tous les articles sont groupés sous le même iitem pour Paypal. Ce qui induit forcèment une limite en nombre de caractères possible sous un même item. Dans mon cas, au dessus de 4 articles en commande, c'est tronqué. Il faudrait idéalement trouver la façon dont Paypal gère l'envoi de plusieurs items pour une même commande, afin de pouvoir modifier la boucle destinée à gérer le <form> envoyé. Si vous avez des idées ou des infos, you're welcome ! Merci, Thierry -------------------- Thierry
|
|
3 Aug 2010, 15:40
Message
#7
|
|
Ceinture blanche OSC Groupe : Membres Messages : 17 Inscrit : 7-July 10 Membre no 27777 |
Bonjour,
je viens de faire le test, paypal limite la description à 128 caractères je n'avais pas vraiment songé à ce problème, je pensais que ce ne serait pas tronqué... merci de l'avoir soulevé elthierry! |
|
3 Aug 2010, 23:07
Message
#8
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 85 Inscrit : 18-December 02 Lieu : Paris Membre no 675 |
Bonjour Afiber (... et toute la communauté !)
Je viens de modifier et tester une variante qui permet de créer un item par ligne : (A insérer dans le début de l'envoi des champs hidden (tep_draw_hidden_field() ) tep_draw_hidden_field('redirect_cmd', '_xclick') . tep_draw_hidden_field('business', MODULE_PAYMENT_PAYPAL_ID) . $xx = ''; for ($i=0; $i<sizeof($order->products); $i++) { // Quantité \\ $qt = $order->products[$i]['qty']; // Libellé \\ $lb = $order->products[$i]['name']; // Tarif \\ $px = $order->products[$i]['final_price']; tep_draw_hidden_field('item_name_'.$i,$lb) . tep_draw_hidden_field('quantity_'.$i,$qt) . tep_draw_hidden_field('amount_'.$i,$px) ; } .... Mais c'est pas tout à fait au point Le problème doit résider en fin de chacune des fins de ligne ( . ou ; ) Si qq a une idée géniale pour en finir honorablement ! Merci, Thierry -------------------- Thierry
|
|
4 Aug 2010, 01:07
Message
#9
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 85 Inscrit : 18-December 02 Lieu : Paris Membre no 675 |
... Je continue sur mon élan -->
Bon, après modifications, ce code fonctionne et permet f'afficher un item par ligne. Un peu tiré par les cheveux pour la Tva, mais ça passe... ____________________________________________________________________ $process_button_string = tep_draw_hidden_field('cmd', '_cart'); $process_button_string .= tep_draw_hidden_field('upload', '1') ; for ($i=0; $i<sizeof($order->products); $i++) { // Les items Paypal s'incrémentent à partir de 1 \\ $compt=$i + 1 ; // Quantité \\ $qt = $order->products[$i]['qty']; // Libellé \\ $lb = $order->products[$i]['name']; // Tarif TTC \\ $px = $order->products[$i]['final_price'] + ($order->products[$i]['final_price'] * $order->products[$i]['tax']) /100; // Attention, Obligatoire... Paypal ne supporte pas plus de 2 chiffres après virgule \\ $tarif=round($px, 2); $process_button_string .= tep_draw_hidden_field('item_name_'.$compt,$lb); $process_button_string .= tep_draw_hidden_field('quantity_'.$compt,$qt) ; $process_button_string .= tep_draw_hidden_field('amount_'.$compt,$tarif) ; } $process_button_string .= tep_draw_hidden_field('business', MODULE_PAYMENT_PAYPAL_ID) . tep_draw_hidden_field('amount', number_format(($order->info['total'] - $order->info['shipping_cost']) * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency))) . tep_draw_hidden_field('shipping', number_format($order->info['shipping_cost'] * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency))) . tep_draw_hidden_field('currency_code', $my_currency) . tep_draw_hidden_field('first_name', strtoupper($order->billing['firstname'])) . tep_draw_hidden_field('last_name', strtoupper($order->billing['lastname'])) . tep_draw_hidden_field('address1', strtoupper($order->billing['street_address'])) . tep_draw_hidden_field('city', strtoupper($order->billing['city'])) . tep_draw_hidden_field('state', strtoupper($order->billing['state'])) . tep_draw_hidden_field('zip', $order->billing['postcode']) . tep_draw_hidden_field('night_phone_c', $order->customer['telephone']) . tep_draw_hidden_field('charset', 'utf-8') . tep_draw_hidden_field('email', $order->customer['email_address']) . tep_draw_hidden_field('lc', 'FR') . tep_draw_hidden_field('rm', '2') . tep_draw_hidden_field('notify_url', tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL')) . tep_draw_hidden_field('return', tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL')) . tep_draw_hidden_field('cancel_return', tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL')); return $process_button_string; ________________________________________________________________________________ _ Cela vous donnera un bonne base de départ pour amélioration. Le "Hic", c'est la livraison qui disparait ??? Pourtant, la variable de passage est présente. Il se peut que le "tep_draw_hidden_field('cmd', '_cart');" soit polluant. A voir... Enfin, pour terminer, je reviens sur la RAISON PRINCIPALE de ce post, à savoir le Non-Retour récalcitrant de certains clients qui refusent de revenir sur la boutique une fois le paiement validé, avec l'effet connu de tous (panier orphelin) He bien, il semble qu'il suffit de valider l'option "Préférences de réception de paiements sur le site" dans le menu Préférences de votre compte vendeur Paypal... [ Renvoi Automatique = Oui, bien sûr ! ] Testez cette modif et tenez-moi au courant. Merci, Thierry -------------------- Thierry
|
|
4 Aug 2010, 01:37
Message
#10
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 85 Inscrit : 18-December 02 Lieu : Paris Membre no 675 |
Bon, pour finir...
Le problème de la livraison non transmise est résolu : Remplacez la variable shipping par handling_cart dans le passage d'infos : REMPLACEZ : tep_draw_hidden_field('shipping', number_format($order->info['shipping_cost'] * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency))) . PAR : tep_draw_hidden_field('handling_cart', number_format($order->info['shipping_cost'] * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency))) . J'ai testé le passage de paramètres de 1 à 10 produits, c'est nickel ! @ plus, Thierry -------------------- Thierry
|
|
4 Aug 2010, 08:57
Message
#11
|
|
Ceinture blanche OSC Groupe : Membres Messages : 17 Inscrit : 7-July 10 Membre no 27777 |
Bonjour,
Citation He bien, il semble qu'il suffit de valider l'option "Préférences de réception de paiements sur le site" dans le menu Préférences de votre compte vendeur Paypal... [ Renvoi Automatique = Oui, bien sûr ! ] après avoir découvert cette option, je pensais que le problème serait résolu, en effet... la redirection automatique fonctionne bien dans le cas où le client paye avec son compte paypal (il faut attendre quelques secondes après validation du paiement), par contre si il paye par carte bancaire, cette redirection n'est pas effectuée, et c'est paypal qui le dit : toujours dans la page "Préférences de réception de paiements sur le site" on a plus bas "compte paypal facultatif" pour autoriser les paiements par carte bancaire, on dit "oui" bien entendu. Si on clique sur "En savoir plus" on apprend que : "Remarque : si vous avez choisi d'activer la fonction Compte PayPal facultatif pour les nouveaux utilisateurs et activé une fonction appelée Renvoi automatique, les nouveaux utilisateurs ne seront pas redirigés automatiquement vers votre site mais pourront y revenir s'ils le veulent." c'est triste quand même... sinon elthierry, je vois que tu as bien bossé pour transmettre tous les articles chez paypal! merci, je vais tester tout ça |
|
4 Aug 2010, 09:17
Message
#12
|
|
Ceinture blanche OSC Groupe : Membres Messages : 17 Inscrit : 7-July 10 Membre no 27777 |
alors là, BRAVO elthierry, c'est super! j'ai testé avec pas mal de produits aussi, parfait! on a tout le détail :
nom de l'article, prix unitaire, quantité, prix, livraison, total il y a juste un tout petit petit petit truc pour le coût de livraison (mais je ne sais pas si ça vient de ton code ou de chez paypal) dans les emails de confirmation, que ce soit à l'acheteur ou au marchand, les frais de ports n'apparaissent pas : voilà comment ça apparait pour le client : --------------------------------------------------------------- ...... Description :Matrox G200 MMS, nº de l'objet : Prix unitaire :299,99 EUR Qté :1 Montant :€299,99 EUR Description :Matrox G400 32MB, nº de l'objet : Prix unitaire :489,99 EUR Qté :1 Montant :€489,99 EUR Sous-total : €1 157,93 EUR Total : 1 185,43 EUR Paiement : 1 185,43 EUR --------------------------------------------------------------- et pour le marchand : --------------------------------------------------------------- ...... Description :Matrox G200 MMS, nº de l'objet : Prix unitaire :299,99 EUR Qté :1 Montant :€299,99 EUR Description :Matrox G400 32MB, nº de l'objet : Prix unitaire :489,99 EUR Qté :1 Montant :€489,99 EUR Sous-total : €1 157,93 EUR Total : 1 185,43 EUR Paiement : 1 185,43 EUR --------------------------------------------------------------- |
|
4 Aug 2010, 15:20
Message
#13
|
|
Ceinture blanche OSC Groupe : Membres Messages : 17 Inscrit : 7-July 10 Membre no 27777 |
j'ai refait un test par rapport à ça, et hum ce n'est pas toujours pareil..
dans mon nouveau test, j'ai la contrib colissimo installée (dans le test précédent, c'était une expédition standard que l'on trouve à l'install d'OSC) j'ai fait un test de paiement par compte paypal, et là j'ai le même problème, le port n'est pas marqué dans les emails par contre avec un paiement par carte bancaire, l'email envoyé au marchand comprend bien cette information : ... Sous-total : 29,90 EUR Frais de dossier :5,55 EUR Assurance : Sans objet Total : 35,45 EUR bon, tout ça c'est des tests dans la sandbox, mais normalement tout est identique au mode live, y compris le contenu des emails |
|
4 Aug 2010, 15:44
Message
#14
|
|
Ceinture blanche OSC Groupe : Membres Messages : 17 Inscrit : 7-July 10 Membre no 27777 |
mais bon... c'est un détail cette histoire de livraison absente dans les emails
les bons compléments à cette modification du fichier paypal sont selon moi les contributions : Order Check et Master Password La première permet l'enregistrement de la commande avant paiement, on la trouve dans l'administration dans une nouvelle section "contrôle commande" comme ça, si le client ne revient pas sur la boutique, on a 1) la description dans l'email paypal grâce à la modif de elthierry et 2) on a cette commande enregistrée dans l'admin mais pas finalisée correctement (on le voit a un bouton rouge au lieu de vert dans le contrôle.) ensuite on peut déplacer la commande depuis "contrôle commande" pour qu'elle apparaisse dans les "vraies" commandes, le stock est bien décompté, la commande associée au client, les produits sont bien considérés comme achetés, etc. on peut ensuite supprimer cette commande du contrôle, ce n'est pas fait automatiquement. et si on veut fignoler au maximum, on utilise la deuxième (master password) pour se connecter avec le compte du client et lui vider son panier, car c'est la seule chose que Order check ne fait pas. et avec ça on est blindé (du moins je l'espère...) encore un grand merci à elthierry !!! |
|
17 Aug 2010, 23:53
Message
#15
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 81 Inscrit : 14-July 08 Lieu : Melun City Membre no 22442 |
Yo!
Je remonte un peu ce Topic Je viens juste de le remettre un peu au gout du jour, de mon coté ça fonctionne très bien sauf sur un point, c'est pour les noms des articles avec des accents, dans le test ça dis que les caractères sont pas compatible Sinon sans ce souci des accents, ça fonctionne nickel Code <?php
/* $Id: $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2007 osCommerce Released under the GNU General Public License */ class paypal { var $code, $title, $description, $enabled; // class constructor function paypal() { global $order; $this->code = 'paypal'; $this->title = MODULE_PAYMENT_PAYPAL_TEXT_TITLE; $this->description = MODULE_PAYMENT_PAYPAL_TEXT_DESCRIPTION; $this->sort_order = MODULE_PAYMENT_PAYPAL_SORT_ORDER; $this->enabled = ((MODULE_PAYMENT_PAYPAL_STATUS == 'true') ? true : false); // la valeur de test 'true' ou 'false' est convertie dans application_top depuis 'Oui' ou 'Non' ! laisser le test sur la valeur 'true' if ((int)MODULE_PAYMENT_PAYPAL_ORDER_STATUS_ID > 0) { $this->order_status = MODULE_PAYMENT_PAYPAL_ORDER_STATUS_ID; } if (is_object($order)) $this->update_status(); if (MODULE_PAYMENT_PAYPAL_TRANSACTION_SERVER == 'Live') { $this->form_action_url = 'https://secure.paypal.com/cgi-bin/webscr'; } else { $this->form_action_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr'; } } // class methods function update_status() { global $order; if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_PAYPAL_ZONE > 0) ) { $check_flag = false; $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_PAYPAL_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id"); while ($check = tep_db_fetch_array($check_query)) { if ($check['zone_id'] < 1) { $check_flag = true; break; } elseif ($check['zone_id'] == $order->billing['zone_id']) { $check_flag = true; break; } } if ($check_flag == false) { $this->enabled = false; } } } function javascript_validation() { return false; } function selection() { return array('id' => $this->code, 'module' => $this->title); } function pre_confirmation_check() { return false; } function confirmation() { return false; } function process_button() { global $order, $currencies, $currency; if (MODULE_PAYMENT_PAYPAL_CURRENCY == 'Selected Currency') { $my_currency = $currency; } else { $my_currency = substr(MODULE_PAYMENT_PAYPAL_CURRENCY, 5); } if (!in_array($my_currency, array('CAD', 'EUR', 'GBP', 'JPY', 'USD'))) { $my_currency = 'EUR'; } $xx = ''; for ($i=0; $i<sizeof($order->products); $i++) { $xx .= $order->products[$i]['qty'] . 'x ' . ($order->products[$i]['name']) . ' - '; } $process_button_string = tep_draw_hidden_field('cmd', '_cart'); $process_button_string .= tep_draw_hidden_field('upload', '1'); for ($i=0; $i<sizeof($order->products); $i++) { // Les items Paypal s'incrémentent à partir de 1 \\ $compt=$i + 1; // Quantité \\ $qt = $order->products[$i]['qty']; // Libellé \\ $lb = $order->products[$i]['name']; // Tarif TTC \\ $px = $order->products[$i]['final_price'] + ($order->products[$i]['final_price'] * $order->products[$i]['tax']) /100; // Attention, Obligatoire... Paypal ne supporte pas plus de 2 chiffres après virgule \\ $tarif=round($px, 2); $process_button_string .= tep_draw_hidden_field('item_name_'.$compt,$lb); $process_button_string .= tep_draw_hidden_field('quantity_'.$compt,$qt); $process_button_string .= tep_draw_hidden_field('amount_'.$compt,$tarif); } $process_button_string .= tep_draw_hidden_field('business', MODULE_PAYMENT_PAYPAL_ID) . tep_draw_hidden_field('amount', number_format(($order->info['total'] - $order->info['shipping_cost']) * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency))) . tep_draw_hidden_field('handling_cart', number_format($order->info['shipping_cost'] * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency))) . tep_draw_hidden_field('currency_code', $my_currency) . tep_draw_hidden_field('first_name', strtoupper($order->billing['firstname'])) . tep_draw_hidden_field('last_name', strtoupper($order->billing['lastname'])) . tep_draw_hidden_field('address1', strtoupper($order->billing['street_address'])) . tep_draw_hidden_field('city', strtoupper($order->billing['city'])) . tep_draw_hidden_field('state', strtoupper($order->billing['state'])) . tep_draw_hidden_field('zip', $order->billing['postcode']) . tep_draw_hidden_field('night_phone_c', $order->customer['telephone']) . tep_draw_hidden_field('charset', 'utf-8') . tep_draw_hidden_field('email', $order->customer['email_address']) . tep_draw_hidden_field('lc', 'FR') . tep_draw_hidden_field('rm', '2') . tep_draw_hidden_field('notify_url', tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL')) . tep_draw_hidden_field('return', tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL')) . tep_draw_hidden_field('cancel_return', tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL')); return $process_button_string; } function before_process() { return false; } function after_process() { return false; } function output_error() { return false; } function check() { if (!isset($this->_check)) { $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYPAL_STATUS'"); $this->_check = tep_db_num_rows($check_query); } return $this->_check; } function install() { tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Activer ce module de paiement', 'MODULE_PAYMENT_PAYPAL_STATUS', 'Oui', 'Voulez-vous proposer le paiement par Paypal?', '6', '3', 'tep_cfg_select_option(array(\'Oui\', \'Non\'), ', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Adresse eMail', 'MODULE_PAYMENT_PAYPAL_ID', '', 'Insérez l\'adresse mail du compte Paypal recevant les paiements', '6', '4', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Devise des transactions', 'MODULE_PAYMENT_PAYPAL_CURRENCY', 'Choisissez une devise', 'La devise utilisée pour les paiements par CB', '6', '6', 'tep_cfg_select_option(array(\'Selected Currency\',\'Only USD\',\'Only CAD\',\'Only EUR\',\'Only GBP\',\'Only JPY\'), ', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Serveur de paiement', 'MODULE_PAYMENT_PAYPAL_TRANSACTION_SERVER', 'Live', 'Le serveur de paiement à utiliser : Live(production), Sandbox(test)', '6', '3', 'tep_cfg_select_option(array(\'Live\', \'Sandbox\'), ', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Ordre de tri d\'affichage.', 'MODULE_PAYMENT_PAYPAL_SORT_ORDER', '0', 'Ordre de tri dans l\'affichage. Le plus petit en premier.', '6', '0', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Zone de paiement', 'MODULE_PAYMENT_PAYPAL_ZONE', '0', 'Si une zone est sélectionnée, seule cette zone proposera ce type de paiement.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Statut des commandes', 'MODULE_PAYMENT_PAYPAL_ORDER_STATUS_ID', '0', 'Définissez le statut qui sera assigné aux commandes payées avec ce mode de paiement.', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())"); } function remove() { tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')"); } function keys() { return array('MODULE_PAYMENT_PAYPAL_STATUS', 'MODULE_PAYMENT_PAYPAL_ID', 'MODULE_PAYMENT_PAYPAL_CURRENCY', 'MODULE_PAYMENT_PAYPAL_TRANSACTION_SERVER', 'MODULE_PAYMENT_PAYPAL_ZONE', 'MODULE_PAYMENT_PAYPAL_ORDER_STATUS_ID', 'MODULE_PAYMENT_PAYPAL_SORT_ORDER'); } } ?> -------------------- Oscommerce-2.2rc1 FR w3c 3 + Flash Shelling + Also Consider + Ask a question + Category Description + Header Tags + Super Download Shop + Family Products + Points Reward + Products New Images Text + Quick Stock Update + d'autre contrib que je n'ai plus le nom = Une bien jolie boutique !!!
|
|
4 Feb 2012, 10:20
Message
#16
|
|
Ceinture jaune OSC Groupe : Membres Messages : 41 Inscrit : 11-September 06 Membre no 12015 |
merci Team SPL
Ta solution marche nickel! copier coller intégral dans mon fichier paypal.php et tout es ok maintenant -------------------- osCommerce Online Merchant v2.2 RC1 + visibles countries + big images
|
|
Version bas débit | Nous sommes le : 29th March 2024 - 14:31 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |