Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forum osCommerce-fr _ Modules de Paiement et de Livraison _ Fix doublon commande ATOS 1.0 avec retour automatique

Écrit par : milerwan 26 Mar 2017, 12:44

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

Écrit par : Bonbec 27 Mar 2017, 08:57

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

Écrit par : damdamletouffu 30 Jun 2022, 11:54

Bonjour,

Quelqu'un at-til réussi à faire fonctionner Atos avec le nouveau Mercanet V2?



Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)