Bonjour,

ça fait plusieurs jours que j'essaie de faire fonctionner ce Webservice
http://www.ibanbic.be/IBANBIC.asmx?op=getBelgianBBAN
Qui doit me renvoyer un code BBAN au format XML.

l'erreur:
Erreur d’analyse XML : mal formé
Emplacement : http://localhost/ibanV2/index.php
Numéro de ligne 1, Colonne 13 :
J'ai testé plusieurs chose, là dans la console, j'arrive enfin à transformer le code IBAN en BBAN, mais maintenant c'est une erreur XML qui renvoi vers mon index.php.
C'est à ne plus rien 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
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
namespace controller;
require_once __DIR__ . '/vendor/autoload.php';
use IBAN;
use SoapClient;
//use WebService;
 
if(!empty($_GET))
{
    //extract($_POST);//extrait les données du POST et permet de les pouvoir appeler les variables contenuent dans le POST $variable
    $iban = $_GET['iban'];
    $myIban = new IBAN($iban);
 
    $errors = [];//Tableau qui contiendra les erreurs s'il y en a.
 
    //si le champs IBAN est vide, je mets le message d'erreur dans le tableau des erreurs
    if(empty($iban)){
        array_push($errors, 'Vous devez rentrer votre IBAN!');
    }
 
    //Vérifiez un numéro IBAN. Tolère les espaces, les préfixes "IBAN ...", les tirets, les entrées en minuscules, etc.
    if(!$myIban->Verify()) {
        array_push($errors, 'IBAN invalide! Mauvais format!');
    }
 
    //Vérifier la somme de contrôle d'un IBAN - code modifié à partir de la classe Validate_Finance PEAR
    if(!$myIban->VerifyChecksum()) {
        array_push($errors, 'IBAN invalide! Erreur checksum!');
    }
 
    //Suggestion ou double suggestion si erreur ça dépend des cas et ça ne fonctionne pas toujours
    $suggestions = $myIban->MistranscriptionSuggestions($iban);
    if (is_array($suggestions)) {
        if (count($suggestions) == 1) {
            array_push($errors, "Vous voulez dire: " . $suggestions[0] . " ?");
        } elseif (count($suggestions) > 1) {
            array_push($errors, "ou peut-être: ");
            $done = 0;
            foreach ($suggestions as $suggestion) {
                if ($done > 0) {
                    array_push($errors, "ou");
                }
                array_push($errors, "'" . $suggestion . "'");
                $done++;
            }
        }
    }
 
    function getBelgianBBAN($iban)
    {
        $url = "http://www.ibanbic.be/IBANBIC.asmx?WSDL";
        $client = new SoapClient($url);
        $bban = $client->getBelgianBBAN(array('Value' => $iban))->getBelgianBBANResult;
        return $bban;
    }
 
    //$ws = new WebService();
    $bban = getBelgianBBAN($iban);
    //var_dump('bban= ' . $bban);
    echo $bban;
 
    //s'il y a des erreurs, je les stock dans une variable $response qui sera envoyée au navigateur
    if(count($errors)){
        $response = ['errors'=>$errors];
        echo json_encode($response);//j'encode la réponse au format JSON
        exit;
    }
 
    $response = ['success'=>'IBAN valide'];//S'il n'y a pas d'erreur
 
    echo json_encode($response);exit;//j'encode la réponse au format JSON avant de l'envoyée au navigateur.
 
}
index.php
Code html : 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
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><!---rend responsive bootstrap-->
    <meta charset="UTF-8">
    <title>Iban Validator</title>
    <!--feuille de style propre à Bootstrap, doit venir avant mes propores feuilles de style-->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
    <link rel="stylesheet" href="View/style.css" type="text/css">
</head>
<body>
 
    <div class="container">
        <!--div pour les message renvoyé par le server-->
        <div id="errormessage" class="alert alert-danger"></div>
        <div id="successmessage" class="alert alert-success"></div>
        <h2>IBAN Validator</h2>
        <div class="card text-white bg-secondary mb-3">
            <form method="GET" action="traitement.php" id="formiban">
                <div class="form-group">
                    <label for="iban">Entrez votre code IBAN</label>
                    <input name="iban" type="text" class="form-control" placeholder="votre IBAN">
                </div>
 
                <div class="col text-center">
                    <input type="submit" name="submit" value="Submit" class="btn btn-primary">
                </div>
             </form>
        </div>
        <!--div pour le BBAN-->
        <div id="bban" class="alert alert-primary"></div>
    </div>
 
 
    <!--à placer avant la balise fermante body-->
    <!--cdn JQuery, indispensable pour l'utilisation de Bootstrap-->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <!--cdn popper, indispensable pour la dernière version de Bootstrap-->
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
    <!--plugin js de Bootstrap-->
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
    <script  src="View/script.js"></script>
</body>
</html>
script.js
Code js : 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
52
53
54
55
56
57
58
59
60
61
"use strict";
 
$(document).ready(function(){
    //au clic sur le boutton submit, envoi des données du formulaire vers le server et récupère les messages renvoyé par le server.
    $('#formiban').on('submit', function(e){
        e.preventDefault();//evite le comportement par defaut, l'envoi du formulaire.
 
        //cache les messages d'alert précédent lors de l'envoi du formulaire et je met un text vide
        $('.alert').text('').hide().stop();//stop annule l'annimation et un comportement bizzare si je clic plusieurs fois sur le boutton.
 
        var url = $(this).attr('action');//renvoi vers le fichier qui est dans le action du formulaire
        var method = $(this).attr('method');//même chose pour la method du formulaire
        var data = $(this).serialize();//je récupère les données du formulaire grace à serialize, elles seront déjà formatée
        //console.log(data);
 
        //ajax pour la validation IBAN, erreur ou suggestions.
        $.ajax({
            url: url,
            type: method,
            data: data,//données envoyées au server
            dataType: 'json',//type de donnée en retour du server
            success: function(response){//en cas de succès, je prends la réponse du server
                console.log(response);
                if(response.success){
                    //affiche avec un slide vers le bas, la div avec le message de succès avec un délais de 2 sec
                    $('#successmessage').text(response.success).slideDown().delay(5000).slideUp();
                    $('form').get(0).reset();//réinitialise le formulaire, efface son contenu.
                }
                if(response.errors){
                    var errorString = '';//je stock les erreurs dans une variable
                    //je boucle dans le tableau d'erreur renvoyé par le server
                    $.each(response.errors, function(key, value){
                        errorString += '<p>'+value+'</p>';//et je mets les erreur dans ma variable
                    });
                    //affiche avec un slide vers le bas, la div avec les messages d'erreurs avec un délais de 2 sec
                    $('#errormessage').html(errorString).slideDown().delay(5000).slideUp();
                    //.html à la différence de .text va interpreter les balise <p> ci-dessus
                }
            },
            error: function(message) {//en cas d'erreur renvoyée par le server, hors erreur dans les champs du formulaire, ex: erreur de syntax
                console.log(message);
            }
        });
 
        //ajax pour le code BBAN
        $.ajax({
            url: url,
            type: method,
            data: data,//données envoyées au server
            dataType: 'xml',//type de donnée en retour du server
            success: function(bban){
                console.log(bban);
                alert(bban);
                if(bban.success){
 
                }
                    //$('#bban').text(response.success).slideDown().delay(5000).slideUp();
            },
        });
    });
});