![]() |
benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Liste der Anhänge anzeigen (Anzahl: 1)
Hat jemand Erfahrung mit der IDS-Schnittstelle von ITEK
Ich habe gerade mal den Artikeldepplink hinbekommen. Wie kann ich einen Warenkorb (XML) senden oder empfangen. Ich habe einfach keinen Ansatz. Irgendwie muß das doch mit TIdHTTP zu lösen gehen. Die Schnittstellenbeschreibung habe ich, auch einen Zugang zum Händler. |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Setzt Du Version 1.3 oder 2 um?
Zu Version 1.3 Das Problem ist, das der Shop des Händlers ja im Browser läuft. Den kannst Du in Deiner Software nicht abbilden. Du musst also den Warenkorb an den Standard-Browser beim Benutzer übergeben. Schau Dir dazu den Beispiel-Warenkorb an. Vom Prinzip her erstellst Du bei jeden Aufruf eine HTML-Datei, die alle Formulardaten enthält und im HTML-Header eine Weiterleitung auf die Schnittstelle. So wird der Shop gestartet. Dem Shop musst Du auf diesem Wege auch einen Parameter mit einem Backlink übergeben. Dieser kann z.B. eine URL auf einen von Dir programmierte PHP-Datei sein, die Du oder der Kunde hosten muss. Diese wird dann am Ende vom Shop des Händlers aufgerufen und die ganzen Ergebniswerte werden als Parameter dieser URL übergeben. Die schreibst Du dann in der PHP z.B. in eine Datei mit dem Namen der Session-ID. Der Anwender bekommt nun mitgeteilt, das er den Browser schliessen und das Ergebnis in der Software abholen kann. Hier holst Du Dir per Download die Datei vom deinem Server ab. Das ist so grob ins blaue geschrieben der Ablauf. Version 2 werde ich in kürze umsetzen. |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Hallo sh17,
ich sitze auch gerade an der IDS Schnittstelle. Hättest du mal ein Beispiel wie das ganze funktioniert? Grüße |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
An welcher Stelle stehst Du denn? Wie es generell funktioniert? Die Beispiele von ITEK kennst Du?
|
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Hey,
ganz am Anfang. Den Import in mein System habe ich mir Anhand von Beispielen zusammengebastelt. Woran es bei mir scheitert, ist der Aufruf des Shops.
Delphi-Quellcode:
Bei Header steht'Content-Type: multipart/form-data' drin, in PostData die Zugangsdaten und HookUrl.
WebBrowser1.Navigate(url, EmptyParam, EmptyParam, PostData,Headers);
Habe es auch mit
Delphi-Quellcode:
probiert und die Daten als StringList übergeben, geht auch nicht.
idHTTP.POST(url,data)
Es scheitert also schon am Aufruf des Shops aus meiner Anwendung heraus. Grüße und Danke für die Hilfe. |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
und was passiert dann?
Alternativ kannst du auch eine HTML-Datei erzeugen und die dann im Browser öffnen, das müsste in jedem Fall funktionieren, um diese Fehlerquelle schon einmal auszuschließen.
Code:
<!doctype html public "-//W3C//DTD HTML 3.2 //EN">
<html><head><title>IDS-Connect Schnittstelle WKE</title></head> <body onload="document.forms['wke'].submit();"> <form id="wke" name="adt" action="https://www.gco...." method="post"> <input type="hidden" name="kndnr" value="..." size="50" maxlength="50"> <input type="hidden" name="name_kunde" value="..." size="50" maxlength="50"> <input type="hidden" name="pw_kunde" value="..." size="50" maxlength="50"> <input type="hidden" name="version" value="1.3" size="5" maxlength="5"> <input type="hidden" name="action" value="WKE" size="3" maxlength="3"> <input type="hidden" name="hookurl" value="https://www......" size="256" maxlength="256"> </form></body></html> |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
ich bekomme die vielsagende Meldung
"Bei der Verarbeitung der IDS-Anfrage ist ein Fehler aufgetreten."? Ich probiere jetz mal das mit der html Datei. |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Vielen vielen Dank.
Genau das war es. Ich finde es zwar ein wenig blöd jedesmal eine html-Datei zu erzeugen, aber das scheint da so zu sein. |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
hattest Du vorher all die Parameter per Post übergeben, die auch in der HTML stehen?
|
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Delphi-Quellcode:
so hatte ich das gemacht. Und das hat nicht funktioniert.MFP := TIdMultipartFormDataStream.Create; MFP.AddFormField('kndnr', Edit1.Text); |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
was ist mit form-id und form-name, die sind auch wichtig
|
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Das hatte ich nicht. Ich dachte es reicht wenn ich die ganzen Daten (hookurl,kdnr usw.) per Post mitgebe und gut.
Ich wusste nicht das ich ein komplettes Formular senden muss. |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Blödsinn, die werden ja gar nicht übertragen. Hab das selbst noch nicht eingebettet ausprobiert. Unterstützt WebBrowser per Standard Weiterleitung?
(Über die technische Eleganz der Schnittstelle lässt sich natürlich streiten. Aber naja.) |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Scheinbar nicht.
Delphi-Quellcode:
So hatte ich das versucht.
strData :=
'KNDR=' + URLEncode(Edit1.Text) + '&' + 'NAME_KUNDE=' + URLEncode(Edit2.Text) + '&' + 'ACTION=' + URLEncode('SV') + '&' + 'HOOKURL=' + URLEncode('http://.....................'); PostData := VarArrayCreate([0, Length(strData) - 1], varByte); for i := 1 to Length(strData) do PostData[i-1] := Ord(strData[i]); Headers := 'Content-Type: multipart/form-data' + #10#13; WebBrowser1.Navigate('https://eshop................', EmptyParam, EmptyParam, PostData,Headers); |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Zitat:
#10#13 ist falsch, wenn Windows-Zeilenumbruch CRLF, dann wäre es #13#10 oder bei zwei Zeilenumbrüchen #10#10 (CR+CR) oder #13#10#13#10 (CRLF+CRLF). #10#13 (LF+CR) wäre Linux/Unix-Zeilenumbruch + alter Mac-Zeilenumbruch. (wobei Mac inzwischen von #13 auf #10 umgestiegen ist) |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Sorry wenn ich das Thema noch einmal aufgreife.
Ich erstelle gerade auch die Itek IDS Schnittstelle. Warenkorb senden klappt auch alles. Nur habe ich keinen Ansatz wie das HookURL Formular aussehen soll. Könnt ihr mir da kurz weiterhelfen. Ich habe aktuell eine HTML Seite "warenkorb.html" erstellt. Die aber keinen Warenkorb erhält.
Code:
Es fehlt mir nur noch das HTML Formular aber hier stehe ich voll auf der Leitung
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta content="text/html" http-equiv="Content-Type" /> <title>Untitled 1</title> </head> <body> <form> Warenkorb:<br/> <input type="text" id="warenkorb" name="warenkorb" style="width: 750px; height: 666px" /> </form> </body> </html> Danke und Grüße Stam |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Das läuft so, du erstellst die HTML-Seite mit dem Warenkorb und der Callback-URL
Code:
Die rufst du auf und landest im Shop. Wenn der Anwender dann auf IDS-Connect senden drückt, ruft der Shop den Callback mit den Daten auf.
<!doctype html public "-//W3C//DTD HTML 3.2 //EN">
<html><head><title>IDS-Connect Schnittstelle WKS</title></head> <body onload="document.forms['wks'].submit();"> <form id="wks" name="wks" action="https://haendler.de/ids" method="post"> <input type="hidden" name="kndnr" value="..." size="50" maxlength="50"> <input type="hidden" name="name_kunde" value="..." size="50" maxlength="50"> <input type="hidden" name="pw_kunde" value="...." size="50" maxlength="50"> <input type="hidden" name="version" value="1.3" size="5" maxlength="5"> <textarea cols="1" rows="1" name="warenkorb"> <?xml version="1.0" encoding="UTF-8"?> <Warenkorb xmlns="http://www.itek.de/Shop-Anbindung/Warenkorb/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <WarenkorbInfo> <Date>2019-08-22</Date> <Time>11:52:40</Time> <Version>2.0</Version> </WarenkorbInfo> <Order> <OrderInfo> <InquiryNo>2019-20112</InquiryNo> <DeliveryDate>2019-08-22</DeliveryDate> <ModeOfShipment>Lieferung</ModeOfShipment> <Cur>EUR</Cur> </OrderInfo> <OrderItem> <ItemChara>normal</ItemChara> <RefItems> <Customer>MDU=</Customer> <CustomerSubNo>1</CustomerSubNo> </RefItems> <ArtNo>30126867</ArtNo> <Qty>1.00</Qty> <QU></QU> </OrderItem> </Order> </Warenkorb> </textarea> <input type="hidden" name="action" value="WKS" size="3" maxlength="3"> <input type="hidden" name="hookurl" value="https://www.meineseite.de/idsconnect.php?sid=3FEFFA9C85464D0BB49375DA854A7A08" size="256" maxlength="256"> </form></body></html> ![]() Das kann eine ganz normale PHP sein, Hauptsache https
Code:
Die speichert die Antwort vom Shop in eine Datei auf dem Webserver, die kannst Du dann öffnen und weiterverarbeiten.
<?
if (!isset($_REQUEST["sid"])) exit; if (isset($_REQUEST["warenkorb"])) { $fp = fopen("../../idsconnect/".$_REQUEST["sid"], "w"); fputs($fp, ( get_magic_quotes_gpc() ) ? stripslashes($_REQUEST["warenkorb"]) : $_REQUEST["warenkorb"]); fclose($fp); ?> <html> <head> <title>IDS-SCHNITTSTELLE</title> </head> <body> <h1>Schließen Sie nun den Browser und setzen Sie die Bearbeitung in der Software fort!</h1> </body> </html> <? } else { if (file_exists("../../idsconnect/".$_REQUEST["sid"])) { $datei = file("../../idsconnect/".$_REQUEST["sid"]); foreach($datei as $meine_datei) { echo $meine_datei; } } } ?> |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Hallo Sven,
vielen Dank für deine tolle Hilfe und Beispiele. Ich habe das von Dir mal so eingebaut. Das hat auch sehr gut geklappt. Die PHP Datei legt die Datei an. Ich wollte mal nun einen anderen Versuch starten. Und zwar rufe ich ein WebBrowser Fenster in meiner Software auf. Mein Gedanke war nun bei der Warenkorb-Rückgabe bei LoadComplete der Website ein Objekt auszulesen das die Bezeichnung "Warenkorb" hat. Also das in dem der Warenkorb gespeichert ist. Ich habe das mal vor jahren in ASP gemacht. Hat auch gut funktioniert bis auf die Umlaute. Jetzt in meinem aktuellen Projekt hat ich auch keinen Windows Server laufen, dass ich eine ASP Seite verwenden kann. Möchte auch das schlankere PHP verwenden. Meine aktuelle idsconnect.php
Code:
Wenn ich das so mache, erhalte ich eine Fehlermeldung von ITEK mit der XML Verarbeitung. Ich habe festgestellt, dass wenn & Zeichen im Warenkorb sind geht es so nicht. In der Datei mit deinem Code wird das & Zeichen auch mit & gespeichert. Somit kommt die ITEK-Validierung mit dem & Zeichen in der Textarea nicht klar. Kennst du noch eine Variante wie das & Zeichen in der Textarea auch wie in der Warenkorb-Datei angezeigt wird.
<html>
<head> <title>IDS-SCHNITTSTELLE</title> </head> <body> <h1>Warenkorb Rückgabe:</h1> <textarea id="warenkorb"><?php echo $_REQUEST["warenkorb"] ?></textarea> </body> </html> Sorry für die Fragen, aber Web-Code ist aktuell nicht meine Welt. Grüße und Danke |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Ich glaube ich verstehe nicht ganz was Du machen möchtest, oder Du, je nachdem.
Nochmal zum Verständnis, die HTML-Seite, die den Warenkorb enthält, muss auf keinem WebServer liegen. Die wird jedes mal on the fly und zum Wegwerfen neu aus der Software erzeugt, aufgerufen und dann muss deine Software warten, bis der Anwender den Warenkorb zurückschickt. Mit dem neuen Edge Browser könntest Du das ganze komplett in die Anwendung einbetten, musst du aber nicht. Also HTML-Seite erzeugen, temporär speichern, per ShellExecute aufrufen und den Anwender machen lassen. Wenn er fertig ist, gespeicherte IDS-Datei aus der PHP abholen. |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Hallo Sven,
danke für den Hinweis. Jetzt habe ich es hinbekommen. Ich hole jetzt auch die Datei mit meiner Anwendung. Danke noch mal!!! |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Moin,
ich reanimiere den Thread mal, da ich momentan ein Problem mit einer Ansteuerung der IDS-Schnittstelle habe. Die Umsetzung, die mir Probleme macht, ist mit der WebView von Winsoft gebaut, welche quasi die Webview2-Umsetzung von Microsoft ist. Diese WebView schickt letztendlich ein Request mit der Shop-URL, der Methode "POST", ContentTyp "application/x-www-form-urlencoded" im Header und den Zugangsdaten/Angaben als Daten in entsprechender Form drangehängt, wonach man den Shop nach ausgeführter Aktion dann im Browser im Programm selbst hat. Die Nutzung von form-urlencoded entspricht recht offensichtlich nicht der ![]() Dummerweise funktioniert das aber nun bei bereits 2 Shops nicht mehr, weswegen ich nun Nachforschungen anstelle, bei denen ich unter anderem auf diesen Thread gestoßen bin. Da die Funktionalität mit Browser bei mir in der Anwendung eingebettet ist, kommt die hier beschriebene HTML-Lösung wohl nicht in Frage. Dementsprechend wollte ich hier mal nachhorchen, ob das sonst wer vielleicht noch in Delphi umgesetzt hat. Ich habe auch noch IDHTTP in Betracht gezogen, doch der Schnittstellenbeschreibung nach müsste das eigentlich auch direkt mit der WebView hinzubekommen sein. |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Die HTML-Variante ist ja im Prinzip nichts anderes, nur dass sie eben das Formular abschickt. Was genau funktioniert denn nicht? Das Login? Oder kommt man gar nicht erst auf die Ziel-URL. Welche Lieferanten sind denn die problematischen? Gern auch per PN.
|
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Hallo,
ich hätte da auch eine Frage zu IDS. Der Hinweis eine HTML Datei zu erstellen und die Form Daten darüber abzuschicken war sehr hilfreich. Ich frage mich aber, ob man bei den IDS Funktionen "Schnittstellenversion" und "Logininformationen" auch so vorgeht oder ob man diese direkt Abfragen können soll und die Antwort dann direkt als XML zurückgegeben wird? In der Doku steht nur, dass nur der Aktionscode angegeben werden muss. Keine Hook Url. |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
nein, da kann man einfach einen HTTP-POST-Request an die entsprechende URL absetzen und den Parameter action=SV bzw. action=LI im Header mitgeben, dann gibt's es direkt eine Antwort im Response
|
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Danke, das ganze habe ich nun so umgesetzt. Ich implementiere aktuell die Artikelsuche. Dabei sind mir noch ein paar Dinge unklar.
1) So wie ich das verstehe wird die Suchanfrage an den Shop weitergeleitet, der Kunde automatisch eingeloggt, intern die Suche mit dem Such String ("searchterm") ausgeführt und danach das Ergebniss im xml Format an die Hookurl übertragen. Heißt das es soll bei dieser Aktion keine weitere Interaktion mit der Seite möglich sein? (Aber wieso werden die Daten dann nicht auch einfach direkt als Antwort im Response übertragen?) 2) Es soll möglich sein ein Target Parameter an den Shop zu übergeben: Zitat:
3) Ich überlege wie ich mit großen Datensätzen umgehen soll. Wenn z.B. 3000 Artikel zu einem Suchergebnis passen würde ich diese normalerweise auf mehrere Anfragen aufteilen, also Paging betreiben. In der IDS Doku steht dazu aber nichts. Viele Grüße |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Zitat:
keine vollständige Automatik, aus Gründen.... Zitat:
Angabe des Frames, in der die Aktualisierung nach dem Abschluss der Rück-Kommunikation durch den Shop erfolgt. Wenn Du also die Kommunikation mit dem Shop über den Browser in ein eigenes Formular einbettest, kannst Du ja darauf reagieren, wenn sich die Seite/Frame (über Target) ändert. Nach Aufruf der Hook-URL wird die Response der Hook-URL eben in diesem Target dargestellt. Du könntest z.B. als Response der Hook-URL <html><body>Aufruf beendet, zurück zur Software</body></html> ausgeben, oder etwas, was von dir ist. Zitat:
|
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Zitat:
Zitat:
|
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
Unglaublich hilfreiches Thema. Nur dadurch habe ich angefangen die Schnittstelle zu verstehen.
Ich bin an dem Punkt wo ich einzelne Aktionen durch HTML Dateien erzwingen kann. Eigentlich will ich nur die Artikeldaten aus einem Shop empfangen nachdem ich nach dem Artikel gesucht habe. Aber es scheint so zu sein, dass nur der Warenkorb an die HOOKURL gesendet werden kann. Wie kriege ich es dann hin, den gefundenen Artikel in den Warenkorb zu stecken und den Warenkorb anschliessend zu senden? Und das alles in einem Request? |
AW: benötige Hilfe zur Umsetzung der IDS - Scnittstelle von ITEK
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz