2017-07-07 2 views
0

Ich arbeite an einer Website, die einige APIs verwendet und ein Problem festgestellt. Könnte mir bitte jemand helfen? Es gibt diese Methode namens "createOrder", die mich tötet. Es wird verwendet bei einem Lieferanten zu erstellen, um, wie folgt:SOAP WSDL - So erstellen Sie Arbeitsanruf für bestimmte Methode in PHP

$id=$_POST['varname']; 
echo $id; 
$ilosc=$_POST['ilosc']; 
echo "</br> Zamawiana ilosć to :"; 
echo $ilosc; 
$orderInfo = $client->createOrder( 
array( 

    'description'=> 'OPIS', 
    'clientNr' => '025537', 
    'type' => 'FV_ZBIORCZA', 
    'transport' =>'AD', 
    'positions' => array(


    'id'=>$id, 
    'count'=>$ilosc 

    ) 

)) ; 

var_dump($orderInfo); 

Das Problem ist, dass es nicht die „Positionen“ nicht besteht. Es erstellt nur eine leere Reihenfolge (mit diesen vier ersten Parametern). Das Problem ist meiner Meinung nach, dass dieser Block "Positionen" mehr als einen Gegenstand behandeln soll, also muss er anders geschrieben werden.

Hier ist SOAP UI-Code für einige Hilfe. Es funktioniert nur mit „id“ und „count“ ausgefüllt (und api_keys als auch natürlich):

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://katalog.adpolska.pl/ws/api/1.0/"> 
    <soapenv:Header> 
     <personal_key>?</personal_key> 
     <kh_kod>?</kh_kod> 
     <api_key>?</api_key> 
    </soapenv:Header> 
    <soapenv:Body> 
     <ns:createOrder> 
     <order> 
      <!--You may enter the following 5 items in any order--> 
      <description>OPIS</description> 
      <clientNr>025537</clientNr> 
      <type>FV_ZBIORCZA</type> 
      <transport>AD</transport> 
      <positions> 
       <!--Zero or more repetitions:--> 
       <item> 
        <!--You may enter the following 4 items in any order--> 
        <productId> 
        <!--You may enter the following 2 items in any order--> 
        <id>824210</id> 
        <index></index> 
        </productId> 
        <count>2</count> 
        <error></error> 
        <errorMessage></errorMessage> 
       </item> 
      </positions> 
     </order> 
     </ns:createOrder> 
    </soapenv:Body> 
</soapenv:Envelope> 

Unter dem Beispiel von Dokumentation, aber diese Dokumentation hat so viele Fehler, dass ich nicht mehr es betrachten, und es ist nicht auch arbeiten, aber gibt die Idee:

$orderInfo = $client->__soapCall('createOrder', [ 
     'order' => [ 
       'description' =>'myDesc', 
       'clientNr' =>'my_cart_nr', 
       'type' =>'FV', 
       'transport' =>'AD', 
       'positions' => [ 
         [ 
           'id' =>'907972', 
           'count' => 1 
         ], 
         [ 
           'id' =>'908015', 
           'count' => 1 
         ] 
       ] 
     ] 
]); 

ich auch so etwas wie wsdltophp verwendet haben, und extrahiert Struktur dieser Funktion:

<?php 

Array 
(
    [0] => ADStructOrder Object 
     (
      [description] => OPIS 
      [clientNr] => 025537 
      [type] => FV_ZBIORCZA 
      [transport] => AD 
      [positions] => ADStructArrayOfOrderPosition Object 
       (
        [item] => Array 
         (
          [0] => ADStructOrderPosition Object 
           (
            [productId] => ADStructProductId Object 
             (
              [id] => 823514 
              [index] => 
             ) 
            [count] => 1 
            [error] => 
            [errorMessage] => 
           ) 
         ) 

       ) 
     ) 
?> 

Könnten Sie mir bitte helfen, Arbeit zu achive Lösung? Vielen Dank im Voraus.

Antwort

0

Wie ich sehe, sollten Sie Ihre Datenstruktur wie sein als

<?php 
$productId = [ 
    'id' => 824210, 
    'index' => '' 
]; 
$item = [ 
    'productId' => $productId, 
    'count' => 2, 
    'error' => '', 
    'errorMessage' => '' 
]; 
$positions = [ 
    'item' => [$item], 
]; 
$order = [ 
    'description'=> 'OPIS', 
    'clientNr' => '025537', 
    'type' => 'FV_ZBIORCZA', 
    'transport' =>'AD', 
    'positions' => $positions, 
]; 

$orderInfo = $client->createOrder($order); 

hoffe, es hilft

Verwandte Themen