Über die externe Anwendungsprogrammier-Schnittstelle (API) kann eine Preisanforderung auch direkt importiert werden.
Hinweis: Eine importierte Preisanforderung durchläuft wie üblich die Preisautomatik und das Regelwerk.
Ausnahme: Der API-User hat die Rolle "Preismanager". In diesem Fall wird die Preisanforderung direkt umgesetzt.
Die Programmanweisungen werden im JSON-Format durchgeführt. Beispiele in C# finden Sie unten.
=> Erzeugen des API-Autorisierungsschlüssels
Import von Stationspreisdaten im JSON-Format (POST) (PriceImportService): Preisdaten (Preisanforderung) pro Station einzeln schicken (PriceRequest)
Hinweis: Für den Import der Stationspreise werden die StationIDs der Stationen benötigt. Diese können mit dem => externen Abruf von Stationsdaten abgefragt werden.
Beispiel-Programmierung (in C#):
const string address = "https://webapps.huth.org/[mandantenname]/api/PriceImportService/PriceRequest";
var request = (HttpWebRequest)WebRequest.Create(address);
request.Accept = "application/json";
request.Method = "POST";
request.ContentType = "application/json";
request.Headers.Add("WebApiKey", "xxxxxxxxxxxxxxxxxxxxxxxxxxx");
// date ISO 8601 like in Javascript toJSON()
var local = new DateTime(2015, 10, 5, 18, 0, 0 );
var changeDate = local.ToUniversalTime().ToString("o");
// Z is the Zone designator for zero UTC offset
// without Z i must add offset
var localChangeDate = local.ToString("yyyy-MM-ddTHH:mm:ss+02:00");
using (var requestStream = request.GetRequestStream())
using (var writer = new StreamWriter(requestStream))
{
var content = @"{"+
"stationId:'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', " +
//"changeDate: '"+ localChangeDate+ "', "+
//"transferTime: xx, "+
"prices:["+
"{productId: 'xxxxxx', price: x.xxx},"+
"{productId: 'xxxxxx', price: x.xxx}] "+
"}";
writer.WriteLine(content);
}
try
{
var response = request.GetResponse();
var responseStream = response.GetResponseStream();
if (responseStream != null)
{
using (var reader = new StreamReader(responseStream))
{
Console.WriteLine(reader.ReadToEnd());
}
}
}
catch (WebException ex)
{
if (ex.Response != null && ex.Status == WebExceptionStatus.ProtocolError)
{
using (var stream = ex.Response.GetResponseStream())
if (stream != null)
{
using (var reader = new StreamReader(stream))
{
var msg = reader.ReadToEnd();
Console.WriteLine(msg);
}
}
}
}
Feldbezeichnung |
Erläuterung |
[mandantenname] |
kundenspezifische (Händler-)Bezeichnung (wird bei der Installation von HUTH vergeben) |
WebApiKey |
API-Autorisierungsschlüssel |
StationId |
Stations-ID |
productId |
Produktbezeichnung (z.B. Super) |
price |
Produktpreis (3 Dezimalstellen, Trennung durch Punkt) |
optional: |
ohne
=> sofort |
optional: transferTime |
ohne
=> sofort |
Mögliche Responses
200 = [OK]
201 = Created (angelegt)
400 = Bad Request (fehlerhafte Anfrage)
401 = Unauthorized (keine Authentifizierung)
403 = Forbidden (fehlende Berechtigung, z.B. Zugriff von einem Rechner, dessen IP-Adresse nicht auf der Whitelist steht)
404 = Not Found
405 = Method Not Allowed
415 = Unsupported Media Type
500 = Internal Server Error (Server-Fehler)
HUTH Elektronik Systeme GmbH - Stand: 11.07.2016 - Autor: Frank-Olaf Nagel