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

Bienvenue invité ( Connexion | Inscription )

> 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 : 191
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
 

Les messages de ce sujet


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:42
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)