R4M
4. November 2025 um 15:13
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
5. November 2025 um 06:51
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
5. November 2025 um 07:54
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
5. November 2025 um 08:18
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
15. Februar 2026 um 14:25
9
gibts dazu schon was neues? ich hänge da auch gerade und kann keine order erstellen.
R4M
16. Februar 2026 um 07:06
10
Habe das aus zeitgründen nicht mehr verfolgt. Werde mich damit aber noch mal beschäftigen müssen.
vhafner
16. Februar 2026 um 07:19
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)?