Bonsoir,
J'aurais voulu savoir si certain(e)s d'entre vous ont déjà utilisés l'API magento dans windev et si cela est plutôt simple à mettre en oeuvre ;)
Merci
@++
Version imprimable
Bonsoir,
J'aurais voulu savoir si certain(e)s d'entre vous ont déjà utilisés l'API magento dans windev et si cela est plutôt simple à mettre en oeuvre ;)
Merci
@++
Bonjour,
Si tu parles des WebServices de la version 1.4 de Magento, alors oui, je l'utilise dans l'un de mes projets.
En l'intégrant "à l'ancienne", et en générant une collection de procédure, Windev crée automatiquement toutes les structures nécessaires pour exploiter ce WebService.
Les temps de réponses ne sont pas terribles, mais malgré quelques incohérences c'est assez simple à utiliser.
Tatayo.
Salut,
Merci pour ta réponse. En revanche, en regardant un peu, j'ai l'impression qu'il n'est pas simple d'utiliser les structures imbriquées utilisées pour les paramètres d'appels.
Par exemple le type : catalogProductAttributeMediaCreateEntity
qui contient un second niveau au niveau du file
Comment as-tu géré cela ?
Merci ;)
En fait c'est bien plus simple qu'il n'y parait: Windev s'occupe de (presque) tout.
J'ai une classe qui s'occupe de mettre à jour les articles sur Magento, et justement puisque tu parles de catalogProductAttributeMediaCreateEntity, voici la méthode qui met à jour les images:
Comme tu le vois, le code est bien plus simple qu'il n'y parait quand on intègre le WebService, et les structures imbriquées sont un vrai bonheur.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 sListeTypes est une chaîne = "image,small_image,thumbnail" sContenuImage est une chaîne MediaCreation est un STcatalogProductAttributeMediaCreateEntity MediaInfo est un STcatalogProductImageEntity bTrouve est un booléen = Faux sNomFicTemp est une chaîne = "FichierCrypte.txt" sRangExport est une chaîne sListeRepertoire est une chaîne sNomRepertoire est une chaîne sListeRepertoire = "j:\Base_Image,j:\Base_Image_annexe" SI :m_sProductId <> "" ALORS POUR TOUTE CHAINE sNomRepertoire DE sListeRepertoire SEPAREE PAR "," SI PAS bTrouve ALORS SI fFichierExiste(sNomRepertoire + sNomFic) ALORS sNomFic = sNomRepertoire + sNomFic bTrouve = Vrai FIN FIN FIN // J'ai trouvé une image qui correspond SI bTrouve ALORS SI Dimension(:ListeMedia:m_catalogProductImageEntityArray) = 0 ALORS // Je charge la liste des images :ListeMedia = MagentoService.catalogProductAttributeMediaList(::mg_sIdSession, :m_sCodeUvc,"","sku") FIN fCrypte(sNomFic,sNomFicTemp,"",crypteAucun,encodeBASE64) sContenuImage = fChargeTexte(sNomFicTemp) sRangExport = Majuscule(Remplace(ExtraitChaîne(sNomFic,2,"-"),".jpg","",SansCasse)) MediaCreation:m_exclude = "0" MediaCreation:m_label = "" MediaCreation:m_remove = "0" SI EstNumérique(sRangExport) OU sRangExport = "A" ALORS Dimension(MediaCreation:m_types:m_ArrayOfString,3) MediaCreation:m_types:m_ArrayOfString[1] = "image" MediaCreation:m_types:m_ArrayOfString[2] = "small_image" MediaCreation:m_types:m_ArrayOfString[3] = "thumbnail" FIN MediaCreation:m_file:m_content = sContenuImage MediaCreation:m_file:m_name = fExtraitChemin(sNomFic,fFichier+fExtension) MediaCreation:m_file:m_mime = "image/jpeg" bTrouve = Faux POUR TOUT MediaInfo DE :ListeMedia:m_catalogProductImageEntityArray SI Position(MediaInfo:m_file,MediaCreation:m_file:m_name,0,SansCasse+DepuisFin) <> 0 ALORS MagentoService.catalogProductAttributeMediaRemove(::mg_sIdSession,:m_sCodeUvc,MediaInfo:m_file,"sku") bTrouve = Vrai FIN FIN MagentoService.catalogProductAttributeMediaCreate(::mg_sIdSession, :m_sCodeUvc,MediaCreation,"0","sku") fSupprime(sNomFicTemp) FIN FIN
Pour la récupération des commandes, c'est aussi simple: il suffit de récupérer la commande avec SalesOrderInfo(), qui te renvoie un salesOrderEntity. Cette structure contient un tableau de SalesOrderItemEntity: les lignes de la commande.
Pour lire le contenu de la commande, il suffit donc de déclarer une variable de type SalesOrderItemEntity, et de faire une boucle Pour Tout:
Tatayo.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Filtre est un STfilters Resultat est un STsalesOrderEntityArray Commande est un STsalesOrderEntity LigneCommande est un STsalesOrderItemEntity CommandeComplete est un STsalesOrderEntity sIdSession est une chaîne Historique est un STsalesOrderStatusHistoryEntity Dimension(Filtre:m_filter:m_associativeArray,1) Filtre:m_filter:m_associativeArray[1]:m_key = "order_id" Filtre:m_filter:m_associativeArray[1]:m_value = "24485" sIdSession = MagentoService.login("xxxxx","xxxxx") Resultat = MagentoService.salesOrderList(sIdSession,Filtre) POUR TOUT Commande DE Resultat:m_salesOrderEntityArray CommandeComplete = MagentoService.salesOrderInfo(sIdSession,Commande:m_increment_id) SI CommandeComplete:m_state <> "canceled" ALORS Trace(CommandeComplete:m_increment_id,CommandeComplete:m_order_id,CommandeComplete:m_customer_firstname,CommandeComplete:m_customer_lastname,CommandeComplete:m_status,CommandeComplete:m_state,CommandeComplete:m_created_at,CommandeComplete:m_updated_at,CommandeComplete:m_shipping_method) Trace("Réglement : ",CommandeComplete:m_payment:m_cc_type + "_" + CommandeComplete:m_payment:m_method,CommandeComplete:m_payment:m_po_number,CommandeComplete:m_payment:m_amount_ordered,CommandeComplete:m_payment:m_base_amount_ordered,CommandeComplete:m_payment:m_cc_last4,CommandeComplete:m_payment:m_cc_number_enc,CommandeComplete:m_payment:m_po_number,CommandeComplete:m_payment:m_created_at,CommandeComplete:m_payment:m_updated_at) POUR TOUT LigneCommande DE CommandeComplete:m_items:m_salesOrderItemEntityArray Trace(LigneCommande:m_sku,LigneCommande:m_qty_ordered,LigneCommande:m_base_price,LigneCommande:m_row_total,LigneCommande:m_tax_amount,LigneCommande:m_base_discount_amount) FIN POUR TOUT Historique DE CommandeComplete:m_status_history:m_salesOrderStatusHistoryEntityArray Trace(Historique:m_updated_at,Historique:m_status,Historique:m_created_at,Historique:m_is_customer_notified) FIN FIN Trace("================") FIN MagentoService.endSession(sIdSession)
Bonjour j'essaye désespérément de me connecter magento avec windev15 pour consulter la liste de mes nouveaux produit et je n'y arrives pas
je voudrais faire une fenêtre qui accède au infos des nouveaux produits de mon site magento
pouvez vous me donner des infos sur la procédure cote magento et windev
avez vous des exemples que je pourrais utiliser pour faire des test merci d'avance
Pourrais tu me dire la procédure que tu utilise pour te connecter sur l'api, utilises tu soap ?
Bonjour,
Pour le côté Magento, aucune idée vu que ce n'est pas moi qui m'occupe de nos sites Web. Je ne prends en charge que la partie "applicative", qui fait communiquer notre base de données avec les sites Magento.
Pour me connecter à Magento (version 1.4.kekchose :aie:), j'utilise l'API SOAP version 2, que j'ai intégré "à l'ancienne" en demandant à Windev de générer une collection de procédure.
Pour récupérer les informations d'un article, il te faut:
1. Déclarer une variable de type STcatalogProductReturnEntity:
C'est cettte variable qui contiendra les données de l'articleCode:
1
2 ArticleDetail est un magentoservice.STcatalogProductReturnEntity.
2. Te connecter au WebService:
La variable IdSession est importante, elle sera utilisé pour tous les appels au WebServiceCode:
1
2 sIdSession = MagentoService.login("TonLogin","TonModDePasse").
3. Pour récupérer les données de l'article:
La variable sCodeUvc contient l'identifiant de ton article, 0 est le numéro du StoreView de Magento, attributs contient la liste des attributs que tu veux récupérer. Je la renseigne ainsi:Code:
1
2
3 Attributs est un STcatalogProductRequestAttributes ArticleDetail = MagentoService.catalogProductInfo(sIdSession,sCodeUvc,"0",:Attributs,"sku")
Et voilà, tu as les infos de ton article. Et pour avoir la liste des articles, tu peux utiliser catalogProductList. Par contre je ne sais pas si tu peux ne récupérer que les nouveaux articles.Code:
1
2
3
4
5
6 sListeAttributs est une chaîne = "name,description,short_description,weight,status,url_key,url_path,visibility,has_options,gift_message_available,price,special_price,special_from_date,special_to_date,tax_class_id,websites,category_ids,website_ids,meta_title,meta_keyword,meta_description,custom_design,custom_layout_update,options_container" Dimension(:Attributs:m_attributes:m_ArrayOfString,ChaîneOccurrence(sListeAttributs,",") + 1) POUR nIndice = 1 _A_ ChaîneOccurrence(sListeAttributs,",") + 1 Attributs:m_attributes:m_ArrayOfString[nIndice] = ExtraitChaîne(sListeAttributs,nIndice,",") FIN
Dernière petite chose, si ça fonctionne en version 15 de Windev, je ne suis pas sûr que ça marche avec la 14, et je sais que ça ne fonctionne pas du tout avec les versions antérieures.
Tatayo.
Bonjour merci pour le post ci dessus mais j'aurais 2autres petites question ( Je n'ai jamais utiliser sopa :))
1- Quel est la procedure de connexion a soap et comment on rapatrie la collection de procedure ????
<ue j'ai intégré "à l'ancienne" en demandant à Windev de générer une collection de procédure.>
comment tu fais ?????
2- vous utiliser soapexecute ???
3- quel est l'url por magento car jai essayer http://youmagentohost/api/soap/?wsdl) mais ça ne marche pas
pouvez vous mettre un exemple merci d'avance car je comprend pas le mode d'interface entre windev et magento
merci
Alors dans l'ordre:
Atelier => WebService => importer un Webservice. Il faut par contre cocher la case "Importer en mode compatible version 14".
Ca fonctionne peut-être sans, mais comme j'ai besoin de surcharger la fonction "erreur" de Windev pour trapper les messages d'erreur, j'en ai besoin.
Ensuite il faut indiquer à Windev que c'est un WebService Soap générique, et qu'il faut créer une collection de procédure.
Moi non, mais c'est intégré dans la collection de procédure générée par Windev.
http://AdresseDuSite/index.php/api/v2_soap/index?wsdl
C'est déjà fait, j'ai posté quelques exemples avec des explications...
Tatayo.
a l'importation du webservice j'ai le fichier obtenu n'est pas un fichier de description de webservice valide wsdl
avez vous une idee
quelle est votre version de magento ??
Là je ne sais pas, ce n'est pas moi qui m'occupe des sites Internet. Est-ce que le fichier est bien affiché quand tu le récupères dans un navigateur ? Si ce n'est pas le cas il faut peut-être voir avec un forum dédié à Magento...
:whistle:
Tatayo.
avec le lien suivant j'ai une erreur
http://AdresseDuSite/index.php/api/v2_soap/index?wsdl
par contre ça importe avec ce lien
http://www.monsite.fr/index.php/api/soap/index?wsdl
mais il manque des procédure a première vue avez vous une idee
apres l'import j'ai anyType type inconnu dans les erreur et STFixedArray type inconu
moi j'ai ça comme procédure apres import et vous ???
call
endsession
globalfaults
login
multicall
resourcefaults
resources
startsession
et 2 variable stfixedarray et
si c'est ok apres on fais quoi ???
si le lien est bon il resemble a quoi le fichier ????
moi j'ai pas ce type dans les procedure STcatalogProductReturnEntity
c'est vous qui l'avais créer ????
Je dirai que tu as importé l'API en version 1, la version 2 m'a généré 84 procédure publiques et au moins le double de procédures privées...
Si le lien est bon le fichier ressemble à un fichier xml, avec la description des procédures et des types de données.
Si le lien que je t'ai donné ne fonctionne pas, il faut peut-être installer la nouvelle version, mais là je ne peux pas t'aider...
Tatayo.
j'ai enfin trouve la bonne collection de procedure v2
comment faire un test simple pour savoir si la connexion login password marche ??
j'ai fais ça sur un bouton et quand je clique ça renvois rien
MagentoService.login("comptedetestapi","password")
info(MagentoService.login("comptedetestapi","password"))
??
1 j'importe l apiV2 avec mon login et password magento api
Je crée un bouton et je met
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 ArticleDetail est un magentoservice.STcatalogProductReturnEntity sIdSession est une chaine sIdSession = MagentoService.login("TonLogin","TonModDePasse Attributs est un STcatalogProductRequestAttributes ArticleDetail = MagentoService.catalogProductInfo(sIdSession,sCodeUvc,"0",:Attributs,"sku") sListeAttributs est une chaîne = "name,description,short_description,weight,status,url_key,url_path,visibility,has_options,gift_message_available,price,special_price,special_from_date,special_to_date,tax_class_id,websites,category_ids,website_ids,meta_title,meta_keyword,meta_description,custom_design,custom_layout_update,options_container" Dimension(:Attributs:m_attributes:m_ArrayOfString,ChaîneOccurrence(sListeAttributs,",") + 1) POUR nIndice = 1 _A_ ChaîneOccurrence(sListeAttributs,",") + 1 Attributs:m_attributes:m_ArrayOfString[nIndice] = ExtraitChaîne(sListeAttributs,nIndice,",") FIN
c'est bien ça
et je clique le bouton ? le resultat c'est quoi ???
je narrive pas a etablir la connexion
Erreur à la ligne 23 du traitement Procédure globale login.
La fonction SOAPDonneRésultat aurait dû renvoyer une valeur.
problème réglé voir detail solution installation soap sur serveur
Pour le premier message, tu as bon mais dans le désordre. L'affectation de la structure attributs sert à indiquer au WebService quels attributs doivent être renvoyés. Si tu affectes cette structure APRES l'appel au WebService, elle ne sert plus à grand chose...
Après pour ton problème de connexion, je ne peux pas t'aider, il faut regarder dans les logs du serveur si tu peux en trouver la raison.
Tatayo.
comme ça alors
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 ArticleDetail est un magentoservice.STcatalogProductReturnEntity Attributs est un STcatalogProductRequestAttributes ArticleDetail = MagentoService.catalogProductInfo(sIdSession,sCodeUvc,"0",:Attributs,"sku") sListeAttributs est une chaîne = "name,description,short_description,weight,status,url_key,url_path,visibility,has_options,gift_message_available,price,special_price,special_from_date,special_to_date,tax_class_id,websites,category_ids,website_ids,meta_title,meta_keyword,meta_description,custom_design,custom_layout_update,options_container" Dimension(:Attributs:m_attributes:m_ArrayOfString,ChaîneOccurrence(sListeAttributs,",") + 1) POUR nIndice = 1 _A_ ChaîneOccurrence(sListeAttributs,",") + 1 Attributs:m_attributes:m_ArrayOfString[nIndice] = ExtraitChaîne(sListeAttributs,nIndice,",") FIN sIdSession est une chaine sIdSession = MagentoService.login("TonLogin","TonModDePasse
Le problème etais du coté serveur je vous donne la solution ça devrais aider tous le monde
les serveur dédie chez OVH centos inclus php5 mais pas l'extension client serveur soap
pour installer l'extension php soap voici la procédure
yum clean all
yum install php-soap
et la ça marche nickel
code du bouton
le résultat est une fenêtre avec le N° de sessionCode:
1
2
3
4 sIdSession est une chaîne sIdSession = MagentoService.login("login utilisateur webservice magento","password utilisateur webservice magento") Info( MagentoService.login("test","azerty"))
merci a toi pour ton aide précieuse