THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Re

Et vlan pour le newbie smile_rougir.gif

C'est le plugin atos de thélia, si tu veux un fichier particulier pas de blème.

Offline


Le code ci-dessous de Atos.class.php devrait fonctionner. Le mail de confirmation est envoyé lorsque:

1) la banque renvoie la confirmation du paiement. C'est à dire que le script 'confirmation.php' (ou le nom que tu lui a donné) du plugin ATOS est appelé.

ATTENTION: Comme toujours, si quelque chose empêche la banque d'appeler ce script (.htaccess véreux, erreur sur le nom du script, etc...), la commande ne sera pas confirmée. Surveillez vos logs serveurs pour savoir si ce script est correctement appelé.


2) tu passe la facture à l'état 'payé' dans le B.O.

<?php

	include_once(realpath(dirname(__FILE__)) . "/../../../classes/PluginsPaiements.class.php");
	
	class Atos extends PluginsPaiements{

		function init(){
			$this->ajout_desc("CB", "CB", "", 1);
            rename("../client/plugins/atos/conf/htaccess", "../client/plugins/atos/conf/.htaccess");
	
		}

		function Atos(){
			$this->PluginsPaiements("atos");
		}
		
	
		function paiement($commande){

			header("Location: " . "client/plugins/atos/paiement.php");			
		}
		
        function mail($commande)
        {
            // Vide -> le mail est envoyé après confirmation
        }
                        
        function confirmation($commande)
        {
            parent::mail($commande);
        }
            
        function statut($commande)
        {
            if($commande->statut == 2)
            {
                parent::mail($commande);
            }
        }
	
	}

Inutile de recopier le code de mail(), on est dans un contexte objet, et un parent::mail() suffit. Un peu d'élégance, que diable !

Last edited by roadster31 (22-01-2010 15:55:29)


OpenStudio Toulouse

Offline


roadster31 navré pour les erreurs (ou surcharges) dans mon post, je ne maitrise rien du PHP...
Ton code ne semble pas avoir résolu mon souci, j'en conclu donc que je ne reçois pas correctement la confirmation de paiement de la banque (pour que le status passe en "payé"). J'en ignore la raison d'autant plus que le fichier logfile.txt reste désespérément vide ( /home/monsite/public_html/client/plugins/atos/log/logfile.txt ).

Comment donc savoir si la réponse de la banque se fait correctement si ce fichier logfile.txt n'indique rien ? (pour info mon .htaccess du dossier /conf est bien celui d'origine + CHMOD 777).

J'ai plus l'impression que cela vient de mes chemins dans mon fichier confirmation.php qui ne seraitent peut être pas valides :
   
$pathfile="pathfile=/home/monsite/public_html/client/plugins/atos/conf/pathfile";
$path_bin = "/home/monsite/public_html/client/plugins/atos/bin/response";
$logfile="/home/monsite/public_html/client/plugins/atos/log/logfile.txt";

y'a bon là ?

Offline


RE

Je sais que je suis pinailleur, il n'y a pas la balise de fermeture, mais aprés ce que vient de me chanter le client au téléphone ( smile_maltete.gif ), voila ce ça donnerais aprés modif
le fichier client>plugins>atos>Atos.class.php

<?php

	include_once(realpath(dirname(__FILE__)) . "/../../../classes/PluginsPaiements.class.php");
	
	class Atos extends PluginsPaiements{

		function init(){
			$this->ajout_desc("CB", "CB", "", 1);
            rename("../client/plugins/atos/conf/htaccess", "../client/plugins/atos/conf/.htaccess");
	
		}

		function Atos(){
			$this->PluginsPaiements("atos");
		}
		
	
		function paiement($commande){

			header("Location: " . "client/plugins/atos/paiement.php");			
		}
		
		function mail($commande)
        {
            // Vide -> le mail est envoyé après confirmation
        }
                        
        function confirmation($commande)
        {
            parent::mail($commande);
        }
            
        function statut($commande)
        {
            if($commande->statut == 2)
            {
                parent::mail($commande);
            }
        }
	}
?>

Si tu confirmes on peut mettre en place.

Last edited by griggione (22-01-2010 16:11:35)

