[GastForen Programmierung/Entwicklung PHP und MySQL PHP und SOAP

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

PHP und SOAP

paddle
Beiträge gesamt: 3

21. Jan 2008, 16:38
Beitrag # 1 von 5
Bewertung:
(4065 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo

Ich müsste für einen kleinen Online-Shop die Bestellangaben mit SOAP an einen Server schicken, wo die Bestellungen verarbeitet werden. Nun sind die Angaben ziemlich komplex und ich weiss nicht recht, wie ich dies mit PHP schreiben muss.... habe schon mal folgendes ausprobiert, aber es funktioniert nicht:

Code
$client = new SoapClient("https://diewebsite.nl/OrderSendWebservice/Service.asmx?WSDL",  
array('proxy_login' => "someword",
'proxy_password' => "somepw"));

$arrMessageTypeSection=array();
$arrMessageTypeSection[0]=new SoapParam('test','MessageOwner');
$arrMessageTypeSection[1]=new SoapParam('flase','IsTest');

$arrCustomerSection=array();
$arrCustomerSection[0]=new SoapParam('test','CustomerId');
$arrCustomerSection[1]=new SoapParam('test','LastName');

$arrMessage=array();
$arrMessage[0]=new SoapParam($arrMessageTypeSection, 'MessageTypeSection');
$arrMessage[1]=new SoapParam($arrCustomerSection, 'CustomerSection');
$result = $client->__call("SendOrder",$arrMessage);


Infos zum Header:

Code
POST /OrderSendWebservice/Service.asmx HTTP/1.1 
Host: diewebsite.nl
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://denationaleapotheek.nl/SendOrder"


Hier die wdsl-Datei:

Code
<?xml version="1.0" encoding="utf-8"?> 
<wsdl:definitions
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:tns="http://denationaleapotheek.nl/"
xmlns:s1="http://denationaleapotheek.nl/Schemas/OrderSchema.xsd"xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
targetNamespace="http://denationaleapotheek.nl/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://denationaleapotheek.nl/">
<s:import namespace="http://denationaleapotheek.nl/Schemas/OrderSchema.xsd" />
<s:element name="SendOrder">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" ref="s1:message" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="SendOrderResponse">
<s:complexType />
</s:element>
<s:element name="DummyOrderMessage">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="filename" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="DummyOrderMessageResponse">
<s:complexType />
</s:element>
</s:schema>
<s:schema elementFormDefault="qualified" targetNamespace="http://denationaleapotheek.nl/Schemas/OrderSchema.xsd">
<s:element name="message">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="MessageTypeSection">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="MessageType" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Version" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Release" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="MessageOwner" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="IsTest" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element minOccurs="0" maxOccurs="1" name="InterchangeSection">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Sender">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="SenderID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="SenderContactName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="SenderTelephone" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="SenderEmail" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="SenderApplicationReference" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element minOccurs="0" maxOccurs="1" name="Receiver">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ReceiverID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ReceiverContactName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ReceiverTelephone" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ReceiverEmail" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ReceiverApplicationReference" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element minOccurs="0" maxOccurs="1" name="DateTime">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="DateOfPreparation" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="TimeOfPreparation" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
<s:element minOccurs="0" maxOccurs="1" name="CustomerSection">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="CustomerId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="LastName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="MiddleName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Initials" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="BirthDate" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Gender" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CustomerStreet" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CustomerHouseNumber" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CustomerPostalCode" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CustomerCity" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CustomerTelephone" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CustomerEmailAddress" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CustomerBankAccount" type="s:string" />
</s:sequence>
</s:complexType>
... etc.


Wäre sehr froh, wenn mir jemand weiterhelfen kann!

Danke und Gruss,
Pat
X

PHP und SOAP

ganesh
Beiträge gesamt: 1981

21. Jan 2008, 20:47
Beitrag # 2 von 5
Beitrag ID: #332396
Bewertung:
(4051 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich bin überzeugt, da ist irgendwo ein Manual vorhanden dafür. Warum liest du es nicht? Da hat es sicher Beispiele und Erklärungen.

Du solltest uns mindestens mitteilen mit welcher PHP Version du arbeitest. Ich hoffe, mit PHP 5. Und ob du überhaupt schon Erfahrung mit SOAP / Web Services hast, damit wir wissen auf welchem Wissensstand du bist.


als Antwort auf: [#332351]

PHP und SOAP

paddle
Beiträge gesamt: 3

21. Jan 2008, 21:04
Beitrag # 3 von 5
Beitrag ID: #332398
Bewertung:
(4044 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für die Antwort. Ja, ich arbeite mit der PHP Version 5.2.3 (enable-soap) und es ist das erste Mal, dass ich mich mit SOAP/Webservices befasse. Leider gibt es kein Maunal mit Beispielen/Erklärungen von dem Anbieter, ich hab schon nachgefragt und nur einen kurzen Beschrieb mit Links zur wsdl-Datei und location Webservice erhalten und die Parameter die gesendet werden müssen... stimmt mein Ansatz oder bin ich auf dem Holzweg?

Danke und Gruss,
Pat


als Antwort auf: [#332396]

PHP und SOAP

ganesh
Beiträge gesamt: 1981

21. Jan 2008, 22:55
Beitrag # 4 von 5
Beitrag ID: #332413
Bewertung:
(4024 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Naja, du musst in einer Anwendung schon wissen, was für mögliche Responses du erhalten kannst/musst (optionale vs. obligatorische Felder). Das Schema alleine bringt wenig. Ausserdem sollte es auch für einen Shop möglich sein, eine Sandbox zu benutzen, d.h. eine Testumgebung, wo keine echten Transaktionen getätigt werden, aber wo trotzdem Antworten via SOAP kommen. Paypal hat so etwas, andere wichtige Anbieter auch.

Mit SOAP ist sowohl der Request als auch die Antwort XML. Ich hab nach der PHP Version gefragt, weil das mit v.4 zwar auch ging, aber viel mühsamer war.

Hier ein paar Tutorials:
http://hades.phparch.com/..._services::php5_soap
(am Beispiel von Amazon WS)

http://www.brainbell.com/...ing_With_Others.html

und natürlich die entspr. PHP Seiten: http://ch2.php.net/soap


als Antwort auf: [#332398]

PHP und SOAP

paddle
Beiträge gesamt: 3

22. Jan 2008, 15:01
Beitrag # 5 von 5
Beitrag ID: #332578
Bewertung:
(4004 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für die Links! Das Amazon-Beispiel hat schon mal sehr geholfen! Nur weiss ich immer noch nicht genau, wie ich dies bei meinem Fall anwenden muss... da die sache ja doch ziemlich verschachtelt ist....
In der Doku, die ich erhalten habe, steht jeweils beschrieben, ob der Response optional oder obligatorisch ist und was ich jeweils einfüllen muss (feste und variierende Werte).
Mit dem String "IsTest" können die Bestellungen nur auf den Server geschrieben werden, ohne dass eine Bestellung generiert wird (also Testumgebung).

Ich hab mal die Funktionen und Typen ausgelesen und folgendes probiert - geht natürlich noch nicht...:
Code
$client = new SoapClient("https://website.nl/OrderSendWebservice/Service.asmx?WSDL"); 

$MessageTypeSection = array(
'MessageType' => 'test',
'Version' => 'test',
'Release' => 'test',
'MessageOwner' => 'test',
'IsTest' => '0');

$Sender = array(
'SenderID' => 'test',
'SendercontactName' => 'test',
'SenderTelephone' => 'test',
'SenderEmail' => 'test',
'SenderApplicationReference' => 'test');

$result1 = $client->SendOrder('MessageTypeSecion', $MessageTypeSection);
$result2 = $client->SendOrder('Sender', $Sender);


Die Funktionen:
"DummyOrderMessage" ist nur lokal und nicht für ext. Kunden, für die Bestellung muss ich die Funktion "SendOrder" verwenden.

...und hier die Typen, die ich schicken muss:


Code
array(14) {  
[0]=>
string(38) "struct SendOrder {
message message;
}"

[1]=>
string(28) "struct SendOrderResponse {
}"

[2]=>
string(46) "struct DummyOrderMessage {
string filename;
}"

[3]=>
string(36) "struct DummyOrderMessageResponse {
}"

[4]=>
string(160) "struct message {
MessageTypeSection MessageTypeSection;
InterchangeSection InterchangeSection;
CustomerSection CustomerSection;
OrderSection OrderSection;
}"

[5]=>
string(122) "struct MessageTypeSection {
string MessageType;
string Version;
string Release;
string MessageOwner;
string IsTest;
}"

[6]=>
string(85) "struct InterchangeSection {
Sender Sender;
Receiver Receiver;
DateTime DateTime;
}"

[7]=>
string(144) "struct Sender {
string SenderID;
string SenderContactName;
string SenderTelephone;
string SenderEmail;
string SenderApplicationReference;
}"

[8]=>
string(156) "struct Receiver {
string ReceiverID;
string ReceiverContactName;
string ReceiverTelephone;
string ReceiverEmail;
string ReceiverApplicationReference;
}"

[9]=>
string(73) "struct DateTime {
string DateOfPreparation;
string TimeOfPreparation;
}"

