Надеюсь, кто-то может мне помочь. Я создаю клиент nusoap, используя следующий частичный WSDL:
<s:element name="SavePrestaPicklist"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="USERNAME" type="s:string" /> <s:element minOccurs="0" maxOccurs="1" name="PASSWORD" type="s:string" /> <s:element minOccurs="0" maxOccurs="1" name="BRANCH" type="s:string" /> <s:element minOccurs="0" maxOccurs="1" name="CUSTOMERNUMBER" type="s:string" /> <s:element minOccurs="0" maxOccurs="1" name="CUSTOMERPO" type="s:string" /> <s:element minOccurs="0" maxOccurs="1" name="SHIPMETHOD" type="s:string" /> <s:element minOccurs="0" maxOccurs="1" name="PRESTAPO" type="s:string" /> <s:element minOccurs="0" maxOccurs="1" name="PICKITEMS" type="tns:ArrayOfPICKITEM" /> </s:sequence> </s:complexType> </s:element> <s:complexType name="ArrayOfPICKITEM"> <s:sequence> <s:element minOccurs="0" maxOccurs="unbounded" name="PICKITEM" nillable="true" type="tns:PICKITEM" /> </s:sequence> </s:complexType> <s:complexType name="PICKITEM"> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="PARTNUMBER" type="s:string" /> <s:element minOccurs="0" maxOccurs="1" name="BRANCH" type="s:string" /> <s:element minOccurs="0" maxOccurs="1" name="MFRCODE" type="s:string" /> <s:element minOccurs="0" maxOccurs="1" name="QUANTITY" type="s:string" /> </s:sequence> </s:complexType>
Мой клиент выглядит так:
$orderdata = getorder('123'); $orderdata = array( 'USERNAME' => $config['export_username'], 'PASSWORD' => $config['export_password'], 'BRANCH' => '01', 'CUSTOMERNUMBER' => $data['order']['address1'], 'CUSTOMERPO' => $data['order']['gift_message'], 'SHIPMETHOD' => $shipMethod, 'PRESTAPO' => $data['order']['id_order']); // Build the pickitems array of pickitem. $pickitems = array(); foreach($data['products'] as $item) { $pickitem = array( 'PARTNUMBER' => $item['name'], 'BRANCH' => '01', 'MFRCODE' => '642', 'QUANTITY' => $item['product_quantity']); $pickitems[] = $pickitem; } $data['PICKITEMS'] = $pickitems; $usingWsdl = true; $client = new nusoap_client($config['export_wsdl'], $usingWsdl); $response = $client->call('SavePrestaPicklist', $orderdata);
Это не работает и отправляет PICKITEMS следующим образом:
<PICKITEMS> <0> <PARTNUMBER>BLAH</PARTNUMBER> <BRANCH>BLAH</BRANCH> ETC. </0> <1> ANOTHER ITEM SET </1> </PICKITEMS>
Я хочу, чтобы это:
<PICKITEMS> <PICKITEM> <PARTNUMBER>BLAH</PARTNUMBER> <BRANCH>BLAH</BRANCH> ETC. </PICKITEM> <PICKITEM> ANOTHER ITEM SET </PICKITEM> </PICKITEMS>
Поскольку вы не можете дублировать ключи «PICKITEM» в PHP, я не могу понять, как это сделать. Любая помощь будет оценена по достоинству.