Offline


Si tu confirmes on peut mettre en place.

Je confirme. Ce serait bien de tester (genre, sur un article à 0.01€...) et de nous dire si c'est OK.


OpenStudio Toulouse

Offline


RE

Je viens de recevoir le mail que se sera en production que lundi 10h, mais je teste quand même.
Je ne devrais pas recevoir le mail de confirmation de commande.

Offline


gzmo26 wrote:

y'a bon là ?

Je ne sais pas. Mais bon, les chemins relatifs qui y figurent d'origine doivent fonctionner.

Il faut que dans conf/parmcom.<ton id marchand> figure l'URL exacte de ta page de confirmation. Exemple:  Si ton site est http://www.jaimelesnouillesaujambon.com, et que le script confirmation.php a été renommée x1_v2b_4r5.php (la prudence impose de changer le nom de ce script), tu doit avoir:

AUTO_RESPONSE_URL!http://www.jaimelesnouillesaujambon.com/client/plugins/atos/x1_v2b_4r5.php!

Si tu penses que ta config est bonne, il faut investiguer plus avant. Contacte moi par mail.

Last edited by roadster31 (22-01-2010 16:59:07)


OpenStudio Toulouse

Offline


RE

Pas de mail de confirmation avec cette modif.
Je pense que beaucoup vont être heureux et que surement on retrouvera cette modif en natif dans la MàJ.

Merci roadster31 smile_top.gif

Offline


