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

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Fix doublon commande ATOS 1.0 avec retour automatique, Paiment ATOS/SIPS RETOUR AUTO
milerwan
posté 26 Mar 2017, 12:44
Message #1


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 188
Inscrit : 18-October 06
Membre no 12709



Contributions concernées :
- Paiment ATOS/SIPS RETOUR AUTO : http://addons.oscommerce.com/info/8253
- ATOS v1.0 : http://addons.oscommerce.com/info/8401

Pour les utilisateurs de la contribution "Paiment ATOS/SIPS RETOUR AUTO" (de Brouillard s'embrouille) qui rencontrent un problème de doublon de commande après paiement, je propose une correction qui solutionne définitivement ce bug.

Voici des points importants des changements à opérer sur le fichier atos.php (includes/modules/payment/atos.php) :
1. Modification du calcul des décimales du montant encaissé (d’origine il y a une erreur intermittente de 1 centime en défaveur de la boutique par rapport au montant exact de la commande, ceci le corrige)
2. Suppression doublon de commande
3. Modification pour IP v6 (sinon erreur/échec lors du paiement pour les utilisateurs d’IP v6)

Dans le fichier atos.php (includes/modules/payment/atos.php), modifier/remplacer la fonction makeRequest à partir de la ligne 375 comme suit :

Code
    // ----------------------------------------------------------------
    // makeRequest()
    //
    // Make the request by executing the request external application
    function makeRequest($amount, $currency) {
      global $customer_id, $_SERVER, $language;

//      $amount = sprintf("%03d", $amount * $this->_getCurrencyUnit($currency));
      $amount = tep_round($amount,2) * $this->_getCurrencyUnit($currency);

      $pathfile = $this->_getPathFileName();

      $command  = MODULE_PAYMENT_ATOS_BIN_REQUEST;
      $command .= " " . $this->os_info['quote'] . "pathfile=" . $pathfile . $this->os_info['quote'];
      $command .= " merchant_id=" . MODULE_PAYMENT_ATOS_ID;
      $command .= " amount=" . $amount;
      $command .= " currency_code=" . $this->_getCurrencyCode(DEFAULT_CURRENCY);
      $command .= " language=" . $this->_getLanguageCode($language);

    //Retour automatique a la boutique apres paiement by brouillard s'embrouille
      $command .= " data=NO_RESPONSE_PAGE";
      $command .= " " . $this->os_info['quote'] . "normal_return_url=" . tep_href_link('atos_response.php', '', 'SSL', false) . $this->os_info['quote'];
      $command .= " " . $this->os_info['quote'] . "cancel_return_url=" . tep_href_link('atos_response.php', '', 'SSL', false) . $this->os_info['quote'];
    //Fin Retour automatique a la boutique apres paiement by brouillard s'embrouille

// BOF Fix doublon commande
//      $command .= " " . $this->os_info['quote'] . "automatic_response_url=" . tep_href_link(FILENAME_CHECKOUT_PROCESS, tep_session_name() . '=' . tep_session_id(), 'NONSSL', false) . $this->os_info['quote'];
      $command .= " " . $this->os_info['quote'] . "automatic_response_url=" . tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'NONSSL', false) . $this->os_info['quote'];
// EOF Fix doublon commande

      $command .= " customer_id=" . $customer_id;

    // IP V6 fix
//      $command .= " customer_ip_address=" . $_SERVER['REMOTE_ADDR'];
      $command .= " customer_ip_address=" . substr($_SERVER['REMOTE_ADDR'], 0, 19);

      if (!@ini_get("safe_mode"))
      $command .= ' 2>&1';
      $sips_result = exec($command);

      $sips = array();
      $sips_values     = preg_split ("/!/", $sips_result);
      $sips['code']    = $sips_values[1];
      $sips['error']   = $sips_values[2];
      $sips['message'] = $sips_values[3];
      $sips['command'] = $command;
      $sips['output']  = $sips_result;
    
      if (!isset($sips['code'])) {
        $sips['code']   = -1;
        $sips['error']  = $sips_result;
      }
    
      if ($sips['code'] != 0) {
        $sips['amount'] = $amount;
        $sips['lang']   = $lang;
        $sips['id']     = tep_session_id();
      }
    
      return $sips;
    }


Bien évidemment, cette modif préserve le retour automatique à la boutique. smile.gif

Ce message a été modifié par milerwan - 26 Mar 2017, 13:08.


--------------------
osCommerce v2.3.4 BS
Go to the top of the page
 
Bonbec
posté 27 Mar 2017, 08:57
Message #2


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1326
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Bonjour,

Merci ! Je commençais à regarder l'installation d'ATOS car je vais l'ajouter en plus de Paypal que j'utilise depuis mes débuts.
Cette soluce m'évitera sans doute de l'arrachage de cheveux biggrin.gif


--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc 2.3.4 BS
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 : 24th November 2017 - 14:15
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)