Aide - Recherche - Membres - Calendrier
Version complète : SoColissimo Simplicité
Forum osCommerce-fr > Adapter OsCommerce MS2 > Modules de Paiement et de Livraison
Pages : 1, 2, 3, 4, 5, 6, 7, 8
le_che
au passage je viens d'aller voir le module sur le site de test
http://osc.eurocashsa.com/checkout_shipping.php

en gros les gens non plus que le choix d'aller chercher leur colis , et plus que ce soit le facteur qui le livre a domicile ??????????????
c 'est dingue ça

pour info , je fait ça pour un pote qui a une boutique osc ,
telede
Citation (le_che @ 1 Mar 2011, 16:41) *
salut
impossible de trouver comment integrer leur bidule a part de la theorie (si on est pas developpeur comment on fait), y 'a rien d'autre
donc je me suis dit tiens je vais aller voir sur osc ce qu'ils en disent

Hello,

Il ne faut pas faire d’amalgame entre Liberté et Simplicité (*) ;

- Liberté c'est l'intégration de la solution So Colissimo au sein du site sans passer par la page de la poste
- Simplicité passe par une redirection vers la page appelée "sandwich" de la poste, comme pour un module de paiement

Le taux de conversion est forcément meilleur avec la solution Liberté étant donné que l'usager n'est pas "balancé" de sites en sites...

Pour obtenir gratuitement le module Simplicité il suffit de se rendre sur le site officiel et de récupérer l'addon et d'avoir le contrat approprié avec la poste : http://addons.oscommerce.com/info/7615/v,22 et de se référer aux commentaires de ce topic.

Pour obtenir le module Liberté, il suffit de télécharger ce meme module afin d'obtenir les coordonnées de l'auteur, en l’occurrence moi même.

(*) Erreur que j'ai inopinément commise en appelant le module Liberté alors qu'il s'agissait de Simplicité !

Edit Post Topic :
@Le_Che : Non la version Liberté présentée est une formule de retrait en point de retrait qui n'a aucun rapport avec une livraison standard qui est un autre module, gratuit également > le Module Colissimo de base !
le_che
bon moi aussi j'ai cette erreur et j'ai pas compris ce qu'il fallait faire
dans l'admin j'ai tout mes champs de remplis, le franco est a 150

errorcode: array(13) { ["osCsid"]=> string(32) "1f16c626ef6cb81546a5333764c2f800" ["PUDOFOID"]=> string(14) "05463720552649" ["CENAME"]=> string(4) "xxxx" ["DYPREPARATIONTIME"]=> string(1) "1" ["DYFORWARDINGCHARGES"]=> string(4) "4.73" ["TRCLIENTNUMBER"]=> string(2) "28" ["TRORDERNUMBER"]=> string(0) "" ["ORDERID"]=> string(10) "0306405528" ["TRPARAMPLUS"]=> string(0) "" ["ERRORCODE"]=> string(4) "007 " ["ERR_SIGNATURE"]=> string(40) "e7c05b4abe990cca4799cd1987dcd7289b771cec" ["SIGNATURE"]=> string(40) "adbf5ec2c0070b711bbc951b9e56e71e23e68b9a" ["NUMVERSION"]=> string(3) "3.0" }

de plus sur la page checkout_shipping.php

j'ai un bouton radio et pas un bouton "choisir un point de retrait " comme sur le site de demo http://osc.eurocashsa.com/checkout_shipping.php
oneill
Citation (le_che @ 3 Mar 2011, 06:51) *
j'ai un bouton radio et pas un bouton "choisir un point de retrait " comme sur le site de demo http://osc.eurocashsa.com/checkout_shipping.php

Ce n'est pas étonnant, il s'agit sur ce site d'une démo d'un pack Socolissimo LIBERTE. Celui que tu installes est SIMPLICITE. Il y a donc des différences.

Pour ton erreur, c'est une signature non valide. Passes moins de choses dans le sha1 pour commencer, le mini comme indiqué plus avant dans ce topic et par moi, d'ailleurs.





J'ai trouvé c'est ici
http://www.oscommerce-fr.info/forum/index....st&p=351960
Nicko500
Merci pour cette contribution delete, ca semble bien fonctionner smile.gif

J'ai cependant un soucis avec la contrib "edit_orders", la page qui permet d’éditer tous les champs d'une commande.

Elle semble ne pas aimer le module Socolissimo, des que les modules shipping sont appelés un message apparaît :

Fatal error: Call to a member function on a non-object in /homez.57/audiopho/www/includes/modules/shipping/socolissimos.php on line 208

Ligne 205 à 209 :

Code
    function quote($method = '') {
      global $order, $cart, $sendto;
        $title_ext  = '<input type="hidden" value="';/* NE PAS TOUCHER > utilis‚ par le JavaScript */
        $title_ext .= tep_href_link($this->soColissimos->path('socolissimos.php'));
        $title_ext .= '" id="sosModule" />'; /* NE PAS TOUCHER > utilis‚ par le JavaScript */



Une idée ?
telede
Citation (Nicko500 @ 8 Mar 2011, 22:36) *
Merci pour cette contribution delete, ca semble bien fonctionner smile.gif

J'ai cependant un soucis avec la contrib "edit_orders", la page qui permet d’éditer tous les champs d'une commande.

Une idée ?

1) Merci wink.gif

2) Effectivement il semble que ce soit un bug

3) Et la solution qui me semble adaptée la suivante ; donc remplacer les trois lignes $title_ext
Code
      if ( class_exists('so_colissimos') )
      {
        $title_ext  = '<input type="hidden" value="';/* NE PAS TOUCHER > utilis‚ par le JavaScript */
        $title_ext .= tep_href_link($this->soColissimos->path('socolissimos.php'));
        $title_ext .= '" id="sosModule" />'; /* NE PAS TOUCHER > utilis‚ par le JavaScript */
      }


