Lecture xml

gunslinger -  
 gunslinger -
Bonjour,

Je suis entrain d'ajouter a un site d'achat en ligne un nouveau mode de payement qui s'appelle neteller. Mon problème et oui sinon je ne serais pas la est que une fois les informations sont entre et envoyer via un formulaire (cette partie fonctionne sans problème) je reçois un xml.

Le probleme c que ce xml s'affiche sur la page courante immédiatement et je n'arrive pas à l'empêcher de s'afficher de plus je ne trouve pas le moyen d'entrer dans le xml.
L'url de reponse est la même que celle que j'envoie il ne rajoute pas a la fin de fichier.xml que je pourrait aller lire.

L'un de vous aurrait-il une idée a me soumettre pour que j'arive a empecher l'affichage de ce xml et aussi de rentrer dans ce xml que je puisse traiter les données.

Merci infiniment pour vos futur reponse.

PS : Si vous avez besoin d'une quelconque informations faite le moi savoir.

16 réponses

Résumé de la discussion

Problème central : l'intégration d'un nouveau mode de paiement Neteller dans un site e-commerce renvoie un flux XML qui s'affiche directement sur la page sans possibilité d'accès au contenu pour traitement. Plusieurs réponses évoquent l'usage de parsers XML ou de Snoopy pour récupérer et exploiter les données, tout en signalant des difficultés liées à la lecture du flux et à l'autorisation des échanges. Des échanges discutent aussi de tester le flux avant parsing, d'adapter le code pour saisir des balises spécifiques et d'éviter que le XML ne s'affiche en pleine page. En l'état, plusieurs propositions restent techniques et pratiques, allant de méthodes de débogage du flux à l'adaptation des tests balises, sans aboutir à une solution unique.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. giheller
     
    Bonjour,

    recherche du côté d'un parser xml, c'est un pgm qui permet de lire le fichier et d'en faire ensuite ce que l'on souhaite.
    0
    1. gunslinger
       
      Mon problème n'est pas la lecture mais d'entrer dans le xml car je sais quand il s'agit d'un fichier et que l'on possède le nom mais la je possède rien tout ce qui ce passe c que je valide le formulaire et puis le xml apparait avec la même url que a laquelle jai envoyer mes variables du formulaire l'url est ” https://api.neteller.com/netdirect".

      A tu une idée peut être que je ne comprend pas un trucs et que c tout simple.
      Merci de ta reponse
      0
  2. giheller
     
    une requête retourne un fichier xml. si on clique ou qu'on l'ouvre il s'ouvre effectivement comme on le voit dans ton lien.

    ce que je comprends de ton problème c'est que tu veux traiter le contenu de ce fichier. Il te faut donc un parser xml.
    0
    1. gunslinger
       
      ok je n'avais pas compris sa comme sa je te remercie et je vais essayer de suite.
      0
      1. giheller > gunslinger
         
        si tu ne trouves pas je verrai demain au boulot.
        0
      2. gunslinger > giheller
         
        Salut alors j'ai encore quelque probleme je comprend pourquoi j'ai besoin d'un parser mais je ne comprend toujours pas comment entrer dans mon xml car dans les exemple que j'ai vu il me faut le nom du fichier dans lequel ce trouve le xml pour pouvoir l'utiliser alors j'ai peut être zapper une étape ou on en a pas besoin mais je n'ai pas vu comment faire.

        Je voudrai savoir si il est possible d'empêcher l'affichage de la page xml sur l'écran.

        Merci beaucoup pour ton aide.
        0
  3. giheller
     
    Bonjour,
    à mon avis il doit s'ouvrir car il doit y avoir un href quelque part.

    comment récupères-tu ce fichier ? via une requête ?
    0
    1. gunslinger
       
      C pour un système de payement qui s'appelle neteller j'ai un formulaire en post que j'envoie a cette adresse : https://api.neteller.com/netdirect et donc dans l'url on peut lire cette adresse puis une fois le formulaire valider je reçois directement le xml sur l'écran et dans l'url il y a tjs la m adresse c'est a dire https://api.neteller.com/netdirect

      Si il y a de schoses que tu ne comprend pas je peut t'envoyer les doc de cette application.

      Merci pour ton aide.
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. giheller
     
    non sans forl direct ce que j'ai écrit
    0
    1. gunslinger
       
      En faisant comme sa

      $result = "https://api.neteller.com/netdirect";
      $xml_parseur = xml_parser_create();

      while ($fdata = fread($result, 2048)){
      xml_parse($xml_parseur, $fdata, feof($result)) or die(
      sprintf("Erreur XML : %s à la ligne %d\n",
      xml_error_string(xml_get_error_code($xml_parseur)),
      xml_get_current_line_number($xml_parseur))
      );
      }

      sa ne marche pas il me dis que l'argument passer a fread n'est pas valide.
      0
  6. giheller
     
    après ça :
    Par gunslinger, le mardi 11 mars 2008 à 12:40:35

    En faisant comme sa

    $result = "https://api.neteller.com/netdirect";
    pour voir ce que cela donne et avant de te lancer dans le parser (pour voir si c'est OK) tu fais

    echo "<pre>"; print_r($result);echo "</pre>";

    comme ça on verra si tu récupère bien les infos que l'on veut

    NON c'est pas bon il faut faire autre chose pour récupérer le xml. je vais chercher
    0
    1. gunslinger
       
      ok alors je vient de tester comme sa et sa m'affiche https://api.neteller.com/netdirect

      mon fichier est composer de la manière suivante :

      <?php
      $result = "https://api.neteller.com/netdirect";
      echo "<pre>"; print_r($result);echo "</pre>";
      ?>
      formulaire d'envoie

      ok et qd je valide le formulaire je reçois le xml a l'écran et si je fais clique droit code source je vois uniquement le xml.

      du coup le code qui ce trouve sur ma page n'est pas pris en compte. Je ne comprend pas comment mon code qui ce trouve sur ma page du formulaire peut être traiter.
      0
  7. giheller
     
    $snoopy = new Snoopy();

    $snoopy->submit("https://api.neteller.com/netdirect");
    $xml = $snoopy->results;

    je te mets la classe php là ---> https://www.cjoint.com/?dlm0VgFziw

    0
    1. gunslinger
       
      je fais comment pour déclarer la class snoopy ?? je dois faire du copier collé de ce que tu ma donnée puis l'appellé dans mon fichier ??
      0
    2. gunslinger
       
      ok alors j'ai réussi a utilisé la class snoopy le probleme maintenant c que quand je valide mon formulaire ma page disparais au profit de leur xml qui est affiché a l'écran voir le code source de la page récupérer :

      <?xml version="1.0" encoding="UTF-8"?>
      <netdirect version="4.1">
      <approval>no</approval>
      <error>1010</error>
      <error_message>You have requested an amount higher than the balance available in your NETELLER account.</error_message>
      <custom_1 xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
      <custom_2 xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
      <custom_3 xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>

      <url>http://api.neteller.com/...
      <url_message>Please sign in to your NETELLER account to confirm your current balance.</url_message>
      <telephone_message>Should you have any questions, call the NETELLER Customer Contact Centre at 00800 7767 6343.</telephone_message>
      </netdirect>

      la page de mon formulaire ou j'utilise la class snoopy disparais donc sa ne marche pas serais tu m'expliquer comment je peux faire pour empecher cette page de saficher que je garde ma page pour que je puisse traiter ce fameux xml

      merci infiniment de ton aide j'ai enfin pu avancer.
      0
  8. giheller
     
    je t'envoie ce soir quand je serai rentré à la maison un fichier php modèle.
    il faut avant que j'enlève quelques lignes pour que tu n'aies qu'un squelette correct.
    0
  9. giheller
     
    Voilà un code qui fonctionne au boulot. Modifé pour ne pas avoir tout

    <?php
    /***********************************************************************/
    function startElement($parser, $name, $attribs) {
    global $entreprise,$etab,$etab_adr,$siege,$siege_adr,$old;
    }
    //fin start element

    function endElement($parser, $name)
    {
    global $elt,$resultat,$nb_total_base;
    if($name == 'Nombalisededébut'){
    $nb_total_base = $elt;
    if ($nb_total_base == 0) {
    echo '<br> Il n y a aucun retour. <br>';
    }
    }
    // Ici je met dans un tableau le contenur du retour en fonction de la balsie wml
    if($name == 'NOMdelabalise'){
    $resultat['NOMdelabalise'] = $elt;
    }

    }

    function characterData($parser, $data)
    {
    global $elt;
    $elt = $data;
    }

    /***********************************************************************/
    include ('snoopy.class.php');
    /***********************************************************************/
    $snoopy = new Snoopy();

    $snoopy->submit("https://api.neteller.com/netdirect");

    $xml = $snoopy->results;

    $xml_parser = xml_parser_create();
    xml_set_element_handler($xml_parser, "startElement", "endElement");
    xml_set_character_data_handler($xml_parser, "characterData");
    if (!xml_parse($xml_parser, $xml, true))
    {

    echo "XML error: ".xml_error_string(xml_get_error_code($xml_parser))." ligne ".xml_get_current_line_number($xml_parser));
    }
    xml_parser_free($xml_parser);

    // on a nos variables dans le tableau $resultat

    ?>
    0
    1. gunslinger
       
      Merci infiniment j'essaierai chez moi ce soir. Juste pour savoir (je vais tout depioté ce soir) avec ce fichier l'xml ne s affichera plus a l'écran ??? et me permettra de traiter le contenu ?

      Merci bcp je vai enfin pouvoir finir ce tp je te remercie énormement :) .
      0
  10. giheller
     
    normalement oui
    en résumé le parser lit le contenu du fichier xml et met les valeur dans un tableau en fonction des balises du fichier xml
    ensuite à toi de traiter le contenu du tableau pour en faire ce que tu veux : affichage, calcul, que sais-je ?
    0
    1. gunslinger
       
      Ok ben que dire a par merci je ne sais pas trop alors merci pour ta précieuse aide.
      0
    2. gunslinger
       
      Salut alors je vien d'essayer d'associer ton fichier avec mon formulaire et sa ne marche pas.
      Quand j'arrive sur la page de mon formulaire il traite bien ton code en me disant que " XML error: no element found ligne 1 " et quand je valide le formulaire comme d'habitude il m'affiche le xml a l'écran et rien ne ce passe .

      Je suis complètement perdu est-ce que je l'ai mis au mauvais endroit ? ou alors est-ce que sa ne marche pas ?
      0
  11. giheller
     
    le code doit être adapté (pour tester les balises recherchées)
    cependant quand tu cliques sur le lien (du moins pour moi) il me renvoit un fichier xml disant que kj'ai un problème d'autorisation. de ce fait je ne peux pas faire plus.

    ce que j'ai envoyé fonctionne avec les tests sur les balises que j'attends à recevoir de mon application...

    0
    1. gunslinger
       
      J'ai adapté le code pour chercher les balise qui m'intéresse mais c pas sa mon problème, mon vrai problème c qu'il m'affiche tjs la page xml dans la fenêtre.

      Mon fichier ce déroule de la maniére suivante

      1 - ton code modifié

      2 - mon formulaire

      Ce qui ce passe c quand j'arrive sur la page pour valider mon achat ton code me met le message XML error: no element found ligne 1.

      Je valide mon formulaire et la je reçois comme avant le xml en pleine page.
      0
  12. giheller
     
    Quel formulaire ?
    je ne comeprends plus rien.

    1 tu envoies une requête via le https:// ... qui te retourne un fichier xml.
    2 tu traites le retour

    aucun formulaire ne doit faire action="https:// ....

    0
    1. gunslinger
       
      D'accord alors il y a eu un mauvais échange de donner car moi je dois envoyer des données traiter par formulaire et c le retour de ce formulaire qui est un xml qui s'affiche dans la page principal. Si tu veux donne moi une adresse et je tenvoie la doc technique de ce que je suis entrein de faire tu comprendra pour le formulaire.
      0
  13. giheller
     
    Comment passes-tu les données vers cette URL, sans doute via un GET alors tu fais :

    $snoopy->submit("https://api.neteller.com/netdirect/quelquechose.php?parm1=nn,parm2=mm");

    de toute façon avec

    $xml = $snoopy->results;

    le retour ne s'affiche pas, il est dans la variable xml
    c'est le principe même.
    peut être devrais-tu trouver sur le net un parser plus simple.
    0
    1. gunslinger
       
      Je lui envoie par une méthode post c ce qui est demander par la doc technique je te join le formulaire que je leur envoie (les code ne sont pas les bon)

      <form action="https://api.neteller.com/netdirect" method="post" enctype="multipart/form-data">
      <input type="text" name="version" size="8" maxlength="5" value="4.1"></div></TD>
      <input type="text" name="amount" size="8" maxlength="5" value="montant"></div></TD>
      <input type="text" name="currency" size="3" maxlength="5" value="EUR"></div></TD>
      <input type="hidden" name="merchant_id" value="1111">
      <input type="hidden" name="merch_pass" value="EEEEEEEEE">
      <input type="hidden" name="merch_key" value="222222">
      <input type="hidden" name="merch_transid" value="WWWWWWWW">
      <input type="text" name="net_account" size="12" maxlength="12"></div></TD>
      <input type="text" name="secure_id" size="6" maxlength="6"></div></TD>
      <input type="submit" name="button" value="Envoie mon numéro Neteller">
      </form>
      0
  14. giheller
     
    s'ils te disent comment envoyer les infos, ils doivent aussi te dire comment les récupérer.
    0
    1. gunslinger
       
      et ben non il mette juste que tu récupere sa dans l'xml qui s'affiche a l'écran rien de plus.
      0
  15. giheller
     
    c'est ce qui est fait par l'utilitaire snoopy
    il crée un objet snoopy, envoie la requête et la récupère sous forme de tableau
    les paramètres sont passés en GET comme dans le message 28.
    et chaque ligne xml est retournée dans le tableau appelé $xml.

    quand tu dis qui s'affiche à l'écran : c'est eux qui le disent ? ou toi qui le voit.

    cherche sur le net un utilitaire qui récupère du xml et le traite. je ne connais que celui là mais il en existe d'autres sans aucun doute.
    0
  16. giheller
     
    Bonjour,
    la nuit porte conseil alors voilà un bilan.

    Ton formulaire dans son action "attaque" directement l'URL, il est donc normal que le retour soit l'affichage de ce qui est retourné.

    Il faut donc trouver un utilitaire du genre de celui que je t'ai passé (snoopy) de manière à ce que le retour de ton formulaire soit fait dans un tableau et non en affichage.

    Tant que cela ne pourra être ainsi fait tu auras l'affichege du retour.
    Il est étrange que rien ne soit noté dans ta doc.

    reagrde ceci https://www.commentcamarche.net/contents/805-php-parser-du-xml
    ou recherche dons dans ton moteur de recherche préféré un truc du genre "retour xml" ou "traitement xml".
    0
    1. gunslinger
       
      Ok je te remercie je vais avancer sur snoopy et apprendre a l'utiliser. Je te redirai qd j'aurai enfin réussi a le faire.

      Ton aide m'aura vraiment été précieuse j'apprécie vraiment le temps que tu as pris pour me repondre.
      0
      1. giheller > gunslinger
         
        Bon courage
        0
      2. gunslinger > giheller
         
        Salut j'ai enfin résolu mon probleme je suis passé par la librairie curl pour récupérer mon xml puis avec domxml j'ai réussi a l'utiliser.
        merci pour ton aide.
        0