Je rencontre un souci pour recevoir la réponse d'un API.
Voici les informations que renvoie l'API :
Method : HTTP Post
Format d'échange de données : JSON
Les variables que l'API renvoie sont : tx_reference,identifier,payment_reference,...
Comment récupérer le corps body d’une requête HTTP sans utiliser d’index, c’est à dire, sans utiliser $_POST[ 'index_quelconque ' ] :
$post_body = file_get_contents( 'php://input' ) ;
Cette fonction peut retourner FALSE, mais elle peut aussi retourner une valeur équivalent à FALSE. Utilisez l'opérateur === pour tester la valeur de retour exacte de cette fonction. (voir la doc PHP).
si la réponse n'est pas valide ou pas du format json, alors la fonction : json_decode($json); va également retourner une erreur, et ainsi de suite, des erreurs en cascade, en avalanche ...
Donc, en PHP, toujours tester les erreurs pour savoir d'où vient l'erreur !
Oui, on peut utiliser $ma_var = $ _POST['ma_var']; mais ça suppose que, dans la réponse à la requête HTTP, retournée au client par le serveur, il y a présence du champ ma_var selon le format texte suivant :
ma_var=valeur_du_champ_ma_var& ... ... autres éventuels champ=valeur ...
du genre :
nom_champ1=valeur_du_champ1&nom_champ2=valeur_du_champ2&nom_champ3=valeur_du_champ3
Mais dans le cas où il n'y a pas de champs mais que des valeurs :
(ça arrive sur certains serveurs !!)
OK je vois le truc, la situation,
la forcément c'est sécurisé ! et ça doit être bien sécurisé donc https:// ...
D'expérience perso, en général, sur les sites proposant des APIs, il y a, disponibles,
des exemples d'utilisations de leurs APIs dans divers langages :
PHP, javascript, java, C++ ... , pour accompagner le développeur ...
Déjà au 1ier abord (sans créer de compte), là en surface, je ne vois pas
d'exemples d'utilisations de leur API !
Peut-être faut-il créer un compte avant, pour y avoir accès ????
Alors 1 remarque ici, dans le code donné sur le forum, je vois bien le traitement en PHP
de la réponse (qui apparemment n'arrive pas !) mais on ne voit pas le code source PHP
lançant la requête HTTP POST ...
Il faut d'abord s'assurer que la réponse arrive avant de la traiter !
Sinon là, pour lancer des requêtes http(s) POST en PHP, j'utilise curl,
(une extension PHP maintenant intégrée à PHP) , ça marche bien,
ça passe bien les proxy et ça gère presque tous les protocoles web sauf TCP :
https://www.php.net/manual/fr/intro.curl.php
ATTENTION ! il faut activer l'extension curl dans le PHP utilisé : dé-commenter,
dans le fichier texte PHP.ini du répertoire du PHP, la ligne :
; extension=php_curl.dll
devient :
extension=php_curl.dll
puis redémarrer le serveur web pour la prise en compte de cette extension PHP.
10 avril 2021 à 19:46
Merci pour votre réponse. Vue votre explication, le fait qu'on peut ou ne pas recevoir la réponse attendue, est-ce qu'on peut utiliser directement pour recueillir les données attendues comme dans un formulaire simple html ?
Merci