IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

API magento dans windev


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 67
    Par défaut API magento dans windev
    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

    @++

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 447
    Par défaut
    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.

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 67
    Par défaut
    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

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 447
    Par défaut
    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:

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

    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:
    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)
    Tatayo.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 15
    Par défaut
    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 ?

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 447
    Par défaut
    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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ArticleDetail est un magentoservice.STcatalogProductReturnEntity.
    C'est cettte variable qui contiendra les données de l'article

    2. Te connecter au WebService:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sIdSession = MagentoService.login("TonLogin","TonModDePasse").
    La variable IdSession est importante, elle sera utilisé pour tous les appels au WebService

    3. Pour récupérer les données de l'article:
    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")
    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
    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
    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.

    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.

Discussions similaires

  1. Utiliser les APIs Orange dans Windev
    Par Orange Api Team dans le forum WinDev
    Réponses: 1
    Dernier message: 15/04/2010, 17h06
  2. Réponses: 3
    Dernier message: 28/02/2007, 15h39
  3. Erreur d'import d'une base Access dans WinDev
    Par freebsnet dans le forum Access
    Réponses: 3
    Dernier message: 21/02/2007, 09h40
  4. Réponses: 3
    Dernier message: 10/10/2006, 16h30
  5. Demande d'information pour ajout d'API Java dans eclipse
    Par BernardT dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 07/07/2005, 17h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo