Problèmes avec les Sendorders dans l'exercice du cours n8n Foundation

Décrivez le problème/l’erreur/la question

En envoyant la commande au site n8n, j’obtiens les erreurs ci-dessous. J’ai vérifié les espaces, les calculs, etc., mais je n’arrive pas à trouver la source de l’erreur. Tous mes nœuds s’exécutent parfaitement lorsqu’ils sont traités individuellement

Quel est le message d’erreur (le cas échéant) ? Votre demande n’est pas valide ou n’a pas pu être traitée par le service. Vos totaux de commande sont incorrects. Veuillez vous assurer que vous calculez les totaux correctement.

Veuillez partager votre workflow

{
  "nodes": [
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "6e58682d-4337-46a8-a36f-a6047502bfe7",
              "name": "order_id",
              "value": "={{ $json.order_id }}",
              "type": "string"
            },
            {
              "id": "2a009df0-7d77-43e6-9e91-a70e004bb17f",
              "name": "customer_name",
              "value": "={{ $json.customer_name }}",
              "type": "string"
            },
            {
              "id": "c36c31fc-c9a7-4dcb-8002-c7434369ea78",
              "name": "region",
              "value": "={{ $json.region }}",
              "type": "string"
            },
            {
              "id": "a6ad9769-cf53-4e2d-b27f-8869ec1506d3",
              "name": "status",
              "value": "={{ $json.status }}",
              "type": "string"
            },
            {
              "id": "ea21f188-1793-4fbc-80b4-14d080492695",
              "name": "order_total",
              "value": "={{Math.round($json.quantity * $json.unit_price)}}",
              "type": "number"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        16,
        -112
      ],
      "id": "e5206f2a-e49f-4f97-a253-f42bbdee3f20",
      "name": "SetOrderTotals"
    },
    {
      "parameters": {
        "aggregate": "aggregateAllItemData",
        "destinationFieldName": "orders",
        "options": {}
      },
      "type": "n8n-nodes-base.aggregate",
      "typeVersion": 1,
      "position": [
        608,
        -320
      ],
      "id": "f4a9b2b7-cbb5-4092-adae-82a31b6faadf",
      "name": "AggregateOrders"
    },
    {
      "parameters": {
        "select": "channel",
        "channelId": {
          "__rl": true,
          "value": "C0BEZ3AKS9E",
          "mode": "list",
          "cachedResultName": "test"
        },
        "text": "=\"Processus du pipeline commercial terminé. 50 commandes traitées, 38 livrées.\"\n\"Total des commandes pour le Nord :\" {{ $json.region[0].average_order_total }}\n\"Total des commandes pour le Sud:\" {{ $json.region[2].average_order_total }}\n\"Total des commandes pour l'Ouest:\" {{ $json.region[1].average_order_total }}\n\"Total des commandes pour l'Est:\" {{ $json.region[3].average_order_total }}",
        "otherOptions": {}
      },
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.5,
      "position": [
        816,
        -416
      ],
      "id": "27fbb4f2-ab2a-4977-bef1-5350b8a52c03",
      "name": "SendToSlack",
      "webhookId": "5a4cba28-edf6-40b0-b14f-d68952cccf47",
      "credentials": {
        "slackApi": {
          "id": "JsMFdrKSTabhvlb7",
          "name": "Slack account"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://learn.app.n8n.cloud/webhook/course/n8n101/process-orders",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "x-assessment-id",
              "value": "dcaececa5196aa91d2a41fc5b5b53ec8"
            }
          ]
        },
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "orders",
              "value": "={{ $json.orders }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.4,
      "position": [
        816,
        -224
      ],
      "id": "2a053049-1a4b-46f0-abf1-3787c72a1297",
      "name": "SendOrders",
      "credentials": {
        "httpHeaderAuth": {
          "id": "Ga9QOladMz18EL6I",
          "name": "n8n Academy API Key"
        }
      }
    },
    {
      "parameters": {
        "fieldsToSummarize": {
          "values": [
            {
              "aggregation": "sum",
              "field": "order_total"
            },
            {
              "field": "order_total"
            },
            {
              "aggregation": "average",
              "field": "order_total"
            }
          ]
        },
        "fieldsToSplitBy": "region",
        "options": {}
      },
      "type": "n8n-nodes-base.summarize",
      "typeVersion": 1.1,
      "position": [
        208,
        -320
      ],
      "id": "91cd6ef5-16d0-4ea0-89a6-b5d2499b1681",
      "name": "SummarizebyRegion"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "c271aab4-45e9-4cd8-bc1e-5fee1682718a",
              "name": "sum_order_total",
              "value": "={{ Math.round($json.sum_order_total *100)/100}}",
              "type": "number"
            },
            {
              "id": "8a43ca44-257c-4d5e-9240-396005282a88",
              "name": "count_order_total",
              "value": "={{ $json.count_order_total }}",
              "type": "number"
            },
            {
              "id": "4e9f85c6-ec6e-4a80-bd09-024fadd61c5f",
              "name": "average_order_total",
              "value": "={{ Math.round($json.average_order_total*100)/100 }}",
              "type": "number"
            }
          ]
        },
        "includeOtherFields": true,
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        416,
        -320
      ],
      "id": "ea9206a9-c0e7-4836-9194-9a07c0826961",
      "name": "Edit Fields"
    }
  ],
  "connections": {
    "SetOrderTotals": {
      "main": [
        [
          {
            "node": "SummarizebyRegion",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AggregateOrders": {
      "main": [
        [
          {
            "node": "SendToSlack",
            "type": "main",
            "index": 0
          },
          {
            "node": "SendOrders",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SummarizebyRegion": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "AggregateOrders",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "meta": {
    "templateCredsSetupCompleted": true,
    "instanceId": "7134812ff1766ac00dec6d0b790eac6d9b713a9539f0e1c05a87cf2a2442a32d"
  }
}

Votre demande n'est pas valide ou n'a pas pu être traitée par le service
Vos totaux de commande sont incorrects. Veuillez vous assurer que vous calculez les totaux correctement.

Informations sur votre configuration n8n

  • Version de n8n : Community
  • Base de données (par défaut : SQLite) :
  • Paramètre EXECUTIONS_PROCESS de n8n (par défaut : own, main) :
  • Exécution de n8n via (Docker, npm, n8n cloud, application de bureau) :
  • Système d’exploitation : Windows

Salut Venu,

L’erreur « Your order totals are incorrect » pointe presque toujours vers un problème de format de la charge JSON dans votre nœud SendOrders (HTTP Request).

Quand vous utilisez ={{ $json.orders }} dans le champ de valeur, n8n transmet souvent les données sous forme de chaîne de caractères par défaut, mais le point de terminaison de l’API n8n Academy attend spécifiquement un Objet JSON contenant le tableau des commandes.

Voici comment corriger le problème :

  1. Modifiez le type de contenu du corps : Dans votre nœud SendOrders, assurez-vous que l’option Send Body est activée, mais cherchez une option comme « JSON » ou « Body Parameters » et vérifiez qu’elle ne force pas les données dans un format de chaîne.

  2. Utilisez correctement l’éditeur d’expressions : Dans le champ Value de votre paramètre de corps orders, essayez d’utiliser une expression qui force la structure de l’objet JSON : ={{ JSON.stringify($json.orders) }} ou, mieux encore, si le nœud le permet, changez le type de Body Parameters en JSON et utilisez {{ $json.orders }} directement sans guillemets.

  3. Vérifiez votre nœud SetOrderTotals : Vous utilisez Math.round($json.quantity * $json.unit_price). Vérifiez bien que vos données d’entrée ne contiennent pas de chaînes cachées ou de valeurs null. Si quantity ou unit_price sont interprétés comme des chaînes, le calcul pourrait échouer silencieusement ou produire des types inattendus. Essayez de les envelopper dans Number() : ={{ Math.round(Number($json.quantity) * Number($json.unit_price)) }}

    Pour voir exactement ce que l’API « voit », ajoutez un nœud Webhook ou utilisez un service comme Webhook.site pour inspecter la charge utile exacte qui sort de votre nœud SendOrders. Si l’API retourne une erreur 400, c’est presque certainement parce qu’elle a reçu une chaîne au lieu du tableau JSON attendu.

    Faites-moi savoir si cela résout l’erreur de validation !

    Cordialement, Swapnil swapnilailabs.com

Bonjour Swapnil

Merci pour une réponse si rapide. Laisse-moi t’expliquer ce que j’ai fait avant de poster ce problème

  1. J’ai vérifié tous les nœuds pour m’assurer que le type de données du total de commande est correct. Il est défini comme des nombres
  2. Dans le nœud Send,
    1. Dans le body, le type de contenu du Body est JSON
    2. Spécifier les champs :
      Name: orders
    3.     Value: {{ $json.orders }}
      

Tous les nœuds s’exécutent parfaitement sans aucune erreur.

J’ai aussi essayé le Webhook et il n’y a aucune erreur.

Voici le résultat du webhook

{“orders”:[{“sum_order_total”:5348,“count_order_total”:16,“average_order_total”:334.25,“region”:“north”},{“sum_order_total”:2507,“count_order_total”:10,“average_order_total”:250.7,“region”:“west”},{“sum_order_total”:2353,“count_order_total”:14,“average_order_total”:168.07,“region”:“south”},{“sum_order_total”:2263,“count_order_total”:10,“average_order_total”:226.3,“region”:“east”}]}

Salut @venu_nair ,

Tu devras peut-être comparer ton workflow avec les instructions à nouveau, car je vois que ta branche ci-dessus a un peu plus de nœuds que la dernière fois que je l’ai fait.

Bonjour à tous,

J’obtiens une erreur similaire pour le même workflow qui est partagé à l’URL Course | n8n Platform

Voici mon workflow et le message d’erreur.

Toute aide pour identifier le problème serait grandement appréciée ! :slight_smile:

Workflow

Code du Workflow

Section 2 - Sales Data Pipeline.json (5,6 KB)

Erreur obtenue dans le dernier nœud - SendOrders

{
“errorMessage”: “Votre requête est invalide ou n’a pas pu être traitée par le service”,
“errorDescription”: “Les totaux de votre commande sont incorrects. Veuillez vous assurer que vous calculez correctement les totaux.”,
“errorDetails”: {
“rawErrorMessage”: [
“422 - “{\“error\”:\“Les totaux de votre commande sont incorrects. Veuillez vous assurer que vous calculez correctement les totaux.\”}””
],
“httpCode”: “422”
},
“n8nDetails”: {
“nodeName”: “SendOrders”,
“nodeType”: “n8n-nodes-base.httpRequest”,
“nodeVersion”: 4.4,
“itemIndex”: 0,
“time”: “03/07/2026, 14:12:47”,
“n8nVersion”: “2.27.5 (Self Hosted)”,
“binaryDataMode”: “filesystem”,
“stackTrace”: [
“NodeApiError: Votre requête est invalide ou n’a pas pu être traitée par le service”,
" at ExecuteContext.execute (C:\Users\Jaideep Satghare\AppData\Roaming\npm\node_modules\n8n\node_modules\n8n-nodes-base\nodes\HttpRequest\V3\HttpRequestV3.node.ts:869:16)“,
" at WorkflowExecute.executeNode (C:\Users\Jaideep Satghare\AppData\Roaming\npm\node_modules\n8n\node_modules\n8n-core\src\execution-engine\workflow-execute.ts:1067:8)”,
" at WorkflowExecute.runNode (C:\Users\Jaideep Satghare\AppData\Roaming\npm\node_modules\n8n\node_modules\n8n-core\src\execution-engine\workflow-execute.ts:1367:11)“,
" at C:\Users\Jaideep Satghare\AppData\Roaming\npm\node_modules\n8n\node_modules\n8n-core\src\execution-engine\workflow-execute.ts:1829:27”,
" at C:\Users\Jaideep Satghare\AppData\Roaming\npm\node_modules\n8n\node_modules\n8n-core\src\execution-engine\workflow-execute.ts:2521:11"
]
}
}

Bonjour @Jaideep_Satghare, veuillez vérifier la configuration du champ « order_total » de votre nœud « SetOrderTotals » selon les instructions. Je vois que c’est différent.

Aussi, votre problème est un peu différent, donc il vaut la peine d’ouvrir un autre post pour que d’autres puissent aussi vous aider, merci.

@kristinker, merci pour votre réponse. :smiley:

J’ai volontairement modifié le champ « order_total » en utilisant la fonction de rounding mathématique pour forcer la conversion en entier.

Néanmoins, j’ai pu identifier le problème : il y avait un espace à la fin du nom du champ order_total. J’utilisais « order_total » au lieu de « order_total ». Je l’ai corrigé et cela fonctionne parfaitement maintenant.

Merci de m’avoir demandé de réexaminer le nœud. :smiley:

Ce problème peut être considéré comme résolu de mon côté. Je vais ouvrir un nouveau fil de discussion à l’avenir pour des problèmes similaires.