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 ja Rechnungsadresse
shipTo nein Lieferadresse
positions ja Produkte
transactions nein Transaktionsdaten
notice nein Kunden Notiz
dcid nein ID der Lieferkonfition
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

Die Parameter iid, optional und ean sind wie folgt zu betrachten: Wenn die Position über EAN referenziert wird , kann IID und optional leer gelassen werden.

Wenn die Position über IID referenziert wird, kann die ean oder optional leer gelassen werden.

Parameter Pflicht Typ Beschreibung Beispiel
iid nein, wenn ean übergeben integer Produkt ID 10026
optional nein, wenn ean übergeben string Größe / Variante S
ean nein, wenn ean optional integer EAN 4484442168293
count ja integer Menge 1
gross ja integer Brutto Preis 999
net ja integer Netto Preis 839
currency ja string Währung EUR
vat ja integer Steuersatz 1900
priceType nein
custom1 nein
custom2 nein
custom3 nein
name ja string Produkt Name T-Shirt - Baumwolle
itemNumber ja string Artikelnummer 10026
salesman nein integer Verkäufer UID 1
properties nein object Eigenschaften
voucherSOID nein integer Gutschein ID 1234
voucherPasswords nein array Passwörter werden als Array übergeben, denn beim anlegen bei Kaufgutscheinen müssen auch mehrere übergeben werden können ["9e526b4b-86ed-4c51"]
voucherSendMail nein string Um den gekauften Gutschein per eMail zu versenden, kann hier eine eMail übergeben werden mail@example.com
turnoverInfo nein 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.

Saferpay

Parameter Wert Beschreibung
provider saferpay
id CECfQ... Transaktion ID

Saferpay Payment Page

Parameter Wert Beschreibung
provider saferpaypp
id CECfQ... Transaktion ID

Sofortueberweisung

Parameter Wert Beschreibung
provider sofortueberweisung
id 74323-159488-5213 Transaktion ID

Paypal

Parameter Wert Beschreibung
provider paypal
id 09E96895......... Transaktion ID
token EC-6F664............ Token

Amazon Pay

Parameter Wert Beschreibung
provider amazon
id CECfQ... Transaktion ID

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"
        }
    }
}