Roadster31
J'ai bien compris pour l'URL exacte de ma page de confirmation.php et le cas le chemin est correct (j'ai fait un essai de l'appeler directement dans le navigateur pour être certain) mais moi j'ai bien l'impression que ma page confirmation.php n'est jamais appelée durant le processus.
Je m'explique j'ai mis une fonction "alerte" dans cette dernière et rien en se passe (alors que j'ai fait la même chose sur la page paiement.php et j'ai bien mon message d'alerte)

<?php

   echo '<script language="Javascript">
   alert ("alerte confirmation" )
   </script>';

    include_once("../../../classes/Commande.class.php");   
    include_once("../../../fonctions/divers.php");   
   
    $commande = new Commande();
   
    // Récupération de la variable cryptée DATA
....

J'en conclu donc que cette page n'est jamais appelée ?
Mais pourquoi donc puisque dans conf/parmcom.014295303911111 j'ai bien l'url qui va bien :
AUTO_RESPONSE_URL!http://www.jepreferelesnouillesaufromage.com/client/plugins/atos/confirmation.php!

Argh ! c'est de la folie ce truc

Last edited by gzmo26 (23-01-2010 13:01:42)

Offline


Je m'explique j'ai mis une fonction "alerte" dans cette dernière et rien en se passe (alors que j'ai fait la même chose sur la page paiement.php et j'ai bien mon message d'alerte)

Tu ne verra jamais ton alert() pendant le processus de paiement, car c'est le serveur de la banque qui appelle ta page. La configuration de ton serveur et/ou les autorisations d'accès que tu as mis (ou non) en place empêche sans doute le serveur d'accéder à cette page.

Vérifie dans les logs de ton serveur HTTP, pour déterminer si un accès à la page configuration.php a été tenté par le serveur de la banque, et quel serait éventuellement le code d'erreur HTTP retourné.

Last edited by roadster31 (23-01-2010 13:11:02)


OpenStudio Toulouse

Offline


Merci de ta réponse, alors en fouillant dans mes logs du serveur je crois que j'y accède bien (enfin il me semble bien que je ne sache pas ce que veulent dire les chiffre "401" ) :

193.xx.xx.xx - - [23/Jan/2010:15:48:42 +0100] "POST /client/plugins/atos/confirmation.php HTTP/1.0" 401 401 "-" "-"

Pour les autorisations sur le plugin ATOS et tous les sous dossiers et fichiers => CHOMD 777

En même temps j'ai decelé une erreur dans mon chemin sur le fichier confirmation.php et paiement.php

je mettais :

/home/monsite/client/plugins/atos/conf/pathfile
Alors que le chemin réel est :
/home/monsite/public_html/client/plugins/atos/conf/pathfile

Malheureusement rien de mieux

Last edited by gzmo26 (23-01-2010 15:57:00)

Offline


HTTP 401: Unauthorized - Une authentification est nécessaire pour accéder à la ressource

L'accès au fichier confirmation.php est soumis à une authentification. L'accès au répertoire qui le contient est sans doute protégé par mot de passe. Si toi tu réussis a y accéder avec ton navigateur, c'est sans doute parce que tu t'es authentifié précédemment.

Vérifie le contenu de ton .htaccess (si tu utilises Apache).

Si tu veux que je fasse l'essai, envoie moi par mail l'URL de ton site.


OpenStudio Toulouse

Offline


Roadster31

Je confirme ca fonctionne maintenant !
Le statut passe correctement en "Payé" avec le plugin ATOS, j'ai galéré 3 jours dessus, un truc à devenir chèvre...

Tu avais bien compris le truc, c'est mon password qui bloquait tout !!
Merci encore pour pris le temps de répondre à mes questions.

Offline


Arf! ... la tuile, maintenant le statut passe bien en "payé" si la transaction passe correctement, mais le mail de confirmation par quand même, même si le statut passe sur "Non payé"... (j'ai pourtant bien repris le code que tu proposes juste en dessus RoadSter31)

Je comprends plus là ... normalement c'est le changement de statut qui fait partir le mail de confirmation non ?

Offline


Je me réponds :

en reprenant le code de patograso (dans ce topic) ca fonctionne à nouveau correctement. Pas compris pourquoi mais ca fonctionne...

Offline


Bonjour tout le monde,

J'utilise le plugin vads de Cyberplus Paiement, j'ai fais les modifications indiqués, tout fonctionne sauf pour bug très embêtant; tous les émails arrivent en double.

le client reçoit 2 fois la confirmation après paiement
le vendeur reçoit 2 fois la confirmation après paiement

D'après mes tests, le 1er email est envoyé une fois le paiement fait (sans erreur)
le 2ème email (doublon) est envoyé lors du retour à la boutique

Autre test, lorsque je passe le statut de la commande (manuellement), en payé, le mail est bien envoyé, mais sans doublon cette fois ci.

Le problème viendrait alors du retour boutique qui me génère un mail doublon ?
Mais comment corriger le problème ?

Je tourne depuis 2h sans résultat.

D'avance merci

Offline


D'après mes tests, le 1er email est envoyé une fois le paiement fait (sans erreur)
le 2ème email (doublon) est envoyé lors du retour à la boutique

Ta page confirmation.php est sans doute appelée 2 fois:
- une fois directement par le serveur de la banque lors de la confirmation du paiement
- une seconde fois par le navigateur de ton client lorsqu'il quitte la page de la banque.

Je suppose aussi que la valeur du paramètre "URL en cas de succès" dans le BO du plugin est http://adressedetonsite/client/plugins/vads/confirmation.php

Remplace là par http://adressedetonsite/merci.php (la page qui suit un paiement réussi), et tu ne devrais plus recevoir qu'un seul mail, et les commandes passeront bien en statut payé.

Last edited by roadster31 (14-04-2010 15:37:14)


OpenStudio Toulouse

Offline


Je ne dirai qu'une chose: "MERCI!"

Quelle communauté! Ca fait plaisir d'avoir de l'aide.

C'était la configuration de mon plugin qui n'allait pas:
"URL en cas de succès" : http://adressedetonsite/client/plugins/vads/confirmation.php

changé par : http://adressedetonsite/merci.php

Tout est en ordre maintenant.
Je reviens demain si j'ai des bugs avec pépale

Merci !

Offline


Re-bonjour,

Ca marche maintenant impeccable avec la CB, plugin vads.

Mais ça n'a pas l'air de marcher avec Paypal.
Après paiement, et retour à la boutique (merci.php), l'état du BO ne passe pas automatiquement en 'payé'
Et personne ne reçoit de mail, ni client, ni admin.

Question: faut-il mettre à jour le plugin CB vads + le plugin paypal pour que cela marche ? (C'est ce que j'ai fait aujourd'hui)

Faut-il configurer paypal (le site) d'une manière particulière ? Chez moi le mode est par défaut; les clients sont redirigés vers paypal, puis payent sur paypal, et sont invités à retourner sur la boutique, où ils arrivent sur la page merci.php.

j'en entendu parlé de sandbox sur le forum, mais je ne sais pas ce que c'est.
Est-ce lié ?

D'avance merci pour votre aide.

Offline


Alors, je me suis bien galéré mais tout à l'aire de marcher.

Pour cela, je suis passé par le nouveau plugin paypal (paypal2).

Il faut modifier après le paypal2.class.php, en faisant la méthode de ce Topic

Offline


Voxpax wrote:

Alors, je me suis bien galéré mais tout à l'aire de marcher.

Pour cela, je suis passé par le nouveau plugin paypal (paypal2).

Il faut modifier après le paypal2.class.php, en faisant la méthode de ce Topic

bonsoir,
ce serait possible de voir le code de ton fichier Paypal2.class.php  si cela est possible ?

merci d'avance

a+

Offline


Le voici:

<?php

/*************************************************************************************/

/*                                                                                   */

/*      Thelia	                                                            		 */

/*                                                                                   */

/*      Copyright (c) Octolys Development		                                     */

/*		email : thelia@octolys.fr		        	                             	 */

/*      web : http://www.octolys.fr						   							 */

/*                                                                                   */

/*      This program is free software; you can redistribute it and/or modify         */

/*      it under the terms of the GNU General Public License as published by         */

/*      the Free Software Foundation; either version 2 of the License, or            */

/*      (at your option) any later version.                                          */

/*                                                                                   */

/*      This program is distributed in the hope that it will be useful,              */

/*      but WITHOUT ANY WARRANTY; without even the implied warranty of               */

/*      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                */

/*      GNU General Public License for more details.                                 */

/*                                                                                   */

/*      You should have received a copy of the GNU General Public License            */

/*      along with this program; if not, write to the Free Software                  */

/*      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA    */

/*                                                                                   */

/*************************************************************************************/

?>
<?php

    include_once(realpath(dirname(__FILE__)) . "/../../../classes/PluginsPaiements.class.php");
    include_once(realpath(dirname(__FILE__)) . "/../../../classes/Message.class.php");
    include_once(realpath(dirname(__FILE__)) . "/../../../classes/Messagedesc.class.php");
    include_once(realpath(dirname(__FILE__)) . "/../../../classes/Client.class.php");
    include_once(realpath(dirname(__FILE__)) . "/../../../classes/Commande.class.php");
    include_once(realpath(dirname(__FILE__)) . "/../../../classes/Variable.class.php");

    
    class Paypal2 extends PluginsPaiements{

        function init(){
            
            $paypal2 = new Variable();
            if(! $paypal2->charger("paypal2")){
                $paypal2->nom = "paypal2";
                $paypal2->valeur = "";
                $paypal2->add();
            }
            $devise_paypal2 = new Variable();
            if(! $devise_paypal2->charger("devise_paypal2")){
                $devise_paypal2->nom = "devise_paypal2";
                $devise_paypal2->valeur = "";
                $devise_paypal2->add();
            }
            $code_langue_paypal2 = new Variable();
            if(! $code_langue_paypal2->charger("code_langue_paypal2")){
                $code_langue_paypal2->nom = "code_langue_paypal2";
                $code_langue_paypal2->valeur = "";
                $code_langue_paypal2->add();
            }
            $serveur2 = new Variable();
            if(! $serveur2->charger("serveur2")){
                $serveur2->nom = "serveur2";
                $serveur2->valeur = "";
                $serveur2->add();
            }
            $this->ajout_desc("Règlement via Paypal", "Paypal", "", 1);
        }
        
        function destroy(){
        
        }        

        function Paypal2(){
            $this->PluginsPaiements("Paypal2");
        }
        
        function mail($commande){
        }
        function confirmmail($commande){
//copié le contenu de la fonction mail du fichier classes/PluginsPaiements.class.php)
            $sujet=""; 
            $corps="";

            /* Message client */
            $msg = new Message();
            
            $msg->charger("mailconfirmcli");
            $msgdesc = new Messagedesc();                
            $msgdesc->charger($msg->id);
            $sujet = $this->substitmail($msgdesc->titre, $commande);
            
            $corps = $msgdesc->description;
            $corps = $this->substitmail($corps, $commande);
            $corpstext = $msgdesc->descriptiontext;
            $corpstext = $this->substitmail($corpstext,$commande);
            

            /* Message admin */
            $msg->charger("mailconfirmadm");
            $msgdesc = new Messagedesc();
            $msgdesc->charger($msg->id);
            $corps2 = $msgdesc->description;
        
            $emailcontact = new Variable();
            $emailcontact->charger("emailcontact");    
            $sujet2 = $this->substitmail($msgdesc->titre, $commande);
            $corps2 = $this->substitmail($corps2, $commande);
            $corpstext2 = $msgdesc->descriptiontext;
            $corpstext2 = $this->substitmail($corpstext2,$commande);
            

            $client = new Client();
            $client->charger_id($commande->client);
            
            $nomsite = new Variable();
            $nomsite->charger("nomsite");    
            
            
            //envoi du mail au client
            $mailclient = new Mail();
            $mailclient->IsMail();
            $mailclient->FromName = $nomsite->valeur;
            $mailclient->From = $emailcontact->valeur;
            $mailclient->Subject = $sujet;
            $mailclient->MsgHTML($corps);
            $mailclient->AltBody = $corpstext;
            $mailclient->AddAddress($client->email,$client->nom." ".$client->prenom);

            $mailclient->send();
            
            //envoi du mail a l'admin
            $mail = new Mail();
            $mail->IsMail();
            $mail->FromName = $nomsite->valeur;
            $mail->From = $emailcontact->valeur;
            $mail->Subject = $sujet2;
            $mail->MsgHTML($corps2);
            $mail->AltBody = $corpstext2;
            $mail->AddAddress($emailcontact->valeur,$nomsite->valeur);

            $mail->send();
            
        }  
            
      
        
        
        
        
    
        function paiement($commande){
            header("Location: " . "client/plugins/paypal2/paiement2.php");            
        }
    
    }

?>

Offline


merci Voxpax c'est sympa

Offline


Une version de Paypal2.class.php qui fonctionne sur 1.4.3.1.
Je crois que celle de Voxpax ne fonctionne plus.

<?php
/*************************************************************************************/
/*                                                                                   */
/*      Thelia	                                                            		 */
/*                                                                                   */
/*      Copyright (c) Octolys Development		                                     */
/*		email : thelia@octolys.fr		        	                             	 */
/*      web : http://www.octolys.fr						   							 */
/*                                                                                   */
/*      This program is free software; you can redistribute it and/or modify         */
/*      it under the terms of the GNU General Public License as published by         */
/*      the Free Software Foundation; either version 2 of the License, or            */
/*      (at your option) any later version.                                          */
/*                                                                                   */
/*      This program is distributed in the hope that it will be useful,              */
/*      but WITHOUT ANY WARRANTY; without even the implied warranty of               */
/*      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                */
/*      GNU General Public License for more details.                                 */
/*                                                                                   */
/*      You should have received a copy of the GNU General Public License            */
/*      along with this program; if not, write to the Free Software                  */
/*      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA    */
/*                                                                                   */
/*************************************************************************************/
?>
<?php

	include_once(realpath(dirname(__FILE__)) . "/../../../classes/PluginsPaiements.class.php");
	include_once(realpath(dirname(__FILE__)) . "/../../../classes/Message.class.php");
	include_once(realpath(dirname(__FILE__)) . "/../../../classes/Messagedesc.class.php");
	include_once(realpath(dirname(__FILE__)) . "/../../../classes/Client.class.php");
	include_once(realpath(dirname(__FILE__)) . "/../../../classes/Variable.class.php");
	include_once(realpath(dirname(__FILE__)) . "/../../../classes/Commande.class.php");
	
	class Paypal2 extends PluginsPaiements{

		function init(){
			
			$paypal2 = new Variable();
			if(! $paypal2->charger("paypal2")){
				$paypal2->nom = "paypal2";
				$paypal2->valeur = "";
				$paypal2->add();
			}
			$devise_paypal2 = new Variable();
			if(! $devise_paypal2->charger("devise_paypal2")){
				$devise_paypal2->nom = "devise_paypal2";
				$devise_paypal2->valeur = "";
				$devise_paypal2->add();
			}
			$code_langue_paypal2 = new Variable();
			if(! $code_langue_paypal2->charger("code_langue_paypal2")){
				$code_langue_paypal2->nom = "code_langue_paypal2";
				$code_langue_paypal2->valeur = "";
				$code_langue_paypal2->add();
			}
			$serveur2 = new Variable();
			if(! $serveur2->charger("serveur2")){
				$serveur2->nom = "serveur2";
				$serveur2->valeur = "";
				$serveur2->add();
			}
			$this->ajout_desc("Paypal", "Paypal", "", 1);
		}
		
		function destroy(){
		
		}		

		function Paypal2(){
			$this->PluginsPaiements("Paypal2");
		}
		
		function mail($commande){
		}
		
		function confirmmail($commande){
		$sujet=""; 
			$corps="";

			/* Message client */
			$msg = new Message();
			
			$msg->charger("mailconfirmcli");
			$msgdesc = new Messagedesc();                
			$msgdesc->charger($msg->id);
			$sujet = $this->substitmail($msgdesc->titre, $commande);
			
			$corps = $msgdesc->description;
			$corps = $this->substitmail($corps, $commande);
			$corpstext = $msgdesc->descriptiontext;
			$corpstext = $this->substitmail($corpstext,$commande);

			/* Message admin */
        	$msg->charger("mailconfirmadm");
        	$msgdesc = new Messagedesc();
        	$msgdesc->charger($msg->id);
			$corps2 = $msgdesc->description;
		
			$emailcontact = new Variable();
			$emailcontact->charger("emailcontact");	
			$sujet2 = $this->substitmail($msgdesc->titre, $commande);
			$corps2 = $this->substitmail($corps2, $commande);
			$corpstext2 = $msgdesc->descriptiontext;
			$corpstext2 = $this->substitmail($corpstext2,$commande);

			$client = new Client();
			$client->charger_id($commande->client);
			
			$nomsite = new Variable();
			$nomsite->charger("nomsite");	
			
			
			//envoi du mail au client
			$mailclient = new Mail();
			$mailclient->IsMail();
			$mailclient->FromName = $nomsite->valeur;
			$mailclient->From = $emailcontact->valeur;
			$mailclient->Subject = $sujet;
			$mailclient->MsgHTML($corps);
			$mailclient->AltBody = $corpstext;
			$mailclient->AddAddress($client->email,$client->nom." ".$client->prenom);

			$mailclient->send();
			
			//envoi du mail a l'admin
			$mail = new Mail();
			$mail->IsMail();
			$mail->FromName = $nomsite->valeur;
			$mail->From = $emailcontact->valeur;
			$mail->Subject = $sujet2;
			$mail->MsgHTML($corps2);
			$mail->AltBody = $corpstext2;
			$mail->AddAddress($emailcontact->valeur,$nomsite->valeur);

			$mail->send();
		}
		
		function confirmation($commande){
			$this->confirmmail($commande);
		}
		
		function paiement($commande){
			header("Location: " . "client/plugins/paypal2/paiement2.php");			
		}
	
	}

?>

Offline


manu wrote:

de plus depuis la 1.3.7 les sessions sont vidés une fois que le client arrive sur merci.php ou regret.php donc on peut encore utiliser les sessions dans le plugin.

Pour ceux avant la 1.3.7, trouver la ligne qui vide la sessions dans le plugin, l'effacer et mettre $reset=1 dans merci.php et regret.php

Bonjour,

Est-ce que quelqu'un saurait où trouver la "ligne qui vide la session" sur Thelia 1.3.4 ?
Ou au moins à quoi elle ressemblerai ?

Tout semble fonctionner pour moi avec le plugin Paypal, mais j'ai une erreur qui semble liée à la disparition de la session lors de la redirection vers Paypal et empêche l'envoi du mail de confirmation.

Merci d'avance.