osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Description de mon panier oscommerce dans paypal
creation
posté 8 Feb 2010, 18:54
Message #1


Ceinture blanche OSC
Icône de groupe

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
Go to the top of the page
 
creation
posté 8 Feb 2010, 22:04
Message #2


Ceinture blanche OSC
Icône de groupe

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.
Go to the top of the page
 
pyram
posté 9 Feb 2010, 14:19
Message #3


Ceinture jaune OSC
Icône de groupe

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...
Go to the top of the page
 
afiber
posté 22 Jul 2010, 10:48
Message #4


Ceinture blanche OSC
Icône de groupe

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)
Go to the top of the page
 
elthierry
posté 23 Jul 2010, 14:29
Message #5


Ceinture jaune+ OSC
Icône de groupe

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
Go to the top of the page
 
elthierry
posté 27 Jul 2010, 09:26
Message #6


Ceinture jaune+ OSC
Icône de groupe

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
Go to the top of the page
 
afiber
posté 3 Aug 2010, 15:40
Message #7


Ceinture blanche OSC
Icône de groupe

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!
Go to the top of the page
 
elthierry
posté 3 Aug 2010, 23:07
Message #8


Ceinture jaune+ OSC
Icône de groupe

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 wacko.gif

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
Go to the top of the page
 
elthierry
posté 4 Aug 2010, 01:07
Message #9


Ceinture jaune+ OSC
Icône de groupe

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 ! ] blink.gif
Testez cette modif et tenez-moi au courant.

Merci,
Thierry


--------------------
Thierry
Go to the top of the page
 
elthierry
posté 4 Aug 2010, 01:37
Message #10


Ceinture jaune+ OSC
Icône de groupe

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 ! biggrin.gif

@ plus,
Thierry


--------------------
Thierry
Go to the top of the page
 
afiber
posté 4 Aug 2010, 08:57
Message #11


Ceinture blanche OSC
Icône de groupe

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
Go to the top of the page
 
afiber
posté 4 Aug 2010, 09:17
Message #12


Ceinture blanche OSC
Icône de groupe

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
---------------------------------------------------------------
Go to the top of the page
 
afiber
posté 4 Aug 2010, 15:20
Message #13


Ceinture blanche OSC
Icône de groupe

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
Go to the top of the page
 
afiber
posté 4 Aug 2010, 15:44
Message #14


Ceinture blanche OSC
Icône de groupe

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 happy.gif

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...) wacko.gif

encore un grand merci à elthierry !!!
Go to the top of the page
 
Team SPL
posté 17 Aug 2010, 23:53
Message #15


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 81
Inscrit : 14-July 08
Lieu : Melun City
Membre no 22442



Yo!
Je remonte un peu ce Topic wink.gif

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 sad.gif
Sinon sans ce souci des accents, ça fonctionne nickel smile.gif


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 !!!
Go to the top of the page
 
titi63
posté 4 Feb 2012, 10:20
Message #16


Ceinture jaune OSC
Icône de groupe

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
smile.gif


--------------------
osCommerce Online Merchant v2.2 RC1 + visibles countries + big images
Go to the top of the page
 

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS 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)