[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:
(4123 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:
(4109 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:
(4102 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:
(4082 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:
(4062 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

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
17.04.2024

Online
Mittwoch, 17. Apr. 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Günther Business Solutions

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

Und es geht doch: Automatisierung im Großformatdruck!