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:
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.Erreur d’analyse XML : mal formé
Emplacement : http://localhost/ibanV2/index.php
Numéro de ligne 1, Colonne 13 :
C'est à ne plus rien comprendre...
index.php
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. }
script.js
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>
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(); }, }); }); });
Partager