EXEC_REST_WS et format JSON

SUGGESTED

Bonjour,

Nous travaillons avec Paytweak pour la gestion de liens de paiements. ils proposent une API REST pour générer directement les liens de paiements sans passer par leur portail.

Je souhaite utiliser cette API via X3 (V12) en utilisant la fonction EXEC_REST_WS. tout fonctionnement bien pour la connexion et la récupération du token d'authentification mais le problème se corse lorsqu'il s'agit d'envoyer des données en methode POST (ou en GET d'ailleurs). les paramètres passés en PCOD/PVAL ou SDATA ne sont pas vus par l'API qui n'accepte prend pas le JSON pour les data. Le support technique me dit que les données doivent être au format form-data... 

Quelqu'un peut-il m'apporter des informations / suggestions ? 

Merci à tous

Fabrice

Parents
  • 0
    SUGGESTED

    Bonjour,

    Votre appel de webservice fonctionne hors X3 avec SoapUi ou postman ? J'ai toujours commencé à valider mes appels hors X3 pour m'affranchir de cette couche là.

    Pour le token d'identification, personnellement j'avais été bloqué par la longueur du token d'authentification OKTA qui m'avait obligé à basculer sur la fonction X3 ASYRRESTCLI.EXEC_REST_WSCLB au lieu de EXEC_REST_WS.

    Comme indiqué dans mon autre post (mais vous l'avez vu donc cela ne doit pas vous aider :(  [X3V12 2021R2] Appel Webservice REST avec identification OAUTH2 (header trop court) via ASYRRESTCLI.EXEC_REST_WS  ), voici les paramètres que j'ai utilisé avec le format JSON pour l'en-tête et les données ensuite au format JSON : 

    HEAD='{"Accept-Charset":"UTF-8","Accept":"application/json","content-type":"application/json","Authorization":"Bearer '+TOKEN+'","Keep-Alive":"timeout=1","Accepts-Version":"V1"}'

    DATA(1)='{"requestedBy": "DT17115","product": {"serialNumbers": [{"original": true,"printed": true,"serialNumber": "1DATF2VTTMM000003","serialType": "DE-17"},'
    DATA(2)='{"original": false, "printed": false, "serialNumber": "DATF2VT000003", "serialType": "DE-13"}], "material": "DA19500", "materialType": "Detailed Machine Code",'
    DATA(3)='"modelYear": "2022", "manufactureDate": "2022-03-23", "manufactureYear": "2022", "manufactureUnit": "DA00"}}'

    Je ne sais pas si cela peut vous aider ...

  • 0 in reply to Damien THOMAS

    Bonjour, oui l'ai lu avec attention vos différents post ! ;)

    Concernant l'appel hors X3, oui ça fonctionne bien en php (wrapper fourni par l'éditeur de l'API) et avec postman également.

    le problème se situe a priori au niveau du format des données. Pas de soucis pour les paramètres HEADERS contenant le token. c'est sur les PARAMS et/ou SDATA que ça coince. en effet l'API n'accepte pas que c'est info soit en JSON. il faut du "form-data".

    Ce qui est curieux c'est que l'API accepte bien le JSON pour le HEADERS...

    En fait je me demandais s'il y avait moyen d'intervenir sur le formatage de SDATA dans l'appel à EXEC_REST_WS.

    Merci

  • 0 in reply to FFOST

    Je redécouvre un peu ce que j'ai fait il y a plusieurs années donc ne suis pas d'une grande aide.

    A la relecture des messages je me pose quand même la question sur la possibilité de modifier le format de SDATA dans EXEC_REST_WS mais j'ai l'impression que EXEC_REST_WSCLB accepte elle bien le format JSON. Vous avez essayé avec cette seconde fonction ?

  • 0 in reply to Damien THOMAS

    pardon, je me suis mal exprimé. en fait c'est le fournisseur de l'API (paytweak en l'occurrence) qui n'accepte pas les données en JSON. ils veulent du form-data (format équivalent aux données postées depuis une formulaire web)

    les fonctions WS et WSCLB sont similaires en effet. il me semble même (en débogage via eclipse) que EXEC_REST_WS appelle la fonction EXEC_RESTWSCLB après avoir formater les différents paramètres.

    Pas grave, mais merci quand même pour votre implication ;)

  • 0 in reply to FFOST

    Bonjour,
    Je n'ai jamais réussi à faire fonctionner le EXEC_REST_WSCLB  avec autre chose que du Json Brut
    Le form-data ou le form-urlencoded ne semble pas fonctionnel dans X3

Reply Children
No Data