OVH Community, votre nouvel espace communautaire.

Problème d'execution script php SOAP API


emmanuel25
31/01/2013, 11h10
Bonjour,

Script assez unique … pas tant que ça.
En tant qu'utilisateur Hiboutik, j'ai reçu le même par mail quand j'ai expliqué que je voulais synchroniser mon stock avec celui de prestashop.

Chez nous, ça fonctionne avec https, d'ailleurs le certificat est ok avec le fichier wsdl que tu essaies de récupérer:
https://saspaniclope.hiboutik.com/api/?wsdl

As tu vérifié les versions de tes librairies du coté de php et openssl?

Il y a eu pas mal de vulnérabilités avec openssl ces dernières années et il est tout à fait plausible que ton client utilise une version SSL différente de celle de leur serveur.

Sur notre serveur, nous avons la 1.0.1c et ça fonctionne bien avec https …

a+

paniclope-admin
30/01/2013, 23h58
J'ai pas voulu donner la réponse, pour 3 points.. :
-J'avais décider de procéder autrement pour ma gestion des stocks.
-Je viens seulement de trouver la solution au problème
-Je pensais pas que ça pourrait aider grand monde, étant donné que mon script est assez unique.
Ce que je veux dire par là, c'est qu'il n'y a pas grand monde qui fonctionne avec Hiboutik.. et que mon script à la base est fait pour mettre en relation mon stock Hiboutik et mon stock Prestashop. J'ai posté sur le forum, pour que quelqu'un de connaisseur, et qui a une bonne analyse algorithmique puisse me répondre. Et non dans le but d'aider la communauté. C'est peut être égoïste mais sur des sujets assez particulier comme le miens, je vois pas trop qui ça peut aider..
Bref, ceci étant dis, le problème viendrais de la ligne :
Code:
$client = new SoapClient("https://$hiboutik_account.hiboutik.com/api/?wsdl", $options);
Il faut juste enlever le "S" de "HTTP". Etant donné que le site hiboutik.com n'utilise pas d'authentification SSL pour la connexion de ses hôtes..
Peut être ça pourra aider quelqu'un mais je suis assez septique...

Bonne soirée

Gaston_Phone
30/01/2013, 19h14
Citation Envoyé par paniclope-admin
Problème résolu
Information importante et très détaillée qui permettra, j'en suis certain, aux autres personnes qui on les mêmes soucis que toi, de résoudre rapidement leur problème.

paniclope-admin
30/01/2013, 16h44
Problème résolu ! Merci de fermer ce TOPIC!

Nous avons supprimé ce script !

paniclope-admin
30/01/2013, 15h43
Bonjour à tous,

j'ai créé un script PHP, qui me permet de mettre à jour ma base de donnée prestashop, et qui m'ajoute des quantités à mes produits.
Cela me permet d'avoir en continue mes produits en stock à jour.
Mes stocks sont géré par un logiciel de caisse en ligne "Hiboutik".
J'ai ainsi fait correspondre les 2 tables Prestashop avec la table hiboutik correspondant aux produits.
Hiboutik dispose d'une API permettant de faire tout ça.

Voici mon script:
Code PHP:
/*
##########################################################
//ici les valeurs à modifier selon votre base et votre compte hiboutik
##########################################################
*/
$mysql_host "mysql**-**.bdb";
$mysql_user "********";
$mysql_pass "*******";
$mysql_db "********";

$hiboutik_account "saspaniclope";
$hiboutik_login "**********";
$hiboutik_pass "*********";


$en_verbose 1;


/*
##########################################################
//ion se connecte à la base
##########################################################
*/
$mysqli mysqli_connect($mysql_host$mysql_user$mysql_pass$mysql_db);
if (
mysqli_connect_errno($mysqli)) {
    echo 
"Echec lors de la connexion à MySQL : " mysqli_connect_error();
}
$mysqli->set_charset("utf8");


/*
##########################################################
//ion se connecte à l'API Hiboutik
##########################################################
*/

ini_set("soap.wsdl_cache_enabled""0");
try
{
$options = array("trace" => true);
$client = new SoapClient("https://$hiboutik_account.hiboutik.com/api/?wsdl"$options);
$session $client->login("$hiboutik_login""$hiboutik_pass""fr");

/*
##########################################################
//ici pour les produits sans déclinaisons
##########################################################
*/
$sql_produits_prestashop "SELECT * FROM pss_product WHERE reference <> '';";
$result_produits_prestashop mysqli_query ($mysqli"$sql_produits_prestashop");
$nombreligne_produits_prestashop $result_produits_prestashop->num_rows;
while (
$row $result_produits_prestashop->fetch_array(MYSQLI_BOTH))
{
$mon_id_produit_prestashop "" $row["reference"] . "";

//via l'api on récupère le stock dispo sur Hiboutik
$recupere_stock_produit $client->productGetStockTotal($session$mon_id_produit_prestashop);

//maintenant on va faire la mise à jour qui va bien dans la table prestashop
$ma_requete_modif_produit "UPDATE pss_product SET quantity = '$recupere_stock_produit' WHERE reference = '$mon_id_produit_prestashop';";
$mysql_query_modif_account mysqli_query ($mysqli"$ma_requete_modif_produit");
if (
$en_verbose == "1") print("$ma_requete_modif_produit");
}
$result_produits_prestashop->free();


/*
##########################################################
//ici pour les produits avec des déclinaisons
##########################################################
*/
$sql_produits_prestashop "SELECT * FROM pss_product_attribute WHERE reference <> '';";
$result_produits_prestashop mysqli_query ($mysqli"$sql_produits_prestashop");
$nombreligne_produits_prestashop $result_produits_prestashop->num_rows;
while (
$row $result_produits_prestashop->fetch_array(MYSQLI_BOTH))
{
$mon_id_produit_prestashop "" $row["reference"] . "";

//via l'api on récupère le stock dispo sur Hiboutik
$recupere_stock_produit $client->productGetStockTotal($session$mon_id_produit_prestashop);

//maintenant on va faire la mise à jour qui va bien dans la table prestashop
$ma_requete_modif_produit "UPDATE pss_product_attribute SET quantity = '$recupere_stock_produit' WHERE reference = '$mon_id_produit_prestashop';";
$mysql_query_modif_account mysqli_query ($mysqli"$ma_requete_modif_produit");
if (
$en_verbose == "1") print("$ma_requete_modif_produit");
}
$result_produits_prestashop->free();

$client->logout($session);
}
catch (
SoapFault $exception)
{
echo 
$exception;
}

?>
Voici l'erreur que ça m'affiche quand je l’exécute:
Code:
SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://saspaniclope.hiboutik.com/api/?wsdl' : failed to load external entity "https://saspaniclope.hiboutik.com/api/?wsdl" in /homez.87/paniclop/www/hiboutik.php:42 Stack trace: #0 /homez.87/paniclop/www/hiboutik.php(42): SoapClient->SoapClient('https://saspani...', Array) #1 {main}
Cette erreur est disponible à l’adresse suivante: http://www.paniclope.fr/hiboutik.php

Je n'arrive pas a résoudre ce problème et encore moins à comprendre d'ou il vient. Surtout que le script fonctionnait il y'a encore quelques jours..
D'après quelques recherches sur le net, ce serait un problème au niveau de l'hébergement lorsque le script load le wsdl.

Merci de votre aide.