Voilà pour la correction,

Le code précédemment buggué a, pour l'histoire, été développé intentionnellement comme ca afin de ne pas toucher au coeur d'osCommerce et ainsi de faciliter l'installation sur des version déclinées ou modifiées

wink.gif
saphir52
Bonjour,

J'ai le meme souci, lors du choix d'expedition socolissimo, on reste bloqué sur checkaout_shipping.
Et j'ai la même remarque que l'etape 3 !?
merci d'avance

Citation (jumper @ 2 Dec 2010, 13:52) *
Merci telede,
La correction apportée a pour effet de faire fonctionner les autres modes d'expédition ou l'on peut maintenant passer au paiement, mais si je selectionne socoliossimo, toujours pareil on reste sur checkout shipping. Bon, maintenant, je n'ai plus besoin de desactiver les lignes
Code
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="ext/modules/shipping/socolissimos/socolissimos.js"></script>

pour que les autres moyens d'expedition fonctionnent.... ça avance mais toujours pas de so-colissimo disponible...
<mode boulet:ON>

Je relance une install depuis le debut par contre j'ai un doute:
Etape 1:Base de Données - Table Order : OK
Etape2:Editer : includes/classes/order.php OK
Etape 3: faut-t-il comprendre includes/classes/order.php au lieu de includes/orders.php (qui n'existe pas...)?
Etape 4:admin/includes/classes/order.php OK
Etape 5:admin/orders.php OK
Etape 6: ajouter dans includes/languages/french/orders.php OK
Etape 7:checkout_process.php OK
Etape 8:checkout_shipping.php OK

<Mode boulet: OFF> smile.gif
saphir52
Je confirme, il faut comprendre includes/classes/order.php au lieu de includes/orders.php (qui n'existe pas...).

Ne pas oubliez de mettre dans la Calcul de la signature le paramètre, numVersion, cela fait donc 5 valeurs au total qui sont obligatoires.

Il me reste un problème qui bloque le transfert.
Je bloque lorsque les clients saisissent des caractères accentués notamment.

J’ai placé dans socolissimo.class.php mais ça n’a rien changé :

$fields .= '<input type="hidden" name="ceFirstName" value="' . $firstname . '" />' ; $firstname = utf8_encode($firstname);
$hash .= $firstname ;



oneill
Citation (saphir52 @ 9 Mar 2011, 19:27) *
Je confirme, il faut comprendre includes/classes/order.php au lieu de includes/orders.php (qui n'existe pas...).

Ne pas oubliez de mettre dans la Calcul de la signature le paramètre, numVersion, cela fait donc 5 valeurs au total qui sont obligatoires.

Il me reste un problème qui bloque le transfert.
Je bloque lorsque les clients saisissent des caractères accentués notamment.

J'ai placé dans socolissimo.class.php mais ça n'a rien changé :

$fields .= '<input type="hidden" name="ceFirstName" value="' . $firstname . '" />' ; $firstname = utf8_encode($firstname);
$hash .= $firstname ;


VRAI pour order.php

FAUX pour le n° de version

J'ai supprimé cette ligne
Code
$firstname = preg_replace('/[^\x2D-\x5B\x61-\x7D\xE0-\xFF\x20]/', '', $firstname);
qui me virait les espaces dans les prénoms composés.
Aussi essayes plutôt ca, ca va marcher beaucoup mieux.....
Code
$firstname = utf8_encode($firstname);
  $fields .= '<input type="hidden" name="ceFirstName" value="' . $firstname . '" />';
  $hash .= $firstname;

Par contre tu peux éviter de coder ce paramètre dans un premier temps, tu prends des risques de bloquage pour rien.
Code
// $hash .= $firstname;


thedream
Bonjour à tous.

Savez-vous où je peux trouver la version du module SoColissimo Liberté (le vrai), celui qui ne fait pas quitter le client du site pour aller sur la page sandwich de la poste et qui utilise le fichier de la Poste "EDI Client" ?

Si quelqu'un l'a, peut-il me l'envoyer par email où m'adresser un message personnel ?

Merci à vous et encore bravo pour le travail sur ce module.
jordan
Bonjour à tous.

J'ai un problème avec la contrib Simplicité, je n'arrive pas à dépasser la page checkout_shipping.php.
lorsque je sélectionne la méthode de livraison socolissimo je suis toujours redirigé vers cette page.
J'ai bien lu les post qu'il y avait sur ce problème et les solutions données ne rectifient pas mon problème.

J'ai bien mis les deux lignes javascript dans le fichier checkout_shipping.php
Code
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="ext/modules/shipping/socolissimos/socolissimos.js"></script>


J'ai même réinstaller le module, j'ai toujours le même problème.
Quelqu'un aurait-il la solution?

Merci d'avance.
saphir52
Toujours le même souci concernant les é ou è ou les ê ...
C'est sûr le fait de désactiver le transfert du prénom sur socolissimo ça résoud le problème mais tant qu'à faire quelque chose autant le faire le mieux pour le client qui risque d'être décourager de retaper ses données une seconde fois.
Nicko500
Citation (telede @ 9 Mar 2011, 07:28) *
remplacer les trois lignes $title_ext
Code
      if ( class_exists('so_colissimos') )
      {
        $title_ext  = '<input type="hidden" value="';/* NE PAS TOUCHER > utilis‚ par le JavaScript */
        $title_ext .= tep_href_link($this->soColissimos->path('socolissimos.php'));
        $title_ext .= '" id="sosModule" />'; /* NE PAS TOUCHER > utilis‚ par le JavaScript */
      }


Voilà pour la correction,

Le code précédemment buggué a, pour l'histoire, été développé intentionnellement comme ca afin de ne pas toucher au coeur d'osCommerce et ainsi de faciliter l'installation sur des version déclinées ou modifiées

wink.gif


Merci ça fonctionne au poil smile.gif

Au passage j'ai noté que le commentaire entré dans checkout_shiping n'est pas enregistré lorsque l'on revient sur checkout_payment

Et j'ai aussi ce problème d'accents unsure.gif
oneill
Citation (saphir52 @ 10 Mar 2011, 15:10) *
Toujours le même souci concernant les é ou è ou les ê ...
C'est sûr le fait de désactiver le transfert du prénom sur socolissimo ça résoud le problème mais tant qu'à faire quelque chose autant le faire le mieux pour le client qui risque d'être décourager de retaper ses données une seconde fois.


Pour les accents, c'est tout de même curieux vu que chez moi cela fonctionne comme cela. Je vais regarder de plus près pour voir si je n'ai pas planqué autre chose...

Je ne dis pas de ne pas transmettre le prénom, juste de ne pas le coder en sha1:
$fields sert à transmettre en clair les infos et tu le transmets toujours non ?
$hash sert à transmettre en plus les infos codées dans la signature. Je t'ai indiqué de commenter // $hash et pas $fields pour le prénom il me semble.

Pourquoi voudrais tu coder le prénom si c'est une source de problème dans ta signature alors que ce n'est pas obligatoire pour sa validation en sachant qu'il sera quand même transmis ?
jordan
J'ai toujours le même problème au niveau de checkout_shipping.php.
Je ne comprends pas, j'ai vérifié plusieurs fois mon code et je reste bloqué sur cette page.

Si je choisi une autre méthode de livraison, cela se passe très bien, c'est seulement lorsque je choisi SoColissimo.
J'ai vraiment besoin de mettre en place ce module, quelqu'un pourrait m'aider ?

Merci d'avance smile.gif !
saphir52
Nous sommes bien d'accord !

Coder le prénom ne sert à rien mais ça ne fonctionne pas non plus.
Dès lors qu'il y a un é, è, à ê ... dnas les prénoms, rue, ... ça bloque ... même en clair.
oneill
Et bien pas moi !

Remets ta dernière chaîne d'erreur ici pour voir, le problème est peut être ailleurs

mets donc aussi ton fichier socolissimos.class.php
saphir52
Message lorsque j'active en clair ou codé les prénoms ou rues avec é è à ....

errorcode: array(12) { ["PUDOFOID"]=> string(14) "xxxxxxxxxx" ["CENAME"]=> string(7) "xxxxxx" ["DYPREPARATIONTIME"]=> string(0) "" ["DYFORWARDINGCHARGES"]=> string(1) "0" ["TRCLIENTNUMBER"]=> string(0) "" ["TRORDERNUMBER"]=> string(0) "" ["ORDERID"]=> string(9) "111001476" ["TRPARAMPLUS"]=> string(0) "" ["ERRORCODE"]=> string(4) "007 " ["ERR_SIGNATURE"]=> string(40) "63c3f861d182f02edadde5ab1e3e47f1240ef9a4" ["SIGNATURE"]=> string(40) "3c2422b926b09562b10d5e812aa77f1eb14c4594" ["NUMVERSION"]=> string(3) "3.0" }

Code
<?php
/*
  osCommerce, Open Source E-Commerce Solutions
  <A href="http://www.oscommerce.com">http://www.oscommerce.com</A>
  Copyright (c) 2007 osCommerce
  Released under the GNU General Public License</P> <P>  @package    SO COLISSIMO
  @author     Olivier B.
  Support by mail :  <A href="mailto:olivier@smartmarseille.com">olivier@smartmarseille.com</A>
  Skype : delete13_fr</P> <P>  Ce module est diffuse gratuitement :
  
  Vous pouvez nous contacter pour tout developpement ulterieur; SoColissimo version Liberte soColissimo Flebilite TNT (WebService), Mondial Relay (WebService), GLS etc...
  
  Nous sommes specialise dans les modules d'expeditions, de paiement, et toutes taches difficiles a realiser !    </P> <P>  Demonstration du module soColissimo Liberté : <A href="http://osc.eurocashsa.com">http://osc.eurocashsa.com</A>
    
  Date : 01/09/2010 - Par : Delete - Version Initiale
  Modifie : 07/11/2010 - Par : Delete - Version Finale OpenSource
*/
  

  class so_colissimos
  {
   protected $_debug;
  
    public function __construct($language = 'FR', $debug = false)
   {
    $this->_language   = $language;
    $this->_debug     = $debug;
      $this->_path          = 'ext/modules/shipping/socolissimos';
      $this->_images        = $this->_path . '/images';
      $this->_merchantId    = MODULE_SHIPPING_SOCOLISSIMOS_MERCHANT_ID;
      $this->_merchantKey    = MODULE_SHIPPING_SOCOLISSIMOS_MERCHANT_KEY;
      $this->_url             = 'http://ws.colissimo.fr/pudo-fo/storeCall.do'; // URL Prod
      $this->_urlKo           = tep_href_link(FILENAME_CHECKOUT_SHIPPING);
      $this->_urlOk           = tep_href_link(FILENAME_CHECKOUT_SHIPPING);
   }

    public function path($file = false)
    {
      return $this->_path ? sprintf('%s/%s', $this->_path, $file) : $this->_path;
    }
  
    public function image($file = 'socolissimo.png')
    {
        return($this->_images . '/' . $file);
    } </P> <P>    public function init()
    {
      global $order, $sendto, $cart, $customer_id;
      
      $shipping = new shipping;</P> <P>      $quotes = $shipping->quote('socolissimos', 'socolissimos');
    
      $tax = $quotes[0]['tax'];
      $cost = $quotes['0']['methods']['0']['cost'] ? $quotes['0']['methods']['0']['cost'] : 0;        
                      
      $relais = preg_match('/Oui|True/i', MODULE_SHIPPING_SOCOLISSIMOS_RELAIS) ? 0 : 1;
      $delais = intval(MODULE_SHIPPING_SOCOLISSIMOS_DELAI) ? MODULE_SHIPPING_SOCOLISSIMOS_DELAI : '0';
      //$weight = preg_match('/kg/i', MODULE_SHIPPING_SOCOLISSIMOS_WEIGHT_UNIT) ? (int)($cart->show_weight() * 1000) : (int)$cart->show_weight();
      $version = '3.0';
    
      $order_id = date('dHis') .  $customer_id;
      
      if ( intval($sendto ) )
      {
        $shipping_address_query = tep_db_query("select ab.entry_firstname, ab.customers_id, ab.entry_lastname, ab.entry_gender, ab.entry_company, ab.entry_street_address, ab.entry_suburb, ab.entry_postcode, ab.entry_city, ab.entry_zone_id, z.zone_name, ab.entry_country_id, c.countries_id, c.countries_name, c.countries_iso_code_2, c.countries_iso_code_3, c.address_format_id, ab.entry_state from " . TABLE_ADDRESS_BOOK . " ab left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id) left join " . TABLE_COUNTRIES . " c on (ab.entry_country_id = c.countries_id) where ab.customers_id = '" . (int)$customer_id . "' and ab.address_book_id = '" . (int)$sendto . "'");
        $shipping_address = tep_db_fetch_array($shipping_address_query);
      }
   </P> <P>      $fields  = '<div style="display:none">';
      $hash  = '';</P> <P>      // Filtrage
      //
      $firstname = $shipping_address['entry_firstname'];
      //$firstname = preg_replace('/[^\x2D-\x5B\x61-\x7D\x82\xE0-\xFF\x20]/', '', $firstname);
      $firstname = substr($firstname, 0, 34);</P> <P>      $lastname = $shipping_address['entry_lastname'];
      $lastname = preg_replace('/[^\x2D-\x5B\x61-\x82\x7D\xE0-\xFF\x20]/', '', $lastname);
      $lastname = substr($lastname, 0, 29);                  
      
      $company = $company = $shipping_address['entry_company'];
      $company = preg_replace('/[^\x2D-\x5B\x61-\x7D\xE0-\xFF\x20]/', '', $company);
      $company = substr($company, 0, 38);  
      
      $address1 = $shipping_address['entry_street_address'];                  
      $address1 = preg_replace('/[^\x2D-\x5B\x61-\x7D\xE0-\xFF\x20]/', '', $address1);
      $address1 = substr($address1, 0, 38);            </P> <P>      $address2 = $shipping_address['entry_suburb'];
      $address2 = preg_replace('/[^\x2D-\x5B\x61-\x7D\xE0-\xFF\x20]/', '', $address2);
      $address2 = substr($address2, 0, 38);
      
      $zip = $shipping_address['entry_postcode'];
      $zip = preg_replace('/[^\x30-\x39\x41-\x44]/', '', $zip);
      $zip = sprintf('%05d', $zip);
      
      $town = $shipping_address['entry_city'] ;
      $town = preg_replace('/[^\x2D-\x5B\x61-\x7D\xE0-\xFF\x20]/', '', $town);
      $town = substr($town, 0, 32);
      
      $email = $order->customer['email_address'] ;
      $email = preg_replace('/[^\x2D-\x5B\x61-\x7D\xE0-\xFF\x20]/', '', $email);
      $email = substr($email, 0, 80);
      
      $phone = $order->customer['telephone'];
      $phone = preg_replace('/[^\x30-\x39\x2B]/', '', $phone);
      
      // Champs
      //                                          
      $fields .= sprintf('<form name="formpudocall" action="%s" method="post">', $this->_url);
      
      $fields .= '<input type="hidden" name="pudoFOId" value="' . $this->_merchantId . '" />';
      $hash   .= $this->_merchantId;
            
      $fields .= '<input type="hidden" name="ceName" value="' . $lastname . '" />';
      $hash   .= $lastname;
      
  //   $fields .= '<input type="hidden" name="dyPreparationTime" value="' . $delais . '" />';
   //   $hash   .= $delais;
      
  
       $fields .= '<input type="hidden" name="dyForwardingCharges" value="' . $cost . '" />';
       $hash .= $cost;
    
  /* $fields .= '<input type="hidden" name="trClientNumber" value="' . $customer_id . '" />';
       $hash .= $customer_id;
  
     $fields .= '<input type="hidden" name="trFirstOrder" value="' . $relais . '" />';
      $hash .= $relais;   */
                
      $fields .= '<input type="hidden" name="orderId" value="' . $order_id  .'" />'; // n° de commande, inexistant a ce stade
      $hash .= $order_id;
  
        /*
      $fields .= '<input type="hidden" name="ceDeliveryInformation" value="" />'; // pas implémenté                                      
      */

     $fields .= '<input type="hidden" name="numVersion" value="' . $version . '" />';
       $hash   .=  $version;                    
  
      if ( $shipping_address['entry_gender'] == 'm' )
      {
       if ( $shipping_address['entry_gender'] == 'm' )
       {
         $civility = "MR";
        }else{
         $civility = "MME";
        }  
        $fields .= '<input type="hidden" name="ceCivility" value="' . $civility . '" />';
        $hash .=  $civility;
      }
      
   $firstname = utf8_encode($firstname);
    //$fields .= '<input type="hidden" name="ceFirstName" value="' . $firstname . '" />';
    //$hash .= $firstname;
      
      if ( ! empty( $company ) )
      {        
  //      $fields .= '<input type="hidden" name="ceCompanyName" value="' . $company . '" />';
  //      $hash .= $company;  
      }</P> <P>      if ( $address1 )
      {
        $fields .= '<input type="hidden" name="ceAdress3" value="' . $address1 . '" />';
        $hash   .= $address1;
      }
      if ( $address2 )
      {      
  //      $fields .= '<input type="hidden" name="ceAdress4" value="' . $address2 . '" />';
  //      $hash   .= $address2;
      }
      
      if ( $zip )
      {
        $fields .= '<input type="hidden" name="ceZipCode" value="' . $zip . '" />';        
        $hash   .= $zip;
      }
      if ( $town )
      {
        $fields .= '<input type="hidden" name="ceTown" value="' . $town . '" />';
        $hash   .= $town;
      }
      if ( $email )
      {
        $fields .= '<input type="hidden" name="ceEmail" value="' . $email . '" />';
        $hash   .= $email;    
      }
      if ( $phone )
      {
        $fields .= '<input type="hidden" name="cePhoneNumber" value="' . $phone  . '" />';
        $hash   .= $phone;
      }
      if ( $weight )
      {
   //     $fields .= '<input type="hidden" name="dyWeight" value="' . $weight . '" />';
   //     $hash   .= $weight;
      }
      if ( $relais )
      {                  
       // $fields .= '<input type="hidden" name="trPointRelais" value="' . $relais .'" />';    
     //   $hash   .= $relais;
      }
      $fields .= '<input type="hidden" name="trReturnUrlKo" value="' . $this->_urlKo .  '" />';
      $hash   .=  $this->_urlKo;</P> <P>      $fields .= '<input type="hidden" name="trReturnUrlOk" value="' . $this->_urlOk . '" />';
      $hash   .=  $this->_urlOk;
      
      // DEBUG : on n'affiche pas la clé lol
      ///$fields .= '<input type="hidden" name="key" value="' . $this->_merchantKey . '" />';
      $hash   .= $this->_merchantKey;
      
      $signature = sha1($hash);                                      
                        
    
      $fields .= '<input type="hidden" name="signature" value="' . $signature . '" />';
  
      $fields .= '</div></form>';
      
      echo $fields;
    }
    
  }


telede
Citation (saphir52 @ 11 Mar 2011, 10:02) *
Message lorsque j'active en clair ou codé les prénoms ou rues avec é è à ....

errorcode: array(12) { ["PUDOFOID"]=> string(14) "xxxxxxxxxx" ["CENAME"]=> string(7) "xxxxxx" ["DYPREPARATIONTIME"]=> string(0) "" ["DYFORWARDINGCHARGES"]=> string(1) "0" ["TRCLIENTNUMBER"]=> string(0) "" ["TRORDERNUMBER"]=> string(0) "" ["ORDERID"]=> string(9) "111001476" ["TRPARAMPLUS"]=> string(0) "" ["ERRORCODE"]=> string(4) "007 " ["ERR_SIGNATURE"]=> string(40) "63c3f861d182f02edadde5ab1e3e47f1240ef9a4" ["SIGNATURE"]=> string(40) "3c2422b926b09562b10d5e812aa77f1eb14c4594" ["NUMVERSION"]=> string(3) "3.0" }


Citation (saphir52 @ 11 Mar 2011, 10:02) *
Code
      $firstname = $shipping_address['entry_firstname'];
      $firstname = preg_replace('/[^\x2D-\x5B\x61-\x7D\x82\xE0-\xFF\x20]/', '', $firstname);
      $firstname = substr($firstname, 0, 34);</P> <P>


En fait ce qu'il faudrait c'est un strtoupper sans accents, tenant compte des entités HTML, je n'ai pas cherché par fénéantise, ceci dit il est sur que ca existe et si quelqu'un a un code propre je l'implémenterais... (propre ...)

Donc j'ai effectivement poussé à l'extrème les règles de filtrage car la réalité n'a jamais correspondu à la documentation et comme la clé est basée sur ces infos, il faut que le champ soit exempt de caractères incorrectes, sinon on se "tape" une erreur 007.

Ce qui est le cas dans ton exemple.

Ceci dit je suis entrain de coder un nouveau module pour une autre solution donc je viendrais corriger tous les cas "d'école" que nous avons subit.

Voici quand même quelques informations interessantes, je peux pas attacher le fichier ni le rendre public, mais une partie que je peux vous donner venant des services techniques :

Citation
ETAPE 1 - Vérifier que le client utilise le bon produit SoColissimo PUDO

Après signature du contrat avec la/le commercial, le E-Marchant reçois des accès (login/mp) par mail. Avec cette accès il peut se connecté sur : https://www.coliposte.net/pro/services/accueil_pro.jsp puis

Via la rubrique :

Vérifier que le client à bien configuré le back office les 3 premières valeurs sont obligatoires:

- Génération de la clé de cryptage
- Identifiant Front Office
- Liens/URL KO et OK
- Non obligatoire ajout des logos pour la page sandwich

ETAPE 2 – Vérifier que le client envoi les bons paramètres à la page

Pour utiliser la page interstitiel le client doit envoyer des paramètres pour laisser au client le choix du mode de livraison. Voici les paramètres obligatoires que le client doit envoyer à la page sandwich. Dans le cas d’un paramètre manquant la page retourne une erreur dans les données POST.

Champs Nom dans le HTML Obligatoire
Identifiant FO pudoFOId Oui
Frais d’expédition dyForwardingCharges Oui
N° transaction orderId Oui
Signature signature Oui

ETAPE 3 – Vérifier l’algorithme de génération de la signature

Chaîne_à_convertir= pudoFOId+ceName+ dyPreparationTime+ dyForwardingCharges+ trClientNumber+ trOrderNumber+ orderId+cléSHA

Signature=SHA1(Chaîne_à_convertir)

Le client doit utiliser la fonction JavaScript en PJ dans le fichier webtoolkit.js

Info utile : Indiquer au client qu’il peut faire la génération de la signature en JavaScript, mai qu’il est fortement recommander de la faire également en PHP (coté serveur).

ETAPE 4 – Vérifier la bonne génération du Numéro de transaction orderID

Ce numéro est utilisé pour identifier les utilisateurs sur la page interstitiel. (Plusieurs clients peuvent se connecter en même temps sur la page interstitiel). Le client doit donc impérativement gérer son propre numéro, pour pouvoir associer la commande de son client et le mode de livraison. Ce numéro doit êtres unique. La variable orderID est composé de 5 à 16 caractères alphanumériques

ETAPE 5 – Vérifier les URL retour

Vérifier la non présence de chemin relatif dans les URL retour

VALIDE
NON VALIDE

Vérifier la longueur des URLs

256 caractères alphanumériques maximum

ETAPE 6 – Vérifier que le client utilise le bon type de compte

Deux solutions possibles :
liberté : la poste fournit un fichier de la liste des points de retrait en EDI
Simplicité : La page interstitiel


Citation
Les codes erreurs les plus courants :

006 Signature manquante
La signature n’est pas transmise dans les paramètres d’appel. - Bloquant
007 Signature invalide
La signature transmise dans les paramètres d’appel n’est pas valide. - Bloquant
008 Code postal invalide
Le code postal transmis dans les paramètres d’appel n’est pas valide. - Bloquant
011 Numéro de transaction non valide
Le numéro de transaction transmis dans les paramètres d’appel n’est pas valide. - Bloquant


C'est une préciseuse synthèse que je n'hésiterais pas à mettre en oeuvre dans la nouvelle release, ceci dit si quelqu'un veut bien m'aider ce serait volontier wink.gif
oneill
Tout ce que je vois moi c'est ca
["ERRORCODE"]=> string(4) "007 " ["ERR_SIGNATURE"]
Aucun rapport avec tes voyelles accentuées. La preuve, c'est que tu as la même erreur avec ou sans.

Donc il faut d'abord se pencher sur ce problème de signature. Pour l'instant, l'orthographe n'est pas une priorité. D'ailleurs, je ne vois pas comment tu peux dire que ce sont les accents qui bloquent vu que tu n'a jamais pu voir la page Sandwhich avec cette signature erronée. J'ai eu le problème des voyelles accentuées SUR la page sandwich, preuve que ce n'est pas bloquant.

L'essentiel est de faire apparaitre cette **** de page sandwich

Il doit y avoir un décalage entre ce que tu déclares en clair en ce que tu codes.
cyprien24
Bonjour,

comme d'autres je suis bloqué avec ce message d'erreur :
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /users/user6254/sites/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx/ext/modules/shipping/socolissimos/socolissimos.class.php on line 28

j'ai bien vu des solutions avec des choses à copié dans le .htaccess , j'ai copié ce ligne dans le fichier à la racine sans que cela ne résolve le problème, à priori je suis bien en php4.
quelqu'un à t il enfin trouvé la solution pour faire fonctionner ce mrgreen.gif de module?

merci
telede
Citation (cyprien24 @ 11 Mar 2011, 14:48) *
quelqu'un à t il enfin trouvé la solution pour faire fonctionner ce mrgreen.gif de module?


Le fait qu'il y ait une finalité commerciale a une solution OpenSource ne permet pas d'en dénigrer l'auteur mais surtout quant on utilise la version Freeware.

Je te prierais de bien vouloir retirer ce propos.

Cordialement,
Olivier
cyprien24
je parle de so colissimo!! pas de oscommerce

Lui aussi, c'est justement l'auteur de cette contrib qui vient de faire cette remarque.
Oneill


bon alors dernière précision, je parle de la poste (pas de la contribution!) qui est allé inventer une usine à gaz...
thedream
Citation
Est-ce que quelqu'un à trouver le bug des commentaires qui disparraissent quand on choisi le module So Colissimo ?


J'ai trouvé !

Pour le bug des commentaires il faut rajouter la ligne suivante dans le module So Colissimo:
Code
if (!tep_session_is_registered('comments')) tep_session_register('comments');

après:
Code
if (!tep_session_is_registered('sendto')) tep_session_register('sendto');
if (!tep_session_is_registered('shipping')) tep_session_register('shipping');


Normalement tout est ok. Je continue le débuggage...
telede
Citation (thedream @ 11 Mar 2011, 16:06) *
J'ai trouvé !

Et merci thedream wink.gif

Je note pour la future release wink.gif wink.gif
oneill
Citation (telede @ 11 Mar 2011, 16:54) *
Citation (thedream @ 11 Mar 2011, 16:06) *
J'ai trouvé !

Et merci thedream wink.gif

Je note pour la future release wink.gif wink.gif



confused.gif confused.gif

Pas moi OUiiinnnnnn
Marche pô
saphir52
c'est là que tu te trompes (je préfererais que cela soit moi) car dès que je rentre un prénom ou une rue sans accents HOP j'accède à la page sandwich.


J'ai contacté le support socolissimo mais pas d'idée à part la conversion ISO et §UTF8

Citation (oneill @ 11 Mar 2011, 12:20) *
Tout ce que je vois moi c'est ca
["ERRORCODE"]=> string(4) "007 " ["ERR_SIGNATURE"]
Aucun rapport avec tes voyelles accentuées. La preuve, c'est que tu as la même erreur avec ou sans.

Donc il faut d'abord se pencher sur ce problème de signature. Pour l'instant, l'orthographe n'est pas une priorité. D'ailleurs, je ne vois pas comment tu peux dire que ce sont les accents qui bloquent vu que tu n'a jamais pu voir la page Sandwhich avec cette signature erronée. J'ai eu le problème des voyelles accentuées SUR la page sandwich, preuve que ce n'est pas bloquant.

L'essentiel est de faire apparaitre cette **** de page sandwich

Il doit y avoir un décalage entre ce que tu déclares en clair en ce que tu codes.
oneill
Moi c'est bien la conversion ISO/UTF8 qui a réglé le problème des accents mais pas celui de la signature qui était déjà réglé à ce moment la.
J'ai même du convertir les url de retour qui partaient en GET
Code
      $fields .= '<input type="hidden" name="trReturnUrlKo" value=' . htmlentities( $this->_urlKo, ENT_NOQUOTES, 'UTF-8') . ' />';
      $fields .= '<input type="hidden" name="trReturnUrlOk" value=' . htmlentities( $this->_urlOk, ENT_NOQUOTES, 'UTF-8') . ' />';


As tu essayé de n'envoyer que le minimum afin d'arriver sur la page sandwich et de remettre au fur et à mesure les éléments à transmettre ?
oneill
Voila ce que j'ai pour le prénom par exemple. Rien d'autre ne fonctionnait correctement.

D'abord le filtrage
Code
      $firstname = $shipping_address['entry_firstname'];
      $firstname = utf8_encode($firstname);
      $firstname = substr($firstname, 0, 34);


Puis la construction du flux
Code
      $fields .= '<input type="hidden" name="ceFirstName" value="' . $firstname . '" />';

Je ne l'envoie pas à la signature.
Sur la page sandwich un prénom comme René est orthographié tel quel (René)

Je fais exactement pareil pour le nom, sauf que je le passe à la signature
Code
      $fields .= '<input type="hidden" name="ceName" value="' . $lastname . '" />';
      $hash   .= $lastname;


Mon seul gros filtrage est la conversion ISO/UTF8 qui semble à elle seule régler le problème.
Toi, tu nettoies puis tu convertis, de la vient peut être ton problème. Essayes le mien...
telede
C'est parceque je ne savais pas si justement il y avait des probleme de charset que j'ai proposé plus haut la conversion en MAJ ...

mais ca me rappelle une fonction que j'ai developpée pour Paypal et reprise dans différent topics dont :

http://www.oscommerce-fr.info/forum/index....st&p=301951

Code
// charset conversion for paypal express checkout module / by delete
//
function tep_adjust_charset($input, $orig = "UTF-8", $dest = CHARSET)
{
        if ( is_array($input) )
        {
            foreach ($input as $key => $val)
            {
                $input[$key] = iconv($orig, $dest, $val);
            }
            return $input;
        }
        else
        {
                return iconv($orig, $dest, $input);
        }
}


ici dans le cas qui nous préoccupe a utiliser a l'envers : $valeur = tep_adjust_charset($prenom, CHARSET, 'UTF-8') ;

CHARSET est un define osC par défaut, donc dans le pire des cas ça fera : soit rien si le site est déjà UTF-8 soit fera le travail si il est en ISO8859-1 !
oneill
Tiens ca , c'est pas con.
telede
Citation (oneill @ 12 Mar 2011, 09:52) *
Tiens ca , c'est pas con.

Bein je me posais la question si :

- Il fallait tout passer en majuscules sans accents
- Ou adapter la solution aux contraintes (éternelles) de CHARSET

Tu viens de me répondre, et ca répond à ma question...

Et, ca c'est pas con.

On va donc adapter la solution dans ce sens wink.gif
oneill
Je suis d'accord avec ca : Ce problème de Charset va être de plus en plus d'actualité. A défaut de passer sa boutique totalement en UTF8, cette solution permettrait de le faire en douceur au coup par coup. Mais je doute qu'il soit safe de le faire pour toute sa boutique (dans application_top par exemple) et ainsi envoyer de l'UTF8 à tout va et déclarer de l'ISO en Content-Type. Il conviendrait de réserver cette fonction à un usage ponctuel, je pense. Et vous ?
saphir52
Quel pourrait être le rapport entre un problème de signature et un problème d'accent ?

J'acccède à la page sandwich mais dès lors que je rajoutele champs prénom, BOOM message d'erreur Errerur 12 .....
oneill
Ah mais moi, avant que tu m'en parles, je ne pensais pas que ca arrivait... Je sors mon Joker
telede
Citation (saphir52 @ 12 Mar 2011, 12:17) *
Quel pourrait être le rapport entre un problème de signature et un problème d'accent ?

J'acccède à la page sandwich mais dès lors que je rajoutele champs prénom, BOOM message d'erreur Errerur 12 .....


Et bien regarde comment sont affichés les prix sur ton site ca expliquera peut etre la raison :
Erreur 12 = Format des frais d’expédition incorrect

Citation (oneill @ 12 Mar 2011, 12:46) *
Ah mais moi, avant que tu m'en parles, je ne pensais pas que ca arrivait... Je sors mon Joker


HS mais l'UTF-8 est est un système d'encodage de caractère multi-byte. C'est bien quand on veut décliner son site en mandarin ou en Japonais, avec une sincère pensée pour eux ce jour wink.gif

Mais donc multi/mono ne fait pas bon ménage dans notre contexte d'ou les erreurs...
saphir52
J'avoue avoir jeter l'éponge pour quelques jours, j'ai déjà perdu pas mal de temps sur ce bug.

J'ai activé le module SoColissimo en ligne et je ne traite que le minimum syndical.
oneill
confused.gif
telede
Citation (saphir52 @ 13 Mar 2011, 08:45) *
J'avoue avoir jeter l'éponge pour quelques jours


Le module a marché dès le début chez Oneill (et bien d'autres) grâce à sa volonté, sa contribution, et quelques cordiaux échanches, il a fait son choix.

Ton problème semble simple a régler, mais bon, à ta guise.

Après il existe la version commerciale, bien plus aboutie, assurant un meilleur taux de transformation etc...

Ca signifie pas que le travail de la solution OpenSource a été baclé, non, et loin de là ma volonté.

Mais il est certainement moins abouti car n'a pas la même finalité, c'est certain wink.gif


brouillard
Citation (telede @ 13 Mar 2011, 11:01) *
Citation (saphir52 @ 13 Mar 2011, 08:45) *
J'avoue avoir jeter l'éponge pour quelques jours


....................... Ca signifie pas que le travail de la solution OpenSource a été baclé, non, et loin de là ma volonté.

Mais il est certainement moins abouti car n'a pas la même finalité, c'est certain wink.gif






blink.gif
oneill
C'est déjà différent au niveau de la ColiPoste.
Liberté ou Simplicité !

Je pense déjà que les noms seraient à inverser biggrin.gif car il est moins simple d'aller sur une page sandwich avec une valise de renseignements que de tout traiter en interne avec plus de liberté. Curieux choix de la poste à la base, je trouve. C'est peut être le message qu'ils ont voulu faire passer ninja.gif .

Les deux solutions existent. Que la plus courante, Simplicité par défaut, soit gratuite et open source est une bonne chose. Après, que la solution en interne ne le soit pas ne devrait offusquer personne, tant qu'on a le choix des deux, je ne vois pas où est le problème.


J'ai posé la question à la poste en octobre afin de savoir pourquoi ils ne fournissaient pas de module eux mêmes. Ils m'ont répondu que ce n'était pas leur rôle, qu'ils vendaient, par exemple, les timbres mais pas les machines à timbrer... Et c'est vrai qu'à défaut d'acheter une machine à timbrer, on a toujours le choix de coller les timbres avec la langue même si on trouve que la colle n'a pas bon goût...


Bon Dimanche à tous
telede
Citation (oneill @ 13 Mar 2011, 12:22) *
Je pense déjà que les noms seraient à inverser biggrin.gif car il est moins simple d'aller sur une page sandwich avec une valise de renseignements que de tout traiter en interne avec plus de liberté.

Ca ca me plait wink.gif

Effectivement et paradoxalement le système Simplicité est plus complexe a implémenter. Liberté plus aisé, a l'exception bien entendu de l'ergonomie sur laquelle il y a du taf'.

Citation (oneill @ 13 Mar 2011, 12:22) *
Curieux choix de la poste à la base, je trouve.

A mon sens une erreur stratégique, j'en discutais hier avec Daniel Kerr qui me disait "why they didn't used cURL, that's easy.."

Surtout que nous sommes à l'heure de l'intégration verticale au sein des solution pour le paiement etc... (donc un paiement internalisé), donc pourquoi essayer de changer les choses en externalisant le shipping !

En + Colissimo France / Coliposte fait une sacré propagande de la solution Simplicité a en croire le bourrage de crâne que subissent les commerciaux...

jordan
Bonjour, j'ai avancé dans mon problème.
J'ai installer le module So Colissimo simplicité sur un OsCommerce vierge sans aucune autre installation de contributions et le module d'expédition fonctionne.

Ensuite sur mon site de développement j'ai remplacer les fichiers à modifiés pour le module So Colissimo du site sur lequel mon module fonctionnait (checkout_shipping.php, include/classes/order.php, admin/includes/classes/order.php, admin/orders.php et checkout_process.php) mais j'ai toujours le même problème (je reste bloqué sur la page checkout_shipping.php)...

Dans les deux fichiers .htaccess j'ai le même contenu. Je ne comprends pas vraiment d'où peut venir mon problème, quelqu'un aurait-il la réponse ?

Merci d'avance smile.gif
oneill
Peut être un conflit de Jquery. J'ai eu ca
Tu n'as pas 2 deux versions en même temps ?
jordan
Où est-ce que je peux voir où sont mes versions JQuery? (je n'ai pas souvent l'habitude de travailler avec)
oneill
Tu fais une recherche sur toute ta boutique avec JQuery ou tu fouilles tes entêtes... C'est chez toi. c'est comme si tu me demandais où sont rangés les tasses dans ton appart.... wink.gif En principe, le placard à JS est dans includes/javascript/ mais bon, y a parfois des tasses dans l'évier.
jordan
Effectivement j'ai plusieurs fichiers javascript, mais si dans mon fichier "checkout_shipping.php" je ne fais pas appel à différentes versions de js il ne devrait pas y avoir d'erreur si?
oneill
Normalement non. J'ai 3 choses qui tournent avec jquery et j'ai du uniformiser les versions. Tu as peut être autre chose, mais la, tout de suite, ca ne me vient pas.

Regardes aussi dans tes boxes
jordan
Oui en effet, j'ai un carousel et une boxe défilante mais là sur la page checkout_shipping j'ai tout mis en commentaire, je n'ai plus que le contenu de la page, le header et le footer. Tu pense que ça pourrait encore venir du js?

Je suis à bout, il faut que ce module marche ! =)
Merci de ton aide.
oneill
Donnes moi l'adresse de ton site en MP
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2013 Invision Power Services, Inc.