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
@++
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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), 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'article
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 WebService
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Partager