Jump to content

Problème Module Desjardins (Paiement En Ligne) - Url De Retour Bug ?


Recommended Posts

Bonjour...

 

J'ai essayé de tous les moyens possible de trouver pourquoi ça ne fonctionne pas...  Je tente de contacter prestashop à ce sujet ainsi que le développeur, je ne peux contacter personne -_- ... Ce module semble nébuleux !!! Alors que Desjardins est un nom bien connu au Québec...

 

Bref, mon problème est relié à l'URL de retour...

 

Desjardins me dit que le problème est dû à prestashop et qu'eux ne peuvent rien faire...

 

Voici l'URL de retour généré par Prestashop :

 

http://saveurssante.com/index.php?fc=module&module=desjardins&controller=validation&id_lang=5

 

Ce que Desjardins me dit c'est qu'en allant à cette adresse web, normalement on devrait voir : version=2 cdr=0 

 

Mais dans le moment c'est version=2 cdr=1 qu s'affiche...

 

Je ne sais pas quoi faire et je ne peux contacter personne à ce sujet...

 

Pouvez-vous me guider ?

 

Je suis embêtée car mon nouveau site ne peux pas prendre de paiement pour le moment...

 

Dans la limite je repasserai à mon ancien site en attendant mais bon...

 

J'attends vos conseils avec impatience !

 

Merci.

 

P.S.

Ah j'oubliais... Desjardins m'a envoyé un log d'erreur... Peut-être qu'il pourrait être utile à retracer le problème... ! Le voici :

 

***************************** lpayit1p *****************************
2016-02-11:17:23:26 +0100|66.131.66.172|paiement.cgi|31004||||6915634|2016-02-11|TEST1|INFO|Appel de l'application|AVSAdresse=910LASSOMPTION|AVSCodePostal=J5W2A4|Ecom_Payment_Card_ExpDate_Month=12|Ecom_Payment_Card_ExpDate_Year=2019|Ecom_Payment_Card_Number=0000 0*********0002|Ecom_Payment_Card_Type=|Ecom_Payment_Card_Verification=XXXX|Ecom_SchemaVersion=http://www.ecml.org/version/1.0|Ecom_TransactionComplete=|MAC=58A00738314E9A5C8FDA50C6B663C5FC75752962|TPE=6915634|date=11/02/2016:17:23:06|is_javascript_enabled=0|lgue=FR|[email protected]|mobile=|mode_affichage=web|montant=125CAD|options=|protocole=SSL|reference=TEST1|screenwidth=480|societe=VPCfr6915635|texte-libre=TEST1 - SITE EN LIGNE|url_retour=https://www.monetico-services.com/fr/test/client/Paiement/CommandeVPC_Recapitulatif.aspx?Status=Retour&tpe_id=6915634|url_retour_err=https://www.monetico-services.com/fr/test/client/Paiement/CommandeVPC_Recapitulatif.aspx?Status=RetourErreur&tpe_id=6915634|url_retour_ok=https://www.monetico-services.com/fr/test/client/Paiement/CommandeVPC_Recapitulatif.aspx?Status=RetourOK&tpe_id=6915634|version=3.0|x=49|y=25|
2016-02-11:17:23:26 +0100|66.131.66.172|paiement.cgi|31004|CONTEXTE|SSL|6915634|VPCfr6915635|FR|3.0|11/02/2016:17:23:06|125CAD|TEST1|58A00738314E9A5C8FDA50C6B663C5FC75752962|[email protected]|0000010000000000-12/2019||
2016-02-11:17:23:26 +0100|66.131.66.172|paiement.cgi|31004|INFO |Traitement=PD|Affectation de la r f rence mon tique unique=691563420160211TEST1
2016-02-11:17:23:26 +0100|66.131.66.172|paiement.cgi|31004|INFO |libelle(demande)|protocole=SSL|num_tpe=6915634|num_tpe_host=6915635|code_bin=453000|code_banque=02663|reference=TEST1|Autorisation accord e||num_autorisation=000000|idt_gt=000000|certificat_gt=0000000000
2016-02-11:17:23:26 +0100|66.131.66.172|paiement.cgi|31004|INFO |mise a jour de la r f rence unique mon tique|R f rence=691563420160211TEST1
2016-02-11:17:23:26 +0100|66.131.66.172|paiement.cgi|31004|INFO |Enregistrement de la r f rence en base|reference_unique_monetique=691563420160211TEST1
2016-02-11:17:23:26 +0100|66.131.66.172|paiement.cgi|31004|INFO ||Requete="INSERT INTO options_commandes SET idx_commande = '14016886', nom = 'reference_unique_monetique', valeur = '691563420160211TEST1'"
2016-02-11:17:23:27 +0100|66.131.66.172|paiement.cgi|31004|6915634|TEST1|Init:>1s
2016-02-11:17:23:27 +0100|66.131.66.172|paiement.cgi|31004|TERMINE|6915634|TEST1|F>1s
***************************** lpayit2p *****************************
2016-02-11:17:23:07 +0100|66.131.66.172|paiement.cgi|5946||||6915634|2016-02-11|TEST1|INFO|Appel de l'application|MAC=58A00738314E9A5C8FDA50C6B663C5FC75752962|TPE=6915634|date=11/02/2016:17:23:06|lgue=FR|[email protected]|montant=125CAD|options=|reference=TEST1|societe=VPCfr6915635|texte-libre=TEST1 - SITE EN LIGNE|url_retour=https://www.monetico-services.com/fr/test/client/Paiement/CommandeVPC_Recapitulatif.aspx?Status=Retour&tpe_id=6915634|url_retour_err=https://www.monetico-services.com/fr/test/client/Paiement/CommandeVPC_Recapitulatif.aspx?Status=RetourErreur&tpe_id=6915634|url_retour_ok=https://www.monetico-services.com/fr/test/client/Paiement/CommandeVPC_Recapitulatif.aspx?Status=RetourOK&tpe_id=6915634|version=3.0|
2016-02-11:17:23:07 +0100|66.131.66.172|paiement.cgi|5946|CONTEXTE||6915634|VPCfr6915635|FR|3.0|11/02/2016:17:23:06|125CAD|TEST1|58A00738314E9A5C8FDA50C6B663C5FC75752962|[email protected]|-/||
2016-02-11:17:23:07 +0100|66.131.66.172|paiement.cgi|5946|TERMINE|6915634|TEST1|F>0s

