Beantwortet

AuftragCreate führt zu Invalid key (id) (messageCode 5) error


  • Neuer Teilnehmer
  • 0 Antworten

Hallo zusammen,Die Funktion AuftragCreate scheint mit den Daten aus dem Beispiel immer folgenden Fehler auszugeben:

<?xml version="1.0" encoding="UTF-8"?><response>      <status>           <action>AuftragCreate</action>           <message>Invalid key (id)</message>           <messageCode>5</messageCode>      </status>      <xml>address not found</xml></response>

Es wird ganz normal wie in der Dokumentation ein POST wie folgt gesendet (snippets):

Ist auch kein unterschied ob es mit curl gesendet wird, es kommt immer der gleiche fehler. Hash und config sind korrekt und funktionieren bei anderen aufrufen.

Der fehler tritt auch auf wenn bei <kundernnummer> new oder NEW eingegeben wird.

Es wird zusätzlich immer ein leerer Adressdatensatz erstellt.

private function _build_target_url($action) {
    return $this->_config['endpoint'] . '&action=' . $action . '&api_id=' . $this->_config['api_id'] . '&hash=' . $this->_get_hash();
}
 
public function create_shipment() {
        $xml = "
        <?xml version=\"1.0\" encoding=\"UTF-8\"?>
          <request>
            <status>
              <function>AuftragCreate</function>
            </status>
            <xml>
                <kundennummer>10028</kundennummer>
                <artikelliste>
                <position>
                    <nummer>4270001856524</nummer>
                    <preis>9.99</preis>
                    <menge>1</menge>
                    <waehrung>EUR</waehrung>
                </position>
                </artikelliste>
            </xml>
          </request>";
        $data = array('xml' => $xml, 'md5sum' => md5($xml));
        // use key 'http' even if you send the request to https://...
        $options = array(
            'http' => array(
                'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
                'method'  => 'POST',
                'content' => http_build_query($data),
            ),
        );
        $context  = stream_context_create($options);
        $result = file_get_contents($this->_build_target_url('AuftragCreate'), false, $context);
        print_r($result)
    }
 
Basierend auf dem Open Source Code sieht das in der API wie folgt aus:
 

Die Adresse mit der Kundennummer 10028 existiert auch in der Datenbank:

icon

Beste Antwort von Matthias B von digitalXL 28 July 2021, 14:20

Original anzeigen

5 Antworten

Hallo, ich kann das Problem bestätigen. Gibt es hierzu schon eine Lösung?

Ich habe gerade auch einen call mit AdresseCreate getestet. Dieser gibt zwar ein erfolgreiches Anlegen der Adresse und neue id zurück, der erzeugte Adresseintrag ist aber wie im obigen Post komplett leer. Projektkürzel werden auch nicht berücksichtigt.

Benutzerebene 7
Abzeichen +2

Hallo @Mail und @Denis Basovic,

vielen Dank, dass ihr uns von dem Fehler berichtet habt.

Ein Update steht ab sofort bereit und sollte das Problem lösen.

Wenn dem nicht so ist, dann meldet euch bitte noch einmal bei uns.

Vielen Dank im Voraus, auch für euer Verständnis und viele Grüße,

Matthias vom xentral Customer Success Team

Hallo @Matthias Berkmann-Schäfer,

Wir stehen mit unserem Projekt (self hosted Community Edition) vor dem gleichen Problem. Gibt es auch für uns eine Workaround / Quick Fix oder Update? Aktuelle Version ist v. 20.3.

Besten Dank!

Benutzerebene 3
Abzeichen +1

Das Problem besteht immer noch! 

Unser Projekt ist ein cloud-projekt nach dem schema https://12345676.xentral.biz/api/

      <response>
<status>
<action>AuftragCreate</action>
<message>Invalid key (id)</message>
<messageCode>5</messageCode>
</status>
<xml>address not found</xml>
</response>

 

Benutzerebene 3
Abzeichen +1

Update: mit der Version 22.1.28 und “AuftragCreate” statt “BestellungCreate” funktioniert nun alles.

Antworten