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

Langage PHP Discussion :

comment récupérer les données renvoyées par un site distant suite à un envoi de formulaire


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    496
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 496
    Points : 123
    Points
    123
    Par défaut comment récupérer les données renvoyées par un site distant suite à un envoi de formulaire
    Bonjour

    Pour obtenir un "token d’accès" je dois procéder à un appel POST sur l’URL https://api.helloasso.com/oauth2/token.

    Pour faire un appel POST je dois utiliser un formulaire ? avec comme action l'adresse de l'URL ? et comme méthode POST ?
    dans le formulaire je mets 3 inputs avec "client_id" avec mon clientid obtenu sur mon compte hello asso, ainsi que le "client_secret" et "grant_type"="client_credentials".

    Ceci apparemment fonctionne car je vois bien les données renvoyés sur mon navigateur au format JSON!

    comment récupérer ces données qui apparaissent sur le navigateur

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 240
    Points : 15 542
    Points
    15 542
    Par défaut
    vous vous êtes basé sur la documentation qui est là ?
    https://api.helloasso.com/v5/swagger/ui/index

    pour la discussion avec l'API, vous avez besoin de vous connecter pour faire quoi par la suite ?

  3. #3
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    496
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 496
    Points : 123
    Points
    123
    Par défaut
    Bonjour

    Non j'ai suivi le lien https://drive.google.com/file/d/1Smz...ew?usp=sharing qui est le document dans le lien que vous indiquez

    Déjà je ne sais pas comment récupérer les données renvoyées par HelloAsso
    Exemple de réponse :
    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
    { "access_token":
    "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiNDMwOGNjODliMDE0ZWE0OTVhOWM4YmQwMzAxNGZiNCIsI
    mNwcyI6WyJBY2Nlc3NGdWxsRGbiIsIkZvcm1EaXJF0YSIsIkFjY2Vzc0ludGVybmFsRGF0YSIsIkFjY2VzcRhdGEiLCJBY2Nl
    c3NUcmFuc2FjdGlvbnMiLCJDYXJ0TWFuYWdlbWVudCIsIkNoZWNrb3V0IiwiQ3V0T3BlcmF0aW9ucyIsIkZvcm1BZG1plY3
    RvcnkiLCJHcmFudFBhc3N3b3JkQ3JlZGVudGlhbHMiLCJHcmFudFNpZ25VcCIsIk1haW50ZW5hbT3BlcmF0aW9ucyIsIk9yZ
    2FuaXNtRGlyZWN0b3J5IiwiTmNl3JnYW5pemF0aW9uQWRtaW4iLCJPcmdhbml6YXRpb25QcmVTaWduVXAiLCJQYXltZ
    W50T3BlcmF0aW9ucyIsIlBlcmZvcm1QYXltZW50Il0sIm5iZiI6MTYyODA2O1B1YmxpY0DkwNiwiZXhwIjoxNjI4MDcwNzA2L
    CJpc3MiOiJodHRwczovL2FwaS5oZWxsb2Fzc28tZGV2LmNvbSIsImF1ZCI6IjIzNGZkYzdkNDY1NTQxMjM4NGFkMmE5NW
    RmYjA1OWMyIn0.2-5zYorDXUIuedLXRchUhKMVc6bMxHsny9DbfrDMPhAGORes8-Bj7VSPFWKTFDt8Kk2ZrYpi0PmIG9w
    PtghYi9aER-blV1odglSNgfdNYKcm5Oj_MdRF9xrFHmc_wp0E7qJRIoAH43YLXGvhfq6--agIrZ3l5cOFSn-iasce9qKnlmoJ1P
    S9J273icWxZ2yI4OQ5glKcHakLf9DXkut7ZXpyWJO1PScyLM3VvKTvHpVbupvYBe7WL4qo7odqRLWpPNG-cTjAxVA9oGho
    CaAr6aVMAdqp5mAG78f_uV5PCA7Gc4VyVdIJLxZYHDhYVAsFeEkZ4MYoG0ixV4x7VA6NBw",
    "token_type": "bearer",
    "expires_in": 1799,
    "refresh_token": "
    vT8Hf3vQ8WodXl6CbJKwE9rZeb-eJ8bOXY3wrIquaLgW41GTBRDn9AIRy49OTvIrol5Z3JANHju1po1ogF9FGBHi589rIx2cb
    wYPbfYPsTzCHxhinfIS9kR6etbxd34R2r5GNndCy2YUUGwoJfx51QU0hGUll7r-LY6ZvgYXvfJezDRJMy5deFTB1kjl9ldAGs-e
    _PbULaROSKeSrk56Y8KhXvj-DUmHbGtjLS6vt_HUnAvFetcSG520_savae55ogPERzFvoOe54hedLs4Ta7qkfgDwoTJTu6ZF
    hBJT0VFyt2fsmtZq2WJkh9IQrR9JWNKlv3WSStISSqpx7ja-bhMecrp3L-flz02bnqyLYLrQBTqil5ClUeKs3J9iOXcQ1B8YvEbkY
    5lrmLA8S85VguOGM-fRibQBJm8kC-rUthm1Yf2zqUJRLjZuBuEBogGfLWQXg8N8csOnqhtG__VWd1UVCir8hp0iTEIraT2D
    mqK1rDx5q4Tk5FwYtoD3Mgm4GaVlY nQ5IahE8AQwXVairiytFLtEFSqK3chkqqRLtsDbtvtkX2rEdkITEJe9HxVjSPDMBQ" }
    en fait je voudrai suivre la documentation de l'API checkout de HelloAsso https://drive.google.com/file/d/1oFc...Tq5NLPIEI/view
    Objectif
    L’objectif est de permettre aux contributeurs d’effectuer des paiements sur une page
    d’encaissement (Checkout) en intégration avec une plateforme partenaire.
    Cette intégration est possible sous les conditions suivantes :
    ● Obtention d’un client API auprès d’HelloAsso (Id et Secret)
    ● Récupération de tokens d’accès à l’API v5 via le client API
    ● Initialisation d’une demande d’encaissement
    ● La redirection vers la page d’encaissement
    ● Gestion des retours HelloAsso par le partenaire
    ● L’intégration d’une notification permettant de confirmer le paiement (une URL doit nous être
    communiquée pour intégration).
    La documentation de notre API v5 est disponible ici : https://api.helloasso.com/v5/
    donc la première chose que j'essaie
    ● Récupération de tokens d’accès à l’API v5 via le client API
    mais je ne sais programmer qu'en php ( pas de curl, je ne sais pas ce que c'est).

    Il me faudrait un exemple.

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 240
    Points : 15 542
    Points
    15 542
    Par défaut
    curl est un client http qui permet de faire des requetes http dans le code php.
    regardez les exemples sur cette page :
    https://www.php.net/manual/fr/function.curl-exec.php

  5. #5
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    496
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 496
    Points : 123
    Points
    123
    Par défaut
    Non je ne veux plus m'investir dans d'autres langages pour l'instant j'en ai assez, je ne suis un pro et je voudrai faire tourner mon association et le site, je ne veux pas trop me disperser!

    si vous pouvez m'aider pour m'explique ce que je dois envoyer et comment recevoir les données.

  6. #6
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    496
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 496
    Points : 123
    Points
    123
    Par défaut
    Bien obligé de m'y plonger!

    J'ai créé des requêtes Curl .
    J'arrive bien à obtenir le "token" mais je n'arrive pas à effectuer un paiement.
    je mets le code avec des * sur le données de l'association.

    j'aimerai savoir si la syntaxe est bonne pour la partie paiement car pour avoir le token c'est bon!
    ICI le résultat est toujours un message retour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    résultat Array
    (
        [message] => L’autorisation a été refusée pour cette demande.
    )

    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
    //données pour obtenir un token
    $postData = http_build_query(
        array(
            'client_id' => "*********************",  //fourni sur le compte de l'association par helloAsso
            'client_secret' => "*********************",
    		'grant_type' => "client_credentials"
        )
    );
    //récupération du token:
     $opts = array('http' => array(
    							'method' => 'POST',
    							'header' => 'Content-type: application/x-www-form-urlencoded',
    							'content' => $postData,
    								)
    				);
    $context = stream_context_create($opts);
    //url d'authentification
    $url = 'https://api.helloasso.com/oauth2/token';
    $result = file_get_contents($url, false, $context);
    $tab_rep = json_decode($result, true);
    echo"<pre> résultat "; print_r(json_decode($result));echo"<pre>";echo'<br/>';
    $token =$tab_rep['access_token'];
    echo "token : ".$token ;
     
     
    //demande de paiement
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://api.helloasso.com/v5/organizations/nom-association/checkout-intents' );
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt($ch, CURLOPT_POST, true );
    curl_setopt($ch, CURLOPT_POSTFIELDS, "{'totalAmount' : 1000, 'initialAmount' : 1000, 'itemName' : 'Adhésion','backUrl' : 'https://domaine.fr/adherent /adhesions_activites_admin.php', 'errorUrl' : 'https://domaine.fr/adherent/HelloAsso/retour_erreur.php', 'returnUrl' :'https://domaine.fr/adherent/HelloAsso /redirectUrl.php',}");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array ( 'Accepter' => 'application/json',
    											'Content-type'=> 'application/x-www-form-urlencoded',
    											'Authorization' => 'Bearer '. $token ,
    											'Type de contenu' => 'application/json',
    											) 
    			);
     $reponse = curl_exec($ch);
    if (curl_errno($ch)) {
         echo  'Erreur :' . curl_error($ch);
    }
    curl_close($ch);
     
    echo"<pre> résultat "; print_r(json_decode($reponse, true));echo"<pre>";echo'<br/>';
    $tab_rep = json_decode($reponse, true);
    if(isset($tab_rep['id'])){
    $id =$tab_rep['id'];
    echo "id : ".$id ;echo'<br/>';
    $redirectUrl = $tab_rep['redirectUrl'];
    echo "redirectUrl : ".$redirectUrl ;echo'<br/>';
    }

  7. #7
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 240
    Points : 15 542
    Points
    15 542
    Par défaut
    ce message est le retour de l'appel à "/checkout-intents" ? et la réponse est telle quelle en français ?
    je demande cela parce que ce message n'apparait pas dans leur documentation :
    https://api.helloasso.com/v5/swagger...stInitCheckout

    essayez aussi de mettre les entêtes sous cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		CURLOPT_HTTPHEADER => [
    			"Authorization: Bearer $token",
    			"Content-Type: application/json",
    		],

  8. #8
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    496
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 496
    Points : 123
    Points
    123
    Par défaut
    Bonjour merci de m'aider !

    1) le message est bien dans la langue détectée donc en français.

    2) ton bout de code ne fonctionne pas mais j'ai repris les 2 paramètres et codé comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    curl_setopt($ch, CURLOPT_HTTPHEADER, array ( "Authorization: Bearer $token",
    								"Content-Type: application/json",
    								) 
                     );
    ....
    et oh merveille un changement dans le résultat (tel que affiché à l'écran) que j'ai encore du mal à comprendre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    résultat Array
    (
        [message] => La demande n’est pas valide.
        [modelState] => Array
            (
                [body.ContainsDonation] => Array
                    (
                        [0] => The ContainsDonation field is required.
                    )
     
            )
     
    )
    Voici ci-dessous le code Curl généré par le site de test
    avec un token que je recopie de dans.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    curl -X POST "https://api.helloasso.com/v5/organizations/GYM-NATURE-FORME/checkout-intents" -H "accept: application/json" -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJkMWM3Y2I1MTQ1NGM0MmJmOTQzYzYzOTRlYjQ3ZmEzZCIsImNwcyI6WyJBY2Nlc3NQdWJsaWNEYXRhIiwiQWNjZXNzVHJhbnNhY3Rpb25zIiwiQ2hlY2tvdXQiXSwidXJzIjoiT3JnYW5pemF0aW9uQWRtaW4iLCJuYmYiOjE2NjA3Mzg5MTQsImV4cCI6MTY2MDc0MDcxNCwiaXNzIjoiaHR0cHM6Ly9hcGkuaGVsbG9hc3NvLmNvbSIsImF1ZCI6ImY4MjliOGJmNzZhZTQ2ZjA4YjcyMTEyYjE3ZGVkYmZiIn0.f1YaUBZRm-IhiccvdYFFlTSYczS7FwwkduxGq2OE5cykGL_YxYzj93v9SCIOj4BsHjdlzIWcBn_gj2dJXuAf9dRqyGR3BDb_41HvgMeOQdE3bcsdhOLeJBmzvhsvMXkSO4YxRt21HAxJk_yHiKkx5cYcOx2P2DyobgzftglhtdubPuBjRPxpmB67uoVWCblPfMsza9lwqLk4_a7DG8-wSxnKY9Wdwr1fIf-RIe8Pi8XCeRpjh8gz01xhAPZQXbDVnscTfatDfhmDe2SChBvWQci5ETaM4AkTR_CQe1CXBI7-COemE1Qz8yFGVwl4V3P8ou5z51x49ffDevOiHOvYSQ" -H "Content-Type: application/json" -d "{ 'totalAmount' : 1000, 'initialAmount' : 1000, 'itemName' : 'Adhésion GNF','backUrl' : 'https://michel.gymnatureforme.fr/adherent /adhesions_activites_admin.php', 'errorUrl' : 'https://michel.gymnatureforme.fr/adherent/HelloAsso/retour_erreur.php', 'returnUrl' :'https://michel.gymnatureforme.fr/adherent/HelloAsso /redirectUrl.php','containsDonation':false}"
    ICI le code retour , l'id et l'adresse de redirection, donc ça fonctionne bien.
    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
     
    200	
    Response body
     
    {
      "id": 168685,
      "redirectUrl": "https://www.helloasso.com/associations/gym-nature-forme/checkout/27810de810e642358ff0675d5b8f9165"
    }
    Response headers
     access-control-allow-credentials: true 
     access-control-allow-origin: https://api.helloasso.com 
     access-control-expose-headers: Content-Disposition, Request-Context 
     content-encoding: gzip 
     content-length: 237 
     content-type: application/json; charset=utf-8 
     date: Wed, 17 Aug 2022 12:30:24 GMT 
     request-context: appId=cid-v1:1f23f168-0bcb-43a9-9bd9-7ead5bc2b18c 
     vary: Accept-Encoding
    J'espère que tu pourras encore m'aider pour trouver toute la bonne syntaxe

  9. #9
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    496
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 496
    Points : 123
    Points
    123
    Par défaut
    Voilà ça fonctionne il manquait une donnée obligatoire à envoyer.

    Je te remercie pour ces 2 paramètres qui m'on débloqué.
    en fait je n'ai pas étudié correctement comment il fallait initialisé une requête Curl.

    Merci encore

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/03/2010, 13h31
  2. Comment récupérer les données de cette page web (par exemple)
    Par emulamateur dans le forum VBA Access
    Réponses: 6
    Dernier message: 13/10/2009, 19h29
  3. Réponses: 17
    Dernier message: 16/03/2009, 09h21
  4. Réponses: 1
    Dernier message: 19/02/2009, 15h37
  5. Comment balayer les données renvoyées par la requête ?!
    Par liv dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 09/06/2008, 11h52

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