Zum Inhalt

Bestellungen anlegen

Die Bestellungen können über einen POST-Request über die URL /api/legacy/order angelegt werden. Das Ergebnis wird als Dataset zurückgeliefert.

Struktur

Parameter pflicht Beschreibung
companyOrderID ja Bestellnummer Mandant
shid ja Mandanten ID
user ja Kunde
sellTo nein Adresse
positions ja Produkte
transactions nein Transaktionsdaten
sys nein Steuern der Verarbeitung nach dem anlegen der Bestellung

User

Hier werden die Kundendaten übergeben

Parameter Typ Beschreibung Beispiel
userName string Benutzername b2c@example.com
formOfAddress string Anrede Herr
letterFormOfAddress string Briefanrede Sehr geehrter Herr
birthday string Geburtstag 04.01.1977
custom1 string
custom2 string
company string Firma schukai GmbH

sellTo

Adresse des Kunden. Diese wird als Rechnungsadresse verwendet. Wenn keine Adresse übergeben wurde, wir die Standard Rechnungdadresse des Kunden geladen. Wird diese nicht gefunden, kann die Bestellung nicht angelegt werden.

Alternativ kann eine aid übergeben, es wird geprüft ob diese dem Kunden gehört, wenn diese nicht existiert oder nicht passt, kann die Bestellung nicht angelegt werden.

Parameter Typ Beschreibung Beispiel
aid integer ID der Adresse (optional) 269
address1 string Strasse und Hausnummer Eichenstrasse 26
address2 string Zusatz / CO Max Mustermann
zip string Postleitzahl 82290
city string Stadt Landsberied

shipTo

Lieferadresse des Kunden (optional) Wird keine Lieferadresse wird diese gleich der Rechnungsadresse gesetzt.

Parameter Typ Beschreibung Beispiel
aid integer ID der Adresse (optional) 269
address1 string Strasse und Hausnummer Eichenstrasse 26
address2 string Zusatz / CO Max Mustermann
zip string Postleitzahl 82290
city string Stadt Landsberied

positions

Parameter Typ Beschreibung Beispiel
iid integer Produkt ID 10026
optional string Größe / Variante S
ean integer EAN 4484442168293
count integer Menge 1
gross integer Brutto Preis 999
net integer Netto Preis 839
currency string Währung EUR
vat integer Steuersatz 1900
priceType
custom1
custom2
custom3
name string Produkt Name T-Shirt - Baumwolle
itemNumber string Artikelnummer 10026
salesman integer Verkäufer UID 1
properties object Eigenschaften
voucherSOID integer Gutschein ID 1234
voucherPasswords array Passwörter werden als Array übergeben, denn beim anlegen bei Kaufgutscheinen müssen auch mehrere übergeben werden können ["9e526b4b-86ed-4c51"]
turnoverInfo object Informationen für eine Retoure

positions turnoverInfo

Informationen für eine Retoure

Parameter Typ Beschreibung Beispiel
orderReference string Rechnungsnummer der Bestellung 0001/02/1251
reason integer Grund 1

sys

Steuern der Verarbeitung nach dem anlegen der Bestellung

Parameter Typ Beschreibung Default Wert
reserverStockPositions boolean Reservieren der Bestände true
createDelivery boolean soll eine Lieferung erstellt werden false
setDelivered boolean soll die Lieferung gleich als ausgeliefert gesetzt werden false
setBillNumber boolean soll die Rechnungsnummer gestezt werden false
createEdiOrder boolean soll eine EDI Order erstellt werden false

transactions

Payment Transaktionen

Parameter Typ Beschreibung Beispiel
provider string Payment Provider paypal
type integer authorize Code (shop_payment_authorize_response_reason_codes)
id string Transaction ID des Payment Providers
token string Feld zur identifizierung beim Payment Provider
amount integer Betrag der Transaktion 1995
currency string Währung EUR
authcode string Max 10 Zeichen
authmsg string Max 100 Zeichen
result integer
captureState string Status der Buchung, der Wert kann leer , CAPTURED oder CANCELED sein CAPTURED
captureAmount integer Gebuchter Betrag 1995
resultData array Ergebnis Daten / Rückanwort des Providers die für die spätere Verarbeitung benötigt werden []
resultText string
erpID string
paymentPTID integer Payment Type ID

Wenn die paymentPTID übergeben wurde, wird geprüft ob der Kunde diese Bezahlart schon verwendet hat , wenn nicht wird eine neue Bezahlart angelegt. Die so ermittelte PID aus der sh_payment Tabelle wird in den Transaktionen gespeichert.

Beispiel

Ein komplettes Beispiel um eine Bestellung anzulegen

