R4M
November 4, 2025, 3:13pm
1
Versuche über die API (SW 6.7.3.0) eine Bestellung zu erzeugen. Bei der Übergabe der Versandkosten (shippingCosts) habe ich jetzt jedoch große Fragezeichen im Gesicht. Oder ich bin total blind.
Mein Script:
$data['shippingCosts'] = [
'unitPrice' => 0,
'totalPrice' => 0,
'quantity' => 1,
'calculatedTaxes' => [ 'price' => 0, 'tax' => 0, 'taxRate' => 19 ],
'taxRules' => [ 'taxRate' => 19, 'percentage' => 100 ]
];
Fehlermeldung von der API:
Argument #1 ($tax) must be of type array, int given
[file] => .../shopware/core/Framework/DataAbstractionLayer/FieldSerializer/CartPriceFieldSerializer.php
[line] => 49
Auszug aus dieser Funktion:
$taxRules = array_map(
fn (array $tax) => new TaxRule( <-- line 49
(float) $tax['taxRate'],
(float) $tax['percentage']
),
$decoded['taxRules']
);
Ich verstehe die Fehlermeldung nicht. Es wird doch ein Array übergeben.
Ne .0 Version…vielleicht klappt es wieder mit der gerade erschienenen 6.7.4.0?
Hast du evtl. ein array drum herum vergessen? Shopware erwartet hier ein array an Regeln.
‚taxRules‘ => [[ ‚taxRate‘ => 19, ‚percentage‘ => 100 ]]
Viele Grüße
R4M
November 5, 2025, 6:51am
4
Also nach meiner Ansicht ist das schon ein Array:
'taxRules' => [ 'taxRate' => 19, 'percentage' => 100 ]
Auch das dopplet gemoppeltes Array
'taxRules' => [ [ 'taxRate' => 19, 'percentage' => 100 ] ]
zeigt exakt die selbe Fehlermeldung.
Selbe Zeile ist übrigens auch beim Preis enthalten und da gibt es keine Fehlermeldung.
$order['shippingCosts'] =
['unitPrice' => $value['DELCOST'],
'totalPrice' => $value['DELCOST'],
'quantity' => 1,
'calculatedTaxes' => [['tax' => $value['DELCOST'],
'taxRate' => $value['DELVAT'],
'price' => $value['DELCOST'],
]],
'taxRules' => [['taxRate' => $value['DELVAT'],
'percentage'=> 100,
]],
];
So hat das bisher funktioniert.
R4M
November 5, 2025, 7:54am
6
Möglich, dass es bisher mal so war, aber aktuell ist das sehr komisch.
Kleiner Test:
$data['price'] = [
'netPrice' => 100.84,
'totalPrice' => 120,
'positionPrice' => 120,
'rawTotal' => 120,
'taxStatus' => 'gross',
'calculatedTaxes' => [[ 'tax' => 19.16, 'taxRate' => 19 ]],
'taxRules' => [[ 'taxRate' => 19, 'percentage' => 100 ]]
];
Fehler:
Warning: Undefined array key „price“
$data['shippingCosts'] = [
'unitPrice' => 0,
'totalPrice' => 0,
'quantity' => 1,
'calculatedTaxes' => [[ 'price' => 0, 'tax' => 0, 'taxRate' => 19 ]],
'taxRules' => [[ 'taxRate' => 19, 'percentage' => 100 ]]
];
Fehler:
Argument #1 ($tax) must be of type array, int given
Also ich kann das nicht nachvollziehen.
Nachtrag:
Habe soeben auf 6.7.4.0 aktualisiert - Fehlermeldung bliebt unverändert
Hm, dann schau mal über den Admin beim Erstellen einer Order, ob sich dort im Request etwas geändert hat. Die Doku sagt auch nichts Neues dazu (Create a new Order resources. | Admin API )
R4M
November 5, 2025, 8:18am
8
Mit der Doku bau ich ja meine API-Anwenung Ist aber an dieser Stelle nicht wirklich hilfreich (das kenne ich schon).
taxRules object
Pricing based on multiple taxes.
Keine weiteren Angaben. Laut Doku ist das Feld nicht mal ein Pflichtfeld. Die API will aber dennoch diesen Wert
vhafner
February 15, 2026, 2:25pm
9
gibts dazu schon was neues? ich hänge da auch gerade und kann keine order erstellen.
R4M
February 16, 2026, 7:06am
10
Habe das aus zeitgründen nicht mehr verfolgt. Werde mich damit aber noch mal beschäftigen müssen.
vhafner
February 16, 2026, 7:19am
11
danke
einerseits sollte es gar nicht required sein, aber wenn ich es nicht mitschicke, kommt fehler, dass es fehlt
und wenn ich es mitschicke, kommt fehler, dass es ein array sein muss…
und auch das beispiel aus der doku mit der ganz simplen, leeren bestellung funktioniert auch nicht
hat wer ein beispiel-payload mit einer “leeren” minimal-bestellung (das man danach ev.über die API befüllen kann)?