Jump to content

Prestashop et application mobile


Recommended Posts

Je ne comprends pas :
- Tu veux que ton application communique avec prestashop ? (dans ce cas faut attendre la 1.4, ses webservices, et la documentation qui ne sera publiée qu'avec la 1.4 final)
- Tu veux utiliser le code prestashop comme moteur de ton application ecommerce ? je ne sais pas si l'ASE supportera les prérequis de prestashop

Link to comment
Share on other sites

Bon voilà ce que je demande: est-ce qu'il y a une possibilité d'appeler les fonctions déjà développées en presta dans mon application ?! Ma boutique presta est déjà en ligne. Ma mission est d'ajouter une application mobile complémentaire dont l'interface est similaire à celui de l'application web qui fonctionne déjà. J'ai pu faire la connexion avec la base via mon émulateur Android. Mais pour l'authentification par exemple je sais pas quoi faire car le mot de passe dans la base est chiffré, donc je doit connaitre le type de chiffrement: un de plusieurs problèmes. Quelqu'un a une idée svp?
Merci beaucoup

Link to comment
Share on other sites

Et bien alors je renouvelle donc mon conseil de base : attendre la 1.4 , ou créer toi même sur le presta déja en place les webservices dont ton appli android aura besoin.
Pour utiliser , mais seulement dans l'arborescence abritant presta, les classes et fonctions de ce dernier, deux choses en php sont impératives, ceci pour se placer dans l'environnement :

include('repertoire_racine/config/config.inc.php');
require_once('repertoire_racine/../../init.php');



La première ligne charge la config , notamment les données de connexion à la bdd

La deuxième , elle , initialise l'environnement.

A partir de là tu peux sur le serveur distant utiliser n'importe quel objet ou api de presta pour coder un web service.

Tu ne pourras pas techniquement utiliser directement ces classes et apis sur le mobile distant, avec ou sans mot de passe.

Pour ce qui est du cryptage du mot de passe, ce n'est pas si compliqué que ça en a l'air:

dans settings.inc.php existe un define de clé , unique et générée à l'install :

define('_COOKIE_KEY_','xxxxxxxxxxxxxxxxxxxxxxx')



Pour stocker un mot de passe, prestashop réalise une concaténation de cette clé puis du mot de passe , ex :

xxxxxxxxxxxxxxxxxxxxxxxMOTDEPASSE

puis fait un md5 de ça.

Pour la vérif il fait pareil et compare les valeurs cryptées.

Il existe un logiciel , Presta Widget , qui est fourni (gratuitement) , avec la partie presta (un module) qui sert de webservice. Ca peut te faire une bonne base de départ

Je ne connais pas le cahier des charges de l'appli que tu dois coder , mais bon courage.

Link to comment
Share on other sites

Merci beaucoup Broceliande surtout en ce qui concerne le mot de passe, ça marche bien maintenant: J'ai développé en android une fonction qui fait un md5 du mot de passe entré par l'utilisateur puis envoie le résultat vers un service web en utilisant httpPost. J'ai utilisé un fichier php contenant une requête select et qui envoie le résultat de la requête sous format json.
En ce qui concerne les 2 lignes que vous avez posté, ça serait parfait si je peux changer l'emplacement des éléments car il faut prendre en compte la taille de l'écran du mobile !
Merci encore

Link to comment
Share on other sites

Les deux lignes dont tu parles ne servent qu'à se placer dans l'environnement prestashop , et donc en utiliser les apis.
Il n'y a aucun aspect visuel.

Un exemple pour que tu comprennes : ton script distant qui récupère les données et les envoie en json .
J'imagine donc que tu n'as pas inclus ces deux lignes et que tu as du coder tes manips Bdd.
Si tu inclus ces lignes dans ton script, tu peux utiliser la classe Db de presta sans te soucier de la connexion ou de ses identifiants / password :


$sqlstring="select blah blah where blah blah etc...";
$monresultat = Db::getInstance()->ExecuteS($sqlstring);



Mais aussi utiliser les classes et leurs methodes sans meme passer par une requete , par ex tu veux tous les produits :

$products=Product::getProducts($id_lang, $start, $limit, $orderBy, $orderWay, $id_category, true)



idem pour les paniers, les commandes etc ....
Te placer dans l'environnement prestashop t'evite de réinventer la roue.

Link to comment
Share on other sites

Bon, j'ai cru qu'ils ont un aspect visuel car quand je visualise le fichier php dans le navigateur, il m'affiche le résultat du requête, mais il m'affiche aussi les tags, les catalogues,etc vus dans le site web. C'est pourquoi j'étais confuse :)
Merci beaucoup pour tes explications, mais j'ai encore un problème pour lire les données json dans mon code java.
En premier lieu j'ai utilisé ce fichier php et ça marche parfaitement:

<?php
     mysql_connect("localhost","root","xxxxx");
     mysql_select_db("presta");
     $q=mysql_query("SELECT id_category ,date_add FROM ps_category WHERE 
level_depth ='".$_REQUEST['level']."'");
     while($e=mysql_fetch_assoc($q))
             $output[]=$e;
          print(json_encode($output));    
?>


Je récupére le résultat dans un JsonArray puis je parcours cet array pour extraire les données.
Maitenant que j'ai inclus ces 2 lignes et modifié le fichier comme suit:

<?php
include(dirname(__FILE__).'/config/config.inc.php');
include(dirname(__FILE__).'/header.php');
     $q="SELECT id_category ,date_add FROM ps_category WHERE 
level_depth ='".$_REQUEST['level']."'";
$monresultat = Db::getInstance()->ExecuteS($q);
          print(json_encode($monresultat));  
?>


J'ai cet erreur sous android:
"error parsing data org.json.JSONException: Value Donc il y a un problème dans la récupération des données, je sais pas pourquoi !!
Merci encore de m'avoir prêter attention

Link to comment
Share on other sites

La réponse aux deux problèmes , visuel apparent et erreur json est absolument la même :
Si tu regardes quelques posts plus haut , je t'ai indiqué qu'il fallait inclure deux fichiers , (un include et un require_once de préférence d'ailleurs).

Si tu regarde ton code , l'un des deux fichiers n'est pas le bon ;)

Au passage header.php affiche déja une partie du site (laquelle ? lol)

essaye avec ça en copier coller au moins une fois pour éviter toute erreur :


<?php
/* environnement presta */
include(dirname(__FILE__).'/config/config.inc.php');
require_once(dirname(__FILE__).'/init.php');
/*                      */

$q="SELECT id_category ,date_add FROM ps_category WHERE level_depth ='".$_REQUEST['level']."'";

$monresultat = Db::getInstance()->ExecuteS($q);

print(json_encode($monresultat));  
?>

Link to comment
Share on other sites

Ensuite , tu peux tester la puissance de l'environnement presta sans aucune requete :

<?php
/* environnement presta */
include(dirname(__FILE__).'/config/config.inc.php');
require_once(dirname(__FILE__).'/init.php');

$categories = Category::getCategories(2, true, true); // 2 est l'id de la langue , tu peux le récupérer en post par ex si tu veux le faire varier

print(json_encode($categories));  
?>



Edit : note que là tu récupère toutes les catégories actives en une fois, dans une langue donnée.

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...