{
  "companyOrderID": "0001/01/0f001",
  "billNumber": "0001/01/00001",
  "notice": "Das ist eine Kassen Bestellung",
  "shid": 1,
  "transactions": [
    {
      "provider": "alvine",
      "type": "",
      "id": "",
      "token": "",
      "amount": "1256",
      "currency": "EUR",
      "authcode": "CAPTURED",
      "authmsg": "CAPTURED",
      "result": "",
      "captureState": "CAPTURED",
      "captureAmount": "1256",
      "resultData": "",
      "resultText": "",
      "erpID": "",
      "paymentPTID": 20
    },
    {
      "provider": "alvine",
      "type": "",
      "id": "",
      "token": "",
      "amount": "5569",
      "currency": "EUR",
      "authcode": "CAPTURED",
      "authmsg": "CAPTURED",
      "result": "",
      "captureState": "CAPTURED",
      "captureAmount": "5569",
      "resultData": "",
      "resultText": "",
      "erpID": "",
      "paymentPTID": 30
    }
  ],
  "user": {
    "userName": "[email protected]",
    "formOfAddress": "",
    "letterFormOfAddress": "",
    "birthday": "04.01.1977",
    "custom1": "",
    "custom2": "",
    "company": "schukai GmbH"
  },
  "sellTo": {
    "address1": "Eichenstrasse 26",
    "address2": "",
    "zip": "82290",
    "city": "Landsberied",
    "country": "de"
  },
  "shipTo": null,
  "positions": [
    {
      "iid": "10026",
      "optional": "S",
      "ean": "4484442168293",
      "count": 1,
      "gross": 999,
      "net": 839,
      "currency": "EUR",
      "vat": 1900,
      "priceType": "",
      "custom1": "",
      "custom2": "",
      "custom3": "",
      "name": "T-Shirt - Baumwolle",
      "itemNumber": "10026",
      "salesman": 1,
      "properties":[
        {
            "name":"shoppingcard.erp.discounttype",
            "value":"3"
        },
        {
            "name":"my.property",
            "value":"myValue"
        }
        ]
    }
  ],
  "sys": {
    "reserverStockPositions": true,
    "createDelivery": true,
    "setDelivered":true,
    "setBillNumber": true,
    "createEdiOrder": false
  }
}

Rückgabe

{
    "dataset": [
        {
            "dataset": {
                "OID": 1028,
                "errorCode": null,
                "error": [],
                "createDelivery": true,
                "orderStatus": "51",
                "setBillNumber": true,
                "createEdiOrder": false,
                "reserverStockPositions": true,
                "setDelivered": true
            },
            "sys": {
                "message": "201 Created",
                "code": 201
            }
        }
    ],
    "sys": {
        "message": "201 Created",
        "code": 201
    }
}

Mehrere Bestellungen anlegen

Mehere Bestellungen können über ein Dataset übergeben werden

{
  "dataset": {
    "0": {
      "companyOrderID": "0001/01/00001",
      "billNumber": "0001/01/00001",
      "notice": "",
      "shid": 1,
      "user": {},
      "sellTo": {},
      "shipTo": null,
      "positions": [],
      "sys": {}
    },
    "1": {
      "companyOrderID": "0001/01/00002",
      "billNumber": "0001/01/00002",
      "notice": "",
      "shid": 1,
      "user": {},
      "sellTo": {},
      "shipTo": null,
      "positions": [],
      "sys": {}
    },
  }
}

Fehlermeldungen

Werte fehlen

Wenn Werte nicht übergeben wurden wir der Stautscode 400 gesendet

{
    "dataset": [
        {
            "sys": {
                "error": {
                    "code": 400,
                    "message": "400 Bad Request"
                }
            }
        }
    ],
    "sys": {
        "error": {
            "code": 400,
            "message": "400 Bad Request"
        }
    }
}

Bestellung gibt es schon

Bestellung wurde schon angelegt, hier wird der Statuscode 409 gesendet

{
    "dataset": [
        {
            "sys": {
                "error": {
                    "code": 409,
                    "message": "409 Conflict"
                }
            }
        }
    ],
    "sys": {
        "error": {
            "code": 409,
            "message": "409 Conflict"
        }
    }
}

Fehler Prodkt wurde nicht gefunden

Die Bestellung wird auf fehlerhaft gesetzt, wenn Positionen nicht gefunden wurden

{
    "dataset": [
        {
            "dataset": {
                "OID": 1033,
                "errorCode": null,
                "error": [
                    "IID 2 wurde nicht gefunden."
                ],
                "createDelivery": false,
                "orderStatus": "11",
                "setBillNumber": false,
                "createEdiOrder": false,
                "reserverStockPositions": true,
                "setDelivered": false
            },
            "sys": {
                "message": "201 Created",
                "code": 201
            }
        }
    ],
    "sys": {
        "message": "201 Created",
        "code": 201
    }
}

Fehler bei mehreren Bestellungen

Es können auch mehrere Bestellungen in einem Request angelegt werden, wenn es bei einigen zu Fehlern kommt wird im Dataset an der entsprechenden Stelle der exakte Fehlerstatus gesendet. Im sys Teil wird der Statuscode 400 gesendet, wenn nicht alle Statuscodes im Dataset identisch sind.

{
    "dataset": [
        {
            "sys": {
                "error": {
                    "code": 409,
                    "message": "409 Conflict"
                }
            }
        },
        {
            "dataset": {
                "OID": 1029,
                "errorCode": null,
                "error": [],
                "createDelivery": true,
                "orderStatus": "51",
                "setBillNumber": true,
                "createEdiOrder": false,
                "reserverStockPositions": true,
                "setDelivered": true
            },
            "sys": {
                "message": "201 Created",
                "code": 201
            }
        }
    ],
    "sys": {
        "error": {
            "code": 400,
            "message": "400 Bad Request"
        }
    }
}