PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2025 → Woocommerce API REST
Woocommerce API REST
Débuté par Valentin B., 29 déc. 2024 22:01 - 1 réponse
Posté le 29 décembre 2024 - 22:01
Bonjour,
J'essaye depuis plusieurs jours d'effectuer une requête API sur mon site wordpress utilisant woocommerce.
J'ai généré les keys API dans les paramètres, tout fonctionne sur Postman mais quand j'essaye dans WD Mobile je fais face à différentes erreurs selon la syntaxe que j'utilise.
Ce code me renvoie une erreur 400.

cMaRequête est un httpRequête

cMaRequête.URL = "http://mon-site.com/wp-json/wc/v3/products/880"

cMaRequête.Method = "GET"


cIdentifiants est une chaîne = "consumer_key:consumer_password"
cIdentifiantsBase64 est une chaîne = Encode(cIdentifiants, encodeBASE64)
cMaRequête.Entête["Authorization"] = "Basic " +cIdentifiantsBase64

cMaRequête.Entête["Accept"] = "application/json"
cMaRequête.Entête["Content-Type"] = "application/json"
// Envoyer la requête et obtenir la réponse
cMaReponse est un httpRéponse = HTTPEnvoie(cMaRequête)
SI ErreurDétectée ALORS
Erreur(ErreurInfo(errComplet))
SINON
SI cMaReponse.StatusCode = 200 ALORS
cMaDonneesVar est une Variant
cMaDonneesVar = JSONVersVariant(cMaReponse.Contenu)
Info(cMaDonneesVar)
SINON
Info(cMaReponse.StatusCode)
FIN
FIN

J'ai regardé une bonne partie des sujets récents concernant woocommerce, restapi et autres sur le forum, j'ai vu la LST 127 qui avait un exemple mais Legacy API n'est plus utilisé pour woocommerce. Si quelqu'un a une solution miracle je suis preneur.

Pour précision j'utilise Windev Mobile 2024.

Cordialement,

Valentin
Posté le 02 janvier 2025 - 09:27
Bonjour Valentin,

de mon côté je me suis interfacé cette année avec la partie carte cadeau de woocommerce (pw-gift-cards), je ne sais pas si exactement les mêmes spécs mais au cas où ça puisse t'aider :

Procedure CARTE_CADEAU_Rest_Lecture_Numéro(LOCAL sID_Carte_Cadeau est une chaîne, stCarteCadeauRéponse est un STGet_CARTE_CADEAU_Réponse) :chaîne

sRetour est une chaîne = ""

SI PAS :Get_Param_OK() ALORS
RENVOYER "Paramétrage incomplet pour contacter la plateforme internet de la carte cadeau !"
FIN

maRestEnvoi est une restRequête
maRestRéponse est un restRéponse

SI sRetour = "" ALORS

sURL est une chaîne = :gsAPI_URL + ["/"] + "pw-gift-cards"
// Je construit ma requête
maRestEnvoi.URL = sURL + "?number=" + sID_Carte_Cadeau
maRestEnvoi.Méthode = httpGet
maRestEnvoi.MotDePasse = :gsAPI_Clé_Secrète
maRestEnvoi.Utilisateur = :gsAPI_Clé_Client
maRestEnvoi.TimeOutConnexion = 10s
maRestEnvoi.DuréeNonRéponse = 10s
// J'envoie ma requête
maRestRéponse = RESTEnvoie(maRestEnvoi)
// Si erreur quelconque ou échec j'intercepte
SI ErreurDétectée ALORS
sRetour = "Impossible de contacter la plateforme des cartes cadeaux : " +RC+ ErreurInfo(errComplet)
FIN
SI maRestRéponse.CodeEtat <> "200" ALORS
sRetour = maRestRéponse.CodeEtat + " : " + maRestRéponse.DescriptionCodeEtat
FIN
FIN
// Si je n'ai pas eu de problème jusque là je vais lire ma réponse selon le format JSON de l'API
SI sRetour = "" ALORS
bufRéponse est un Buffer = maRestRéponse.Contenu

tabCarteCadeauRéponse est un tableau de STGet_CARTE_CADEAU_Réponse
QUAND EXCEPTIONEXCEPTION DANS
Désérialise(tabCarteCadeauRéponse, bufRéponse, psdJSON)
FAIRE
sRetour = ErreurInfo(errMessage)
FIN
FIN
// Si pas d'erreur mais aucune carte cadeau renvoyée
SI sRetour = "" ALORS
SI tabCarteCadeauRéponse..Vide ALORS
sRetour = "Carte cadeau " + sID_Carte_Cadeau + " inconnue de la plateforme internet !"
FIN
FIN
// Si pas d'erreur je peux récupérer ma carte cadeau renvoyée par l'API
SI sRetour = "" ALORS
stCarteCadeauRéponse = tabCarteCadeauRéponse[1]
SI tabCarteCadeauRéponse[1].Number DANS ("", Null, "NULL", "0") ALORS
sRetour = "Carte cadeau " + sID_Carte_Cadeau + " inconnue de la plateforme internet !"
FIN
FIN

// Je renvoi mon retour : vide = OK
RENVOYER sRetour