Edited by Miharaa (see edit history)
Link to comment
Share on other sites

bonjour,

 

le cdr1 (code d'erreur 1) s'affiche si la clé MAC générée par le module est différente de celle renvoyée par Desjardins.

 

Actuellement la clée est générée comme suit:

	private function generateHash($params)
	{
		return Tools::strtoupper(hash_hmac('sha1', $params['TPE'].'*'.$params['date'].'*'.$params['montant'].'*'.$params['reference'].'*'.
			$params['texte-libre'].'*'.$params['version'].'*'.$params['code-retour'].'*'.$params['cvx'].'*'.$params['vld'].'*'.
			$params['brand'].'*'.$params['status3ds'].'*'.$params['numauto'].'*'.$params['motifrefus'].'*'.$params['originecb'].'*'.
			$params['bincb'].'*'.$params['hpancb'].'*'.$params['ipclient'].'*'.$params['originetr'].'*'.$params['veres'].'*'.
			$params['pares'].'*', $this->desjardins->getKey()));
	}

A voir avec Desjardins s'ils utilisent toujours les mêmes valeurs pour le hashage de cette clé...

Link to comment
Share on other sites

Je ne connais pas exactement desjardins mais la solution monético est utilisé par le CM-CIC.
 
La signature hmac est calculée avec les champs dans l'ordre précis cité par Eolia, par contre  le champs version n'est pas renvoyé par le serveur monetico lui-même. Donc pas dans les paramètres POST. Les données du POST ne doivent pas être "ajusté" avant le calcul HMAC

Mon module force la valeur version pour le calcul hmac et ceci semble être conforme.
--> monetico_paiement_documentation_technique_v1_0.pdf page 18

/*
Pour calculer le MAC il faut utiliser une fonction de hachage cryptographique en combinaison
avec une clé secrète respectant les spécifications de la RFC 2104.
Cette fonction générera le sceau à partir de données à certifier et de la clé de sécurité
commerçant sous sa forme opérationnelle.
Les données à certifier seront présentées sous la forme d’une concaténation dans un ordre
précis des informations envoyées par le serveur de la banque :
<TPE>*<date>*<montant>*<reference>*<texte-libre>*3.0*<code-retour>*<cvx>*<vld>*
<brand>*<status3ds>*<numauto>*<motifrefus>*<originecb>*<bincb>*<hpancb>*<ipclient>*
<originetr>*<veres>*<pares>*
*/
Link to comment
Share on other sites

Bonjour et merci pour vos réponses !

 

 

On dirais que ta version de desjardins a été modifié. Le trace log de monetico/desjardins montre un champ texte-libre = 'TEST1 - SITE EN LIGNE'.

Mais le module d'origine normalement force cette valeur à texte-libre = 'Prestashop'.

 

En fait le "test1 - site en ligne" c'est quand j'ai fait un test de paiement via le terminal en ligne en version test...il y a un formulaire avec des champs pour identifier le paiement... j'ai identifié mes différents tests car les premiers que j'ai fait, mon site était sur un lien temporaire le temps que je le finisse, alors que sous le même domaine, mon autre site était ''au devant'' .... Hier j'ai fait pointé le IP vers mon nouveau site et c'est pourquoi j'ai identifié "site en ligne" ... car je croyais que c'était à cause de ça que la clé de retour ne fonctionnait pas...

 

J'ai même désinstallé et réinstaller le module afin d'être certaine qu'il n'y a pas un conflit ou autre....

 

 

 

 

Pour vérifier, vous êtes en multi-shop sur votre install?

 

Pouvez-vous vérifier ce que donne la requête:

select * from ps_configuration where name = 'DESJARDINS_VERSION'

Voici ce que j'ai trouvé dans le ps_config

 

543 NULL NULL DESJARDINS_VERSION 3.0 2016-01-08 12:09:32

2016-01-08 12:09:32

 

 

Merci de votre aide !!

Edited by Miharaa (see edit history)
Link to comment
Share on other sites

bonjour,

 

le cdr1 (code d'erreur 1) s'affiche si la clé MAC générée par le module est différente de celle renvoyée par Desjardins.

 

Actuellement la clée est générée comme suit:

	private function generateHash($params)
	{
		return Tools::strtoupper(hash_hmac('sha1', $params['TPE'].'*'.$params['date'].'*'.$params['montant'].'*'.$params['reference'].'*'.
			$params['texte-libre'].'*'.$params['version'].'*'.$params['code-retour'].'*'.$params['cvx'].'*'.$params['vld'].'*'.
			$params['brand'].'*'.$params['status3ds'].'*'.$params['numauto'].'*'.$params['motifrefus'].'*'.$params['originecb'].'*'.
			$params['bincb'].'*'.$params['hpancb'].'*'.$params['ipclient'].'*'.$params['originetr'].'*'.$params['veres'].'*'.
			$params['pares'].'*', $this->desjardins->getKey()));
	}

A voir avec Desjardins s'ils utilisent toujours les mêmes valeurs pour le hashage de cette clé...

private function generateHash($params)
	{
		return Tools::strtoupper(hash_hmac('sha1', $params['TPE'].'*'.$params['date'].'*'.$params['montant'].'*'.$params['reference'].'*'.
			$params['texte-libre'].'*'.$params['version'].'*'.$params['code-retour'].'*'.$params['cvx'].'*'.$params['vld'].'*'.
			$params['brand'].'*'.$params['status3ds'].'*'.$params['numauto'].'*'.$params['motifrefus'].'*'.$params['originecb'].'*'.
			$params['bincb'].'*'.$params['hpancb'].'*'.$params['ipclient'].'*'.$params['originetr'].'*'.$params['veres'].'*'.
			$params['pares'].'*', $this->desjardins->getKey()));

Je suis allé dans  desjardins/controllers/front/validation.php et j'ai trouvé ces lignes de codes... je les posts pour comparer si ce sont les mêmes

 

Apparemment tout est identique... je vais les rappeler pour voir s'ils ont toujours la même méthode de hashage comme disait Eolia...

 

Hier au service client le gars me disait "je suis pas un intégrateur c'est pas moi qui peut vous aider c'est prestashop"  .. mais bon d'un sens c'est eux qui ont décider de faire développer un module quoi... je peux pas croire qu'ils puissent pas m'aider....

Edited by Miharaa (see edit history)
Link to comment
Share on other sites

En fait ton log d'erreur n'est pas exploitable. Si la transaction revient signé avec 'Site de test' au lieu de 'Prestashop' la signature de la transaction sera invariablement fausse au sens Prestashop. Voici la procédure standard de mise en oeuvre d'un plateforme

 

  • Fait un groupe de client Test
  • Mets ton compte client Prestashop dans  ce groupe
  • Active le module (Module > Paiements) seulement pour ce groupe
  • Assure toi que le module est en mode test (sandbox)
  • En utilisant les cartes de crédit de test, passe 1 commandes valide avec les différents type de carte.
  • Les commandes doivent se créer, si oui appelle la ligne technique et demande la bascule en mode production.
  • Une fois le mode production, passe une commande de test avec ta VRAIE carte de crédit
  • Si tout va bien active le module pour les autres groupes

Maintenant tu signale avoir changé l'adresse IP, quel jour? quelle heure? Avais-tu baissé les TTL ?

 

Dans le checklist de mise en route quelles étapes as-tu faites, où exactement en est-tu rendu?

Link to comment
Share on other sites

En fait ton log d'erreur n'est pas exploitable. Si la transaction revient signé avec 'Site de test' au lieu de 'Prestashop' la signature de la transaction sera invariablement fausse au sens Prestashop. Voici la procédure standard de mise en oeuvre d'un plateforme

 

  • Fait un groupe de client Test
  • Mets ton compte client Prestashop dans  ce groupe
  • Active le module (Module > Paiements) seulement pour ce groupe
  • Assure toi que le module est en mode test (sandbox)
  • En utilisant les cartes de crédit de test, passe 1 commandes valide avec les différents type de carte.
  • Les commandes doivent se créer, si oui appelle la ligne technique et demande la bascule en mode production.
  • Une fois le mode production, passe une commande de test avec ta VRAIE carte de crédit
  • Si tout va bien active le module pour les autres groupes

Maintenant tu signale avoir changé l'adresse IP, quel jour? quelle heure? Avais-tu baissé les TTL ?

 

Dans le checklist de mise en route quelles étapes as-tu faites, où exactement en est-tu rendu?

 

Merci pour ton aide !

 

Je viens de rappeler desjardins... ils semblaient me dire que ce soit être un problème de "saut de page" ou une information qui est mal lue.... Je leur ai demandé aussi s'ils ont changé leur méthode de hashage et ils n'ont rien changé.

 

J'ai déinstallé le module, effacé le cache, réinstaller et rentré mes informations... ça ne fonctionne toujours pas....

 

Par contre quand tu dis d'activer le mode paiement...Le truc c'est que dans le module desjardins, ça dit seulement "activer le mode de production" mais au service client ils m'ont dit de le laisser à off, pour le moment du moins.

 

Et pour l'instant, tant qu'ils n'ont pas d'url de retour fonctionnel, ils ne veulent pas activer le mode production : x

 

Pour le IP, je l'ai changé hier matin (soit jeudi le 11 février vers 9h00AM, heure du québec) ... Mon nouveau site s'est mis en ligne environ une heure après...  .. pour les TTL... aucune idée j'ai laissé ce qui était là de base (1800) ...

 

Pour les étapes de mises en route euuuh... je ne savais pas qu'il y avait des étapes : D en fait je suis débutante j'ai tout monté le site par moi-même et appris via le web et forum... donc il y a forcément des choses que j'ignore que je n'ai pas faites : D mais bon j'ai passé en revue chaque option du back office et recheché les informations...

 

www.saveurssante.com

 

Il me reste à fignoler quelques trucs (pop-in entre autre... pcq là c'est laid et mal traduit : D)

 

Autrement pour en revenir à la méthode de paiement, notre ancien site était avec moneris, nous avons décidé d'aller vers desjardins puisque tous nos services y sont regroupés.. mais ma patronne m'a dit pour faire plus simple de simplement rester avec moneris... tant qu'à se casser la tête avec une chose qu'on a "déjà" ...

 

c'est relativement étourdissant un nouveau site en ligne ^^

Link to comment
Share on other sites

Jouer aux chaises musicales ne va pas t'aider

 

Active le module (Module > Paiements) seulement pour ce groupe

signifie aller dans Modules > Paiements depuis le menu et dans la liste il y a association groupe mode de paiement

 

 

 

Desjardins vient de te donner LA solution tu as un saut quelque part.

C'est soit un BOM (caractère invisible), soit une balise fermante  php (?>) avec un saut de ligne après

Tu vas devroir scruter tous tes fichiers pour trouver la source.

 

Tu parles de changer d'ip est-ce à dire que tu as transféré ton site ? Si oui comment? FTP? mode binaire?

 

Le coeur de PrestaShop ne contient pas nativement de caractère BOM ou saut après balise pour les code impliqué dans la validation.

Le thème de base non plus .

Regarde les modules impliqués dans les hooks sur validation de commande. c'est surement l'un d'eux si tu n'a rien fait d'autre.

Si tu as édité des fichiers toi-même 95% des outils microsoft fusillent les contenus en ajoutant des BOM et autres joyeusetés

 

Si tu me MP un accès ftp vers le site malade, pour que je le récupère je te passerais dessus un outils de nettoyage BOM et end-tag (?>).

 

PS: Je suis en france donc en décalage horaire

Edited by doekia (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...