Le fuseau horaire est UTC+2 heures




Publier un nouveau sujet Répondre au sujet  [ 7 message(s) ] 
 

Création d'un webservice sur Prestashop
Auteur Message
Message Publié : 03 Juin 2015, 11:24 
Debutant
Hors-ligne

Inscription : 23 Sep 2014, 12:14
Message(s) : 16
Bonjour à tous,

Dans le cadre du développement d'un site e-commerce Prestashop nous sommes amenés à réaliser un webservice pour l'un de nos sous-traitants. L'idée est de donner certaines informations à chaque commande pour qu'il puisse les récupérer et les traiter. (Détail de la commande et coordonnées de l'acheteur notamment)

Nous vendons des produits dématérialisés donc tout cela ne peut pas être géré par email (ce serait plus simple pour moi) mais par méthode POST pour automatiser le processus.

Voilà un bout de code envoyé par le prestataire lui-même pour me mettre sur la voie mais sorti du html/css je suis quelque peu perdu :

Code :
$URL = adresse url fournie par le sous-traitant
$methode = "POST"
$tabParam = tableau de donnée où la clé représente le nom de la variable.
Exemple $tabParam =array("numero_client"=>"I-12122")


class requeteHTTP
     {
         private $resultat;
         public function __construct($URL,$methode,$tabParam)
         {


             $keys=array_keys($tabParam);
             $chainePost="";
             for($i=0;$i<=count($keys)-1;$i++)
             {
             if($i!=0)
             {
$chainePost=$chainePost."&".$keys[$i]."=".$tabParam[$keys[$i]];
             }
             else
             {
                 $chainePost=$keys[$i]."=".$tabParam[$keys[$i]];
             }
             }

             $ch = curl_init($URL);
             //set the url, number of POST vars, POST data
             curl_setopt($ch, CURLOPT_URL, $URL);
             curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
             curl_setopt($ch, CURLOPT_POST,1);
             curl_setopt($ch, CURLOPT_POSTFIELDS,$chainePost);
             curl_setopt($ch, CURLOPT_FOLLOWLOCATION  ,1);
             curl_setopt($ch, CURLOPT_HEADER      ,0);
             // DO NOT RETURN HTTP HEADERS
             curl_setopt($ch, CURLOPT_RETURNTRANSFER  ,1);
             // RETURN THE CONTENTS OF THE CALL
             //execute post
             $resultat = curl_exec($ch);
             //close connection
             curl_close($ch);

             $this->resultat=$resultat;
         }

         public function getResultat()
         {
             return $this->resultat;
         }


     }


J'imagine qu'il faudra appeler certains champs de la base de données, avez-vous une idée des "parties" à modifier pour renvoyer les informations des commandes ?

Merci d'avance :)


Haut
 Profil  
Répondre en citant  

Re: Création d'un webservice sur Prestashop
Message Publié : 03 Juin 2015, 13:10 
Expert
Avatar de l’utilisateur
Hors-ligne

Inscription : 09 Nov 2009, 21:23
Message(s) : 2016
Localisation : Lorraine
Bonjour,

d'arpès le code y a rien à "modifier", faut juste extraire, les formater en array puis après lors de l'initialisation de l'objet il suffit de lui donner les paramètres.

Code :
/* fonction qui recup les infos en BDD et formate le tout dans le bon format */
$envoie_sout_traitant = new requeteHTTP($url, 'POST', $tabParam);
$resultat = $envoie_sout_traitant->getResultat();


Petite remarque, dans le code donné "$methode" est inutile dans le sens ou il est pas utilisé par la class (c'est codé en dure dedans...), ensuite envoyer des infos client sur le net sans passer par un tunnel TLS (aka HTTPS) pour moi c'est à la limite de l'acceptable pour un site de e-commerce, je crois pas que vos client soit content que vous envoyer leur infos à votre sous-traitant de manière à ce que la moindre personne qui intercepte le flux arrive à le lire.

C'est comme envoyer une lettre confidentiel dans une enveloppe transparente en espérant que le facteur ne regarde pas c'est quoi.

Cordialement, janus57

_________________
Image


Haut
 Profil  
Répondre en citant  

Re: Création d'un webservice sur Prestashop
Message Publié : 03 Juin 2015, 17:13 
Debutant
Hors-ligne

Inscription : 23 Sep 2014, 12:14
Message(s) : 16
Merci beaucoup pour votre réactivité, j'essaye de comprendre le fonctionnement n'étant pas du tout familiarisé avec le php. (noob)

Pour extraire les données, dois-je procéder ainsi et continuer pour chaque champ que je souhaite ajouter au service ?
(ps_customer est la table contenant les infos des clients dans la BDD)

Code :
$id_customer = mysql_query("SELECT id_customer from ps_customer where active ='1' ");
$lastname = mysql_query("SELECT lastname from ps_customer where active ='1' ");
 ...

$URL = adresse url fournie par le sous-traitant
$methode = "POST"
$tabParam = array (
    'numero_client' => '$id_customer',
    'nom_client' => '$lastname',
...
   );


Haut
 Profil  
Répondre en citant  

Re: Création d'un webservice sur Prestashop
Message Publié : 03 Juin 2015, 17:26 
Expert
Avatar de l’utilisateur
Hors-ligne

Inscription : 09 Nov 2009, 21:23
Message(s) : 2016
Localisation : Lorraine
Bonjour,

je pense qu'il y a beaucoup plus simple, malheureusement je ne connais pas la structure de prestashop, cependant si aucun module ne peu modifier la structure de la table "ps_customer" je peu regarder de mon côté.

Cordialement, janus57

_________________
Image


Haut
 Profil  
Répondre en citant  

Re: Création d'un webservice sur Prestashop
Message Publié : 03 Juin 2015, 17:39 
Debutant
Hors-ligne

Inscription : 23 Sep 2014, 12:14
Message(s) : 16
Cela ne me dérange pas de procéder de la sorte si tout fonctionne à la fin :roll:

Mais j'avance à tâtons sans être certain d'aller dans la bonne direction. L'exercice ne me semble pas si compliqué, mais sans maîtriser le langage php c'est forcément plus laborieux.


Haut
 Profil  
Répondre en citant  

Re: Création d'un webservice sur Prestashop
Message Publié : 03 Juin 2015, 18:43 
Expert
Avatar de l’utilisateur
Hors-ligne

Inscription : 09 Nov 2009, 21:23
Message(s) : 2016
Localisation : Lorraine
Bonjour,

oui cela fonctionnera à la fin mais cela risque de manger trop de ressources et ne sera pas évolutif (dans le sens ou les fonctions mysql_* sont obsolètes et ne doivent plus être utilisé).

Après comme dit suffit juste de me donner la structure de la table ainsi que des informations à envoyé et je peu donner un exemple de code.

Cordialement, janus57

_________________
Image


Haut
 Profil  
Répondre en citant  

Re: Création d'un webservice sur Prestashop
Message Publié : 04 Juin 2015, 11:28 
Debutant
Hors-ligne

Inscription : 23 Sep 2014, 12:14
Message(s) : 16
Bonjour,

Ah très bien !

En fait il me faudrait les champs :
lastname / firstname / company / email - dans la table ps_customer
address1 / address2 / postcode / city - dans la table ps_address
La clé reliant les deux tables est id_customer

product_name / product_price (type float) - dans la table ps_order_detail
id_customer est présent dans la table ps_orders et cette dernière peut être liée à ps_order_detail par la clé id_order

Il faudrait indiquer si le client est assujetti à la TVA type Enum 'O' ou 'N' (je pense qu'une requête si company = 'NULL' alors 'N' devrait être suffisante)

Et enfin le premier mois de renouvellement (nous vendons des abonnements) format année et mois AAMM.
Si c'est possible, récupérer invoice_date dans la table ps_orders et ajouter + 1 mois cependant le format de la date est le suivant dans la table : 2015-05-29 16:11:36

Merci de l'aide que vous pourrez m'apporter.


Haut
 Profil  
Répondre en citant  

Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 7 message(s) ] 

Le fuseau horaire est UTC+2 heures


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Recherche de :
Aller vers :  
cron
Thème par Easy-Hébergement
Powered by phpBB © 2000, 2002, 2005, 2007, 2011 phpBB Group
Traduit en français par Maël Soucaze.