Bonjour @audreylab87 et @hugo_auto53,
@hugo_auto53 a raison. Le problème vient du fait que vous lisez le contenu brut de la requête avec file_get_contents('php://input'), ce qui vous donne une chaîne de caractères. Pour que PrestaShop (ou n'importe quel script PHP) puisse travailler avec le JSON comme un tableau, il faut d'abord le décoder.
La variable $payload sur laquelle la vérification !is_array($payload) est effectuée n'a pas encore reçu le contenu décodé. Voici comment vous devriez modifier votre code dans gpsrenterprise/controllers/front/api.php pour résoudre ce problème :
$raw = file_get_contents('php://input');
$payload = json_decode($raw, true);
if (!is_array($payload)) {
$this->respondJson(['success' => false, 'error' => 'invalid_payload'], 400);
}
J'ai ajouté la ligne $payload = json_decode($raw, true); pour décoder la chaîne JSON en un tableau associatif PHP. La vérification if (!is_array($payload)) sera alors pertinente et capturera les payloads qui ne sont pas des objets JSON valides. J'ai aussi changé le message d'erreur pour être plus spécifique.
Pour des modules API qui nécessitent une gestion plus sophistiquée des requêtes et des validations, il est souvent plus simple d'utiliser cette solution éprouvée pour éviter les modifications directes dans le code source qui pourraient être écrasées lors d'une mise à jour du module.