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 :

Windev et YouSign [WD22]


Sujet :

WinDev

  1. #1
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 730
    Par défaut Windev et YouSign
    Bonjour,

    Dans le cadre de l'évolution de nos applis, je suis amené à intégrer Yousign. J'ai commencé à chercher de la doc / des ressources mais ce n'est pas concluant. Pour l'instant, j'en suis à la récupération des utilisateurs. J'ai créé un compte de test chez Yousign (j'ai donc une ApiKey). Cela fonctionne lorsque j'utilise Postman (version web), mais pas lorsque je code ça dans Windev. C'est-à-dire que j'ai bien un json conteant les utilisateurs.
    Un peu de code :
    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
    restreq_Requete.URL = "https://staging-api.yousign.com" + "/users"
    restreq_Requete.Méthode = httpGet
    restreq_Requete..Entête["Authorization"] = "Bearer" + chn_APiKey
    restreq_Requete..Entête["content-type"] = "application/json"
     
    restrep_Reponse = RESTEnvoie(restreq_Requete)
    SI ErreurDétectée ALORS
    	Erreur(ErreurInfo(errMessage))
    SINON
    	chn_Résultat = pl_RenvoieChaineErreur(restrep_Reponse.CodeEtat)
    	SI chn_Résultat <> "" ALORS
    		Erreur("Erreur d'envoi sur YOUSIGN", chn_Résultat)
    	SINON
    		var_Réponse = JSONVersVariant(restrep_Reponse..Contenu)
    	FIN
    FIN
    J'obtiens toujours le CodeEtat 401 = The client passed in the invalid Auth token. Client should refresh the token and then try again.

    Je pense qu'il me manque qq chose au niveau de l'authentification. Si quelqu'un a des pistes, je suis preneur.

    Merci d'avance.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 11
    Par défaut
    Peut-être faut-il un espace entre "Bearer" et la clé ?

    Citation Envoyé par frenchsting Voir le message
    Bonjour,

    Dans le cadre de l'évolution de nos applis, je suis amené à intégrer Yousign. J'ai commencé à chercher de la doc / des ressources mais ce n'est pas concluant. Pour l'instant, j'en suis à la récupération des utilisateurs. J'ai créé un compte de test chez Yousign (j'ai donc une ApiKey). Cela fonctionne lorsque j'utilise Postman (version web), mais pas lorsque je code ça dans Windev. C'est-à-dire que j'ai bien un json conteant les utilisateurs.
    Un peu de code :
    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
    restreq_Requete.URL = "https://staging-api.yousign.com" + "/users"
    restreq_Requete.Méthode = httpGet
    restreq_Requete..Entête["Authorization"] = "Bearer" + chn_APiKey
    restreq_Requete..Entête["content-type"] = "application/json"
     
    restrep_Reponse = RESTEnvoie(restreq_Requete)
    SI ErreurDétectée ALORS
    	Erreur(ErreurInfo(errMessage))
    SINON
    	chn_Résultat = pl_RenvoieChaineErreur(restrep_Reponse.CodeEtat)
    	SI chn_Résultat <> "" ALORS
    		Erreur("Erreur d'envoi sur YOUSIGN", chn_Résultat)
    	SINON
    		var_Réponse = JSONVersVariant(restrep_Reponse..Contenu)
    	FIN
    FIN
    J'obtiens toujours le CodeEtat 401 = The client passed in the invalid Auth token. Client should refresh the token and then try again.

    Je pense qu'il me manque qq chose au niveau de l'authentification. Si quelqu'un a des pistes, je suis preneur.

    Merci d'avance.

  3. #3
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 730
    Par défaut
    Merci pour ton retour. Il y a bien un espace dans mon code.

    J'ai l'impression que les balises d'entête nécessaires ne sont pas vraiment bien expliquées dans la doc de YouSign.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2023
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2023
    Messages : 133
    Par défaut
    Bonjour frenchsting,
    J'interviens pour te transmettre ce lien si éventuellement tu ne l'as pas vu :

    https://forum.pcsoft.fr/fr-FR/pcsoft...awp?hl=YouSign

    Serais-tu dans le cas du formulaire (à partir du #13) ?
    Je ne peux rien de plus pour aider, c'est juste un coup de pouce au cas où.

    Cdlt

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    1 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 078
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    Bonjour,

    Dans le cadre de l'évolution de nos applis, je suis amené à intégrer Yousign. J'ai commencé à chercher de la doc / des ressources mais ce n'est pas concluant. Pour l'instant, j'en suis à la récupération des utilisateurs. J'ai créé un compte de test chez Yousign (j'ai donc une ApiKey). Cela fonctionne lorsque j'utilise Postman (version web), mais pas lorsque je code ça dans Windev. C'est-à-dire que j'ai bien un json conteant les utilisateurs.
    Un peu de code :
    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
    restreq_Requete.URL = "https://staging-api.yousign.com" + "/users"
    restreq_Requete.Méthode = httpGet
    restreq_Requete..Entête["Authorization"] = "Bearer" + chn_APiKey
    restreq_Requete..Entête["content-type"] = "application/json"
     
    restrep_Reponse = RESTEnvoie(restreq_Requete)
    SI ErreurDétectée ALORS
    	Erreur(ErreurInfo(errMessage))
    SINON
    	chn_Résultat = pl_RenvoieChaineErreur(restrep_Reponse.CodeEtat)
    	SI chn_Résultat <> "" ALORS
    		Erreur("Erreur d'envoi sur YOUSIGN", chn_Résultat)
    	SINON
    		var_Réponse = JSONVersVariant(restrep_Reponse..Contenu)
    	FIN
    FIN
    J'obtiens toujours le CodeEtat 401 = The client passed in the invalid Auth token. Client should refresh the token and then try again.

    Je pense qu'il me manque qq chose au niveau de l'authentification. Si quelqu'un a des pistes, je suis preneur.

    Merci d'avance.
    Je ne suis pas sûr que tu envois le bon token, c'est ce que te dit le message. Il faut que rafraichisses le token car le token que tu utilises est expiré. En tout cas c'est ce que je comprends de ton message d'erreur.
    Et effectivement il manque un espace après Bearer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    restreq_Requete..Entête["Authorization"] = "Bearer" + chn_APiKey
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    restreq_Requete..Entête["Authorization"] = "Bearer " + chn_APiKey

  6. #6
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 730
    Par défaut
    Bonjour,

    Ce que je disais, c'est que j'ai bien l'espace dans mon code. Il a été supprimé lorsque j'ai "adapté" mon code pour l'afficher ici.

    C'est bien l'API key qui est utilisée cf la doc et le bout de code C#
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var client = new HttpClient();
    var request = new HttpRequestMessage(HttpMethod.Get, "{{base-api-url}}/users");
    request.Headers.Add("Authorization", "Bearer {{your-api-key}}");
    var content = new StringContent(string.Empty);
    content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
    request.Content = content;
    var response = await client.SendAsync(request);
    response.EnsureSuccessStatusCode();
    Console.WriteLine(await response.Content.ReadAsStringAsync());
    J'ai également essayé en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    restreq_Requete..ContentType = "application/json"
    sans plus de succès

    [EDIT] Bon ben, comment avoir l'air ridicule... Comme rien ne fonctionnait, j'ai tellement bidouillé / coupé / copié / collé de différentes sources, que finalement, l'espace était bien manquant dans mon code.

    Merci de vos retours.

  7. #7
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    1 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 078
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    Bon ben, comment avoir l'air ridicule... Comme rien ne fonctionnait, j'ai tellement bidouillé / coupé / copié / collé de différentes sources, que finalement, l'espace était bien manquant dans mon code.
    Y'a que ceux qui ne font rien qui ne font pas d'erreur...

  8. #8
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 730
    Par défaut
    Bonjour,

    Revenu de vacances, je me remets (entre autres) à YouSign. Je suis passé à l'étape suivant : téléverser un fichier (et récupérer les infos retournées par l'API).
    Je me suis basé sur le code (C#) fourni dans la doc du site. Bien sûr, cela ne fonctionne pas... Un peu de code:
    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
    PROCEDURE pg_YouSign_Files(chn_NomFichier est une chaîne, chn_ContenuPDF est une chaîne)
    restreq_Requete est une httpRequête
    restrep_Reponse est une restRéponse
    chn_Résultat, chn_Json sont des chaînes
    var_Json est un Variant
     
    var_Json = [
    	{
    	"name": "%1",
    	"content": "%2",
    	}
    ]
     
    var_Json = Remplace(var_Json, RC, "")
    var_Json = ChaîneConstruit(var_Json, chn_NomFichier, chn_ContenuPDF)
    chn_Json = VariantVersJSON(var_Json)
     
    restreq_Requete..URL = gchn_AdresseYousign + "/files"
    restreq_Requete..Méthode = httpPost
    restreq_Requete..Entête["Authorization"] = "Bearer " + CST_Token
    restreq_Requete..ContentType = "application/json"
    restreq_Requete..Contenu = chn_Json
     
    restrep_Reponse = HTTPEnvoie(restreq_Requete)
    L'entête de l'erreur retournée est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    HTTP/1.1 400 Bad Request<RC>Access-Control-Allow-Origin: *<RC>
    Access-Control-Expose-Headers: X-Yousign-Pagination-TotalItems,X-Yousign-Pagination-Page-Last,X-Yousign-Pagination-Page-Current,X-Yousign-Error-Code<RC>
    Cache-Control: private, must-revalidate<RC>
    Content-Type: application/problem+json; charset=utf-8<RC>Date: Wed, 20 Aug 2025 15:42:05 GMT<RC>
    Expires: -1<RC>Pragma: no-cache<RC>X-Content-Type-Options: nosniff<RC>X-Frame-Options: deny<RC>Connection: close<RC>Transfer-Encoding: chunked<RC><RC>
    Le contenu de l'erreur retournée est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"type":"https:\/\/tools.ietf.org\/html\/rfc2616#section-10","title":"An error occurred","detail":"Invalid value provided (invalid IRI?)."}
    De ce que je comprends, il y a une valeur invalide. On a le choix entre le nom du fichier qui s'appelle "MonBeauPdfASigner.pdf" et le contenu du pdf qui est chargé de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Encode(fChargeBuffer("x:\DocumentPourYouSign.pdf"), encodeBASE64URL)
    J'ai essayé en changeant l'encodage en encodeBASE64, même souci.

    Si quelqu'un a une piste ou des ressources à me donner, je suis preneur.

    Merci d'avance

  9. #9
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 730
    Par défaut
    Bonjour,

    Je me réponds "partiellement" à moi-même : J'ai repris ce code. Il ne fonctionne pas en WD22 car il utilise une variable de type JSON.
    J'ai copié ce bout de code dans un projet WD27 et il fonctionne.
    Je l'ai modifié en remplaçant la variable JSON par ma chaîne :
    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
    sMonDoc est une chaîne = Encode(fChargeBuffer("X:\DocumentPourYouSign.pdf"), encodeBase64)
    MonJson["name"]	= "Mon document.pdf"
    MonJson["content"]	= sMonDoc
     
    chn_Json est une chaîne = [
    	{
    	"name": "%1",
    	"content": "%2",
    	}
    ]
     
    chn_Json	= ChaîneConstruit(v_chn_Json, "Mon document.pdf", sMonDoc)
     
    //cYSRequete.Contenu	= chn_Json
    cYSRequete.Contenu	= JSONVersChaîne(MonJson)
    cYSReponse			= RESTEnvoie(cYSRequete)
    Lorsque je mets un point d'arrêt sur la dernière ligne de ce code, je m'aperçois que le contenu des 2 chaînes n'est pas exactement le même. Ce qui correspond au contenu du PDF est différent. C'est de là que vient l'erreur.

    Arprès énormément de tests, j'ai changé le paramètre de la fonction encode(), en mettant encodeBASE64SansRC au lieu de encodeBase64. Le retour de l'appel à l'API est Ok en utilisant ma chaîne chn_Json. Sauf que ce paramètre n'existe pas en WD22...

    Si je ne trouve pas comment "corriger" la chaine encodée du pdf, je mettrai ce projet en WD27 et je ferai les appels depuis le projet principal (en WD22, donc)...

  10. #10
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    1 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 078
    Par défaut
    Tu peux remplacer les RC par une chaine vide ça devrait fonctionner. Je faisais ça fut un temps...

  11. #11
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 730
    Par défaut
    Merci pour le tuyau. J'avais testé sans succès. Enfin, c'est ce que je croyais...

    En fait, j'ai trouvé : c'est bien un souci de RC : il faut supprimer les RC de la chaîne JSON. Il faut faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    chn_ContenuPdfBase64 = Encode(fChargeBuffer("X:\DocumentPourYouSign.pdf"), encodeBASE64)
    chn_ContenuPdfBase64 = remplace(chn_ContenuPdfBase64, RC, "")
     
    chn_Json = [
    {
    "name": "%1",
    "content": "%2"
    }
    ]
    chn_Json = ChaîneConstruit(Remplace(chn_Json , RC, ""), chn_NomFichier, chn_ContenuPDF)
    Je pense que je vais enfin pouvoir avancer dans le schmilblick (désolé les jeunes, vous n'avez pas la réf).

    Merci à toi de t'être intéressé à mon souci.

  12. #12
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    1 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 078
    Par défaut
    De rien, Papy Mougeot est encore parmi nous...

  13. #13
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 721
    Par défaut
    Bonjour @frenchsting

    je sais le post clos et résolu.
    serait il possible de nous donner un résumé de la résolution ? faire un de tuto sur Yousign et Windev ?
    c'est une demande.

    Merci

  14. #14
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 730
    Par défaut
    Bonjour devalender,

    En temps normal, c'est ce que je ferais, sauf que je ne vais implémenter que 3 appels : users, files et procedure.

    Notre fonctionnement ne requiert pas de signature multiple. Il n'y aura vraisemblablement pas beaucoup d'autres fonctions appelées. 1 ou 2 tout au plus.

    Grosso modo, voici le fonctionnement que je vais utiliser
    1. On téléverse le fichier : files => Récupération de l'id de fichier chez YouSign
    2. Appel de procedure => on envoie l'id du fichier et l'identité du client qui reçoit un lien pour signer le fichier.

    0. Users : "vérification" des utilisateurs de notre société.

    Pour la syntaxe des appels, tu as un bon aperçu dans le code que j'ai mis dans ce fil de discussion.

  15. #15
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 730
    Par défaut
    Bonjour à tous,

    Trop content d'avoir terminé mon projet YouSign, ils m'informent que j'utilise la V2 de leur API mais qu'ils vont l'abandonner et qu'il faut passer à la V3.

    Je me dis que ça ne doit pas être bcp plus compliqué que la V2 mais qu'il va "juste" falloir changer le processus. En V2, on avait :
    1. Envoi du fichier => id dudit fichier
    2. Initiation de la procédure avec en paramètres, l'id du fichier, les positions des champs (qui doivent être saisis par le client) et les infos du clients => génère un envoi de mél au client qui va avoir un lien pour signer.
    3. Récupération du document signé.

    Maintenant, la V3:
    1. Initialisation de la requête de signature => id de requête
    2. Ajouter le document à la signature => id
    3. Ajouter le signataire (client) et les positions des champs (qui doivent être saisis par le client) avec l'id de requête => id du signataire
    4. Activation de la signature => le client va recevoir un mél pour signer
    5. Récupération du document signé.

    Si le premier point est assez identique à la V2, je suis en carafe sur le 2ème. Dans la V2, on encode le fichier en base 64 et on l'ajoute dans un JSON. Maintenant, c'est un envoi binaire "direct".
    L'envoi est censé être du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    --form 'file=@"/path/to/the/document/my_document.pdf"' \
    --form 'nature="signable_document"'
    Ils donnent des exemples en PHP/C++/C# et autres.

    Je me suis inspiré de pas mal de pages postées sur les forums mais sans succès : curl, l'utilisation des formulaires, le multipart selon PCSOFT (avec le test des codes mis dans les commentaires), l'utilisation de formulaires

    J'ai bien sûr suivi les exemples fournis, notamment celui en C++ : je génère une chaîne identique à celle attendue mais ça ne fonctionne pas.
    J'ai soit des retours 400 (il me dit qu'il manque nature et file) soit carrément un code 500 (oups, j'ai cassé le serveur)...

    J'ai bien sûr contacté le support qui m'a donné un code C# qui selon eux est fonctionnel : J'ai donné le code C# à un de mes prestas qui a écrit une DLL. En exécution, ça lui renvoie une erreur 403...

    L'idée : je dois envoyer un pdf avec des paramètres (?) nature et file.

    Est-ce que quelqu'un aurait des pistes à me donner ?

    Merci d'avance

  16. #16
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 730
    Par défaut
    Bonjour,

    J'ai du progrès. J'ai réussi à faire une requête avec PostMan. J'ai regardé les balises utilisées. Ce qui ressemble le plus, c'est que les balises Header iront dans l'entête de la requête (ça semble logique). Et les balises Body iront dans les paramètres. Ce qui donne :
    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
    CST_BOUNDARY = "; boundary="
    BoundaryValue = "---011000010111000001101001"
    maRequête..URL = AdresseYousignV3 + "signature_requests/" + IdRequete + "/documents"
    maRequête..Méthode = httpPost
    >>>maRequête..ContentType = typeMimeFormulaireMultiPartie + CST_BOUNDARY + BoundaryValue
    >>>maRequête..ContentType = "mulitpart/form-data" + CST_BOUNDARY + BoundaryValue
     
    maRequête..Entête["Authorization"]	= "Bearer " + TokenV3
    maRequête..Entête["accept"]		= "*/*"
    maRequête..Entête["accept-encoding"]= "gzip, deflate, br"
    maRequête..Contenu = ""
     
    HTTPCréeFormulaire("FORM")
    HTTPAjouteParamètre("FORM", "nature", "signable_document")
    HTTPAjouteFichier("FORM", "file", NomPdfASigner, maRequête.ContentType)
     
    maRep = HTTPEnvoieFormulaire("FORM", maRequête)
    J'ai mis un Boundary (délimiteur car dans PostMan, il en génère un au moment de l'exécution de la requête.

    Si je mets maRequête.ContentType = typeMimeFormulaireMultiPartie + CST_BOUNDARY + BoundaryValue alors j'ai une erreur 500 // Erreur serveur
    Si je mets maRequête.ContentType = "mulitpart/form-data" + CST_BOUNDARY + BoundaryValue alors, j'ai une erreur 415 // Unsupported data format / Format de données non supporté

    Je ne comprends pas cette histoire de Format de données non supporté. C'est un fichier PDF "normal". D'ailleurs, si j'exécute la requête Postman, il me renvoie un code 201 (succès) et le JSON avec les infos qui vont bien.

    Si vous avez des idées à partir de là, je prends.

  17. #17
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 730
    Par défaut
    Bonjour,

    Après avoir sué sang et eau comme on dit, j'ai trouvé la boulette. J'ai mal orthographié multipart (mutlipart dans le code du message précédent). Et maintenant, ça fonctionne bcp mieux. Et en simplifiant "à mort" le code, ça fonctionne aussi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    maRequête..URL = AdresseYousignV3 + "signature_requests/" + IdRequete + "/documents"
    maRequête..Méthode = httpPost
    maRequête..ContentType = "multipart/form-data"
     
    maRequête..Entête["Authorization"]	= "Bearer " + TokenV3
    maRequête..Contenu = ""
     
    HTTPCréeFormulaire("FORM")
    HTTPAjouteParamètre("FORM", "nature", "signable_document")
    HTTPAjouteFichier("FORM", "file", NomPdfASigner, maRequête.ContentType)
     
    maRep = HTTPEnvoieFormulaire("FORM", maRequête)
    Cela me renvoie bien un code 201 avec le JSON portant l'id du fichier chez YouSign.

    Allez hop, je me jette sur la suite

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Multicast et Windev
    Par eblaise dans le forum Développement
    Réponses: 2
    Dernier message: 08/06/2004, 09h31
  2. PB de tables créées sous Windev
    Par Reynald dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/04/2004, 10h22

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