El problema concreto es que no se como tomar un array de pedidos, por ejemplo
El cliente me manda estos datos:
Código:
Lo que no entiendo es como tomar el tag paquetes, estoy usando Nusoap y el codigo que tengo es el siguiente:<?xml version="1.0" encoding="UTF-8"?> <ROWS> <envios> <envio idoperativa="90996" nroremito="BLD-416"> <destinatario apellido="Paunero" nombre="Miguel" calle="Neuquen" nro="545" piso="" depto="" cp="8300" localidad="Neuquen" provincia="Buenos Aires" telefono="" celular="" email="" observaciones="" idci="0" /> <paquetes> <paquete alto="38.00" ancho="37.00" largo="20.00" peso="1.60" valor="0" cant="1" /> </paquetes> </envio> <envio idoperativa="90999" nroremito="BLD-464"> <destinatario apellido="ramognino" nombre="carolina" calle="C." nro="8400" piso="" depto="" cp="1406" localidad="Buenos Aires Capital Federal" provincia="Ciudad de Buenos Aires" telefono="" celular="" email="" observaciones="" idci="141" /> <paquetes> <paquete alto="114.00" ancho="111.00" largo="60.00" peso="4.80" valor="0" cant="3" /> <paquete alto="114.00" ancho="111.00" largo="60.00" peso="4.80" valor="0" cant="3" /> <paquete alto="114.00" ancho="111.00" largo="60.00" peso="4.80" valor="0" cant="3" /> </paquetes> </envio> </envios> </ROWS>
Código PHP:
//namespace del servicio
$ns = "http://webdeprueba";
//establecer nombre y namespace al servicio
$servidor->configureWSDL('recibirpedidos',$ns);
//REGISTRO LA FUNCION
$servidor->register('recibirpedidos',
array(
'idPedido'=>'xsd:string',
'nombre'=>'xsd:string',
'apellido'=>'xsd:string',
'email'=>'xsd:string',
'telefono'=>'xsd:string',
'calle'=>'xsd:string',
'nro'=>'xsd:string',
'piso'=>'xsd:string',
'depto'=>'xsd:string',
'localidad'=>'xsd:string',
'provincia'=>'xsd:string',
'codigoPostal'=>'xsd:string',
'observaciones'=>'xsd:string',
'alto'=>'xsd:float',
'ancho'=>'xsd:float',
'profundidad'=>'xsd:float',
'cantidad'=>'xsd:int'
), //tipo de dato entrada
array('return'=>'tns:ArregloDeEstructuras2'), //tipo de dato salida
$ns, false,
'rpc', //tipo documento
'literal', //tipo codificacion
'Recepcion de pedidos') ; //documentacion
//configurar la estructura de los datos,
//este arreglo es de tipo asociativo y contiene el nombre y tipo de dato.
//DATOS DE ENTRADA
$servidor->wsdl->addComplexType(
'Estructura2',
'complexType',
'struct',
'all',
'',
array(
'id' => array('name' => 'id', 'type' => 'xsd:string'),
'idPedido'=>array('name' => 'idPedido', 'type' => 'xsd:string'),
'nombre'=>array('name' => 'nombre', 'type' => 'xsd:string'),
'apellido'=>array('name' => 'apellido', 'type' => 'xsd:string'),
'email'=>array('name' => 'email', 'type' => 'xsd:string'),
'telefono'=>array('name' => 'telefono', 'type' => 'xsd:string'),
'calle'=>array('name' => 'calle', 'type' => 'xsd:string'),
'nro'=>array('name' => 'nro', 'type' => 'xsd:string'),
'piso'=>array('name' => 'piso', 'type' => 'xsd:string'),
'depto'=>array('name' => 'depto', 'type' => 'xsd:string'),
'localidad'=>array('name' => 'localidad', 'type' => 'xsd:string'),
'provincia'=>array('name' => 'provincia', 'type' => 'xsd:string'),
'codigoPostal'=>array('name' => 'codigoPostal', 'type' => 'xsd:string'),
'observaciones'=>array('name' => 'observaciones', 'type' => 'xsd:string'),
'ancho'=>array('name' => 'ancho', 'type' => 'xsd:float'),
'alto'=>array('name' => 'alto', 'type' => 'xsd:float'),
'profundidad'=>array('name' => 'profundidad', 'type' => 'xsd:float'),
'cantidad'=>array('name' => 'cantidad', 'type' => 'xsd:int')
)
);
//DATOS DE SALIDA
$servidor->wsdl->addComplexType(
'ArregloDeEstructuras2',
'complexType',
'struct',
'all',
'',
array('mensaje'=> array('name'=>'mensaje', 'type'=>'xsd:string')));
/*========================================================================================================================*/
//Establecer servicio
if (isset($HTTP_RAW_POST_DATA)) {
$input = $HTTP_RAW_POST_DATA;
}else{
$input = implode("\r\n", file('php://input'));
}
$servidor->service($input);
?>
Desde ya agradesco si alguien me puede echar luz sobre esto, he buscado en la WEB y no encuentro algun ejemplo que reciba cabeceras y pedidos todos juntos.