Update der Rechnungs und Lieferaddresse von Kunden über REST API

Moin,

Wir nutzen Shopware 5.4.0 und haben gestern ein interessanten Bug gefunden.
Leider wissen wir nicht ob wir da irgendwas falsch machen oder Shopware dort seine Grenzen zieht.

Der Fall ist das wir über die API ein Kunden updaten wollen und ihm seine standard und lieferaddresse setzten wollen.

Derzeit hat der Kunde Addresse A als Liefer und Addrese A als Rechnungsaddresse, ziel ist es das der Kunde Addresse B als Liefer und Addresse A als Rechnungsaddresse hat.

Anbei der Payload den wir über die Shopware API /customer Ressource hochladen, welche uns auch ein Success = 1 zurück gibt.

Array
(
    [number] => x
    [firstname] => y
    [lastname] => z
    [salutation] => mr
    [active] => 1
    [email] => x@y.de
    [groupKey] => 282
    [paymentPreset] => 7
    [attribute] => Array
        (
            [uuid] => 856687be-5ca5-4513-a467-9c8adc0c96c6
        )

    [billing] => Array
        (
            [firstname] => y
            [lastname] => z
            [salutation] => mr
            [street] => ABC
            [city] => Test
            [zipcode] => 12345
            [country] => 2
            [company] => X Y Z
            [additionalAddressLine1] => 
            [additionalAddressLine2] => 
            [attribute] => Array
                (
                    [text1] => 83ca9158-c951-4c69-b7f4-2655c6a6174e
                )

        )

    [shipping] => Array
        (
            [firstname] => B
            [lastname] => C
            [salutation] => mr
            [street] => XYZ
            [city] => TEST
            [zipcode] => 98765
            [country] => 2
            [company] => A B C
            [additionalAddressLine1] => 
            [additionalAddressLine2] => 
            [attribute] => Array
                (
                    [text1] => 7f9276a7-b854-4c2b-9c43-173bee774f12
                )

        )

)

Liegt das Problem am Array oder ist es einfach nicht möglich?

Interessant ist, wenn der Kunde Zwei verschiede Liefer und Rechnungsaddressen hat dann würde der Payload anbei funktionieren.

Mit freundlichen Grüßen
Steffen

Benutzt mal anstatt shipping „defaultShippingAddress“ und billing „defaultBillingAddress“

Moin und vielen Dank für die schnelle Antwort

 

Array
(
    [number] => x
    [firstname] => y
    [lastname] => z
    [salutation] => mr
    [active] => 1
    [email] => x@y.de
    [groupKey] => 282
    [paymentPreset] => 7
    [attribute] => Array
        (
            [uuid] => 856687be-5ca5-4513-a467-9c8adc0c96c6
        )

    [defaultBillingAddress] => Array
        (
            [firstname] => y
            [lastname] => z
            [salutation] => mr
            [street] => ABC
            [city] => Test
            [zipcode] => 12345
            [country] => 2
            [company] => X Y Z
            [additionalAddressLine1] => 
            [additionalAddressLine2] => 
            [attribute] => Array
                (
                    [text1] => 83ca9158-c951-4c69-b7f4-2655c6a6174e
                )

        )

    [defaultShippingAddress] => Array
        (
            [firstname] => B
            [lastname] => C
            [salutation] => mr
            [street] => XYZ
            [city] => TEST
            [zipcode] => 98765
            [country] => 2
            [company] => A B C
            [additionalAddressLine1] => 
            [additionalAddressLine2] => 
            [attribute] => Array
                (
                    [text1] => 7f9276a7-b854-4c2b-9c43-173bee774f12
                )

        )

)

Führt leider zu dem selben ergebniss

Ich würde das Thema gerne nochmal pushen. Ich kann mir nicht vorstellen das Shopware diese Funktion nicht implementiert hat.

Ich habe das soeben auch auf unserer Testumgebung geprüft, welche auf 5.4.6 läuft. Dort konnte ich das selbe Verhalten feststellen.

Dieses Problem besteht weiterhin. Wir haben jetzt auch die Test Umgebung auf die neuste Version geupdatet 5.5.3, welche immernoch das selbe Verhalten aufweißt.
Ist der Weg die Shipping und Billing addresse über den Kunden zu setzten der Falsche?

Guten Morgen @sHamann‍,

vielleicht gibst du nicht alle Pflichtfelder mit?

Und im Result (https://developers.shopware.com/developers-guide/rest-api/examples/customer/#result-0) heißt es „countryId“ statt „country“, vielleicht scheitert es daran?

Oder vielleicht musst du auch erst die Adresse als solche anlegen (https://developers.shopware.com/developers-guide/rest-api/api-resource-address/#post-(create)-and-put-(update)) und beim Kunden nur die ID mitgeben?

@karlharris schrieb:

Guten Morgen @sHamann‍,

vielleicht gibst du nicht alle Pflichtfelder mit?

Und im Result (https://developers.shopware.com/developers-guide/rest-api/examples/customer/#result-0) heißt es „countryId“ statt „country“, vielleicht scheitert es daran?

Oder vielleicht musst du auch erst die Adresse als solche anlegen (https://developers.shopware.com/developers-guide/rest-api/api-resource-address/#post-(create)-and-put-(update)) und beim Kunden nur die ID mitgeben?

Den Fall das ich nicht alle Pflichtfelder mit gebe können wir denke ich ausschliessen da die Shopware API dann in bisherigen Fällen expliziet sagt das ein Feld fehlt.
Habe selbigen Import mit „countryId“ laufen lassen was leider auch nicht geklappt hat.

Der dritte Ansatz war sehr interessant, bin dem mal nachgegangen, hab dafür einfach Standard mäßig eine Address ID übergeben, ist der folgende Aufbau richtig?

    [defaultBillingAddress] => Array
        (
            [id] => 1234
        )

 

Ich hätte es jetzt eher so probiert (habe grad keine Testinstanz zur Hand^^):

[defaultBillingAddress] => 1234

 

@karlharris schrieb:

Ich hätte es jetzt eher so probiert (habe grad keine Testinstanz zur Hand^^):

[defaultBillingAddress] => 1234

 

hab beide Varianten versucht, beides selbes ergebniss wie vorher. Wieder wirft mir die Shopware API aber kein Fehler zurück.