[10]=>
string(326) "struct CustomerSection {
string CustomerId;
string LastName;
string MiddleName;
string Initials;
string BirthDate;
string Gender;
string CustomerStreet;
string CustomerHouseNumber;
string CustomerPostalCode;
string CustomerCity;
string CustomerTelephone;
string CustomerEmailAddress;
string CustomerBankAccount; }"

[11]=>
string(209) "struct OrderSection {
string PaymentMethode;
string MailBoxDeleiveryAllowed;
string Remarks;
string OrderReference;
DeliveryAddressSection DeliveryAddressSection;
OrderedItemSection OrderedItemSection; }"

[12]=>
string(104) "struct DeliveryAddressSection {
string Street;
string HouseNumber;
string PostalCode;
string City;
}"

[13]=>
string(117) "struct OrderedItemSection {
string OrderReference;
string Quantity;
string ArticleId;
string Name;
string EAN;
}"

}


Danke und Gruss,
Pat


als Antwort auf: [#332413]
X

Aktuell

Web / SEO / Blockchain / Betriebssystem
unsplash_300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
29.09.2022

IDUGS#85 Press2id

Zoom Meeting
Donnerstag, 29. Sept. 2022, 19.00 - 21.00 Uhr

Vortrag

Kennst du WordPress? Vielleicht. Verwendest du WordPress? Ja, klar! WordPress ist das am weitesten verbreitete System für die Erstellung von Webseiten. Um Webseitenbau soll es auf dieser IDUG aber nicht gehen. Gregor zeigt press2id (github.com/grefel/press2id). Seine Open-Source-Lösung für die Verbindung von Web und InDesign. Richtig gelesen: InDesign liest mithilfe von press2id die Inhalte der WordPress-Webseiten und generiert daraus Zeitschriften, Kataloge, Programmhefte oder Bierdeckel (das zeigen wir natürlich auch!). So wird die „Content First“ Theorie zu einer konkret anwendbaren Praxis, ohne gleich die ganz großen Räder zu drehen. Versprochen: Jeder kann nach der IDUG innerhalb kürzester Zeit Daten von WordPress nach InDesign importieren. Aber Achtung: Prinzipiell kann press2id aus jeder Website, oder besser Contentmanagementsystem (CMS) Daten auslesen und nach InDesign importieren! Spannend, oder? Danach geht es in die Praxis: Stefan hat die Webseite des Parktheater Iserlohn (parktheater-iserlohn.de) gestaltet. Die gedruckten Spielpläne (parktheater-iserlohn.de/interaktive-spielplaene) werden mit press2id realisiert. Wir schauen in den Maschinenraum und zeigen, wie die Lösung des Projekts realisiert wurde.

Nein

Organisator: InDesign Usergroup Stuttgart

Kontaktinformation: Christoph Steffens, E-Mailidug AT satzkiste DOT de

https://idugs85.eventbrite.de/

Von Wordpress nach InDesign
Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022