Vinz3056 Posted December 16, 2013 Share Posted December 16, 2013 Bonjour, Je modifie actuellement le module cic 3.0 car comme beaucoup, j'ai l'erreur CGI2 not ok. J'ai découvert plein de pb et là je sèche... Lors d'un achat, si tout se passe bien, la banque attend un code retour. Si je commente la ligne $abcd_cmcic30->validateOrder(intval($cart->id), _PS_OS_PAYMENT_, substr($CMCIC_bruteVars['montant'], 0, -3), 'CB CIC', 'Paiement '.intval($CMCIC_bruteVars['reference']), null, $id_currency, false, $cart->secure_key); le retour est ok, mais le panier non transformé en commande (logique !) Si je dé-commente cette ligne, le retour à la banque ne se fait pas (page blanche) mais la commande est validé... Quelqu'un veut se prendre la tête avec moi ? Merci ! Link to comment Share on other sites More sharing options...
Vinz3056 Posted December 17, 2013 Author Share Posted December 17, 2013 (edited) Si je rajoute 2 logger (1 avant et 1 après) Logger::addLog("validateorder 1"); $abcd_cmcic30->validateOrder(intval($cart->id), Configuration::get('PS_OS_PAYMENT'), substr($CMCIC_bruteVars['montant'], 0, -3), 'CB CIC', 'Paiement '.intval($CMCIC_bruteVars['reference']), array(), $id_currency, false, $cart->secure_key); Logger::addLog("validateorder 2"); Aucun des 2 n'est exécuté alors que le validateOrder lui est bien exécuté... Bizarre ! Edited December 17, 2013 by Vinz3056 (see edit history) Link to comment Share on other sites More sharing options...
doekia Posted December 18, 2013 Share Posted December 18, 2013 J e pense que tu as une collision avec un module utilisant la backard-compatibilité. Link to comment Share on other sites More sharing options...
Vinz3056 Posted December 19, 2013 Author Share Posted December 19, 2013 Je ne pense pas... Comment en etre sur ? Merci pour ta piste ! Link to comment Share on other sites More sharing options...
Mediacom87 Posted December 19, 2013 Share Posted December 19, 2013 Bonjour, l'url CGI2 est testé par la banque lors de la validation du paiement. Il faut transmettre cette information à la banque sinon cela ne fonctionnera jamais et surtout n'a strictement aucun lien avec le module. Par contre il peut aussi arriver que cette url ne fonctionne pas mais je n'ai jamais rencontré ce cas. Link to comment Share on other sites More sharing options...
coeos.pro Posted December 19, 2013 Share Posted December 19, 2013 Aucun des 2 n'est exécuté alors que le validateOrder lui est bien exécuté... Bizarre ! Juste pour être sûre... comment vérifies tu que ça a bien fonctionné ? Link to comment Share on other sites More sharing options...
Vinz3056 Posted December 19, 2013 Author Share Posted December 19, 2013 Le cgi est bien paramétré... Je vois la commande qui est validé avec le bon statut, et dans la page log, je vois mes autres log, mais pas les 2 ci dessus... Link to comment Share on other sites More sharing options...
Vinz3056 Posted December 20, 2013 Author Share Posted December 20, 2013 J'avance... A priori, lorsque je commente le validateorder, les logs sont ok, le retour banque ok. Dès que j'utilise le validateorder, plus rien, page blanche (comme si php ne traitait que la ligne validateorder), pas de log et pas de retour banque. Link to comment Share on other sites More sharing options...
doekia Posted December 20, 2013 Share Posted December 20, 2013 Je poste régulièrement le même bout de code qu'il faut presque toujours appliquer lorsque vous avez des modules de différentes génération.La couche backward_compatibility oublie de nombreux cas et dans le cas de la validation c'est fatal.Si ton module ne déclare pas par lui-même la methode validateOrder(), lui en ajouter une comme suit: public function validateOrder($id_cart, $id_order_state, $amount_paid, $payment_method = 'Unknown', $message = null, $extra_vars = array(), $currency_special = null, $dont_touch_amount = false, $secure_key = false, Shop $shop = null) { global $cookie, $cart; if (!is_object($cookie)) { $cart = new Cart($id_cart); $cookieLifetime = (time() + (((int)Configuration::get('PS_COOKIE_LIFETIME_FO') > 0 ? (int)Configuration::get('PS_COOKIE_LIFETIME_FO') : 1)* 3600)); $cookie = new Cookie('ps', '', $cookieLifetime); $cookie->id_currency = (int)$cart->id_currency; $cookie->id_lang = (int)$cart->id_lang; $cookie->id_country = (int)Configuration::get('PS_COUNTRY_DEFAULT'); $cookie->id_customer = (int)$cart->id_customer; } return parent::validateOrder($id_cart,$id_order_state,$amount_paid,$payment_method, $message,$extra_vars,$currency_special,$dont_touch_amount,$secure_key,$shop); } Si il en a déjà une mettre le code en début de methode: global $cookie, $cart; if (!is_object($cookie)) { $cart = new Cart($id_cart); $cookieLifetime = (time() + (((int)Configuration::get('PS_COOKIE_LIFETIME_FO') > 0 ? (int)Configuration::get('PS_COOKIE_LIFETIME_FO') : 1)* 3600)); $cookie = new Cookie('ps', '', $cookieLifetime); $cookie->id_currency = (int)$cart->id_currency; $cookie->id_lang = (int)$cart->id_lang; $cookie->id_country = (int)Configuration::get('PS_COUNTRY_DEFAULT'); $cookie->id_customer = (int)$cart->id_customer; } Link to comment Share on other sites More sharing options...
Vinz3056 Posted December 21, 2013 Author Share Posted December 21, 2013 En effet, ca règle certaines choses mais pas tout... En l'état, en déplacant les retour à la banque ca se passe bien. Merci. Link to comment Share on other sites More sharing options...
doekia Posted December 21, 2013 Share Posted December 21, 2013 PM que je vois ton pb de plus près Link to comment Share on other sites More sharing options...
azralth Posted January 9, 2014 Share Posted January 9, 2014 Bonsoir, je souhaitais avoir un peu plus d'informations sur vos différents tests, avez-vous pu faire fonctionner ce module ? Je me bat depuis ce matin pour le faire fonctionner ! j'ai toujours ce CGI NOT OK alors que la commande est bien crédité dans le site et le panier vide lors du retour de paiement. Cordialement, Link to comment Share on other sites More sharing options...
totoche33 Posted April 2, 2014 Share Posted April 2, 2014 Bonjour, Je rencontre le même problème de CGI2 NOT OK, alors que la commande ce valide bien et envoi les mails de confirm au client et à la boutique En faisant mes tests de debug je me suis aperçu que le problème viendrait de : Configuration::get('PS_OS_PAYMENT') Car si je passe en PS_OS_BANKWIRE or PS_OS_CHEQUE le CGI2 est OK et la commande est bien validée également Quelqu'un à t'il trouvé une solution à ce problème ? Cordialement Link to comment Share on other sites More sharing options...
doekia Posted April 2, 2014 Share Posted April 2, 2014 Humm, Tu dois avoir un sérieux problème dans ton code... Le statut n'entre pas en ligne de compte pour le retour CGI2. Ce qui doit surement se passer est que la validation complète de la commande dans le cas de OS_PAYMENT provoque une erreur qui pollue l'output de ton CGI2. En effet la banque veux exclusivement OK tout autre cas de figure est considéré par elle en KO. Rajoute un ob_start() en début de ton code, puis un ob_clean() juste avant de retourner le CGI2 OK.... Tu peux éventuellement logguer le contenu du buffer afin de connaitre la source du pb Sinon fais moi un pv pour que je regarde ton problème. Link to comment Share on other sites More sharing options...
Recommended Posts