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