Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-05-2021
bilbur bilbur is offline
Miembro
 
Registrado: dic 2019
Posts: 60
Poder: 5
bilbur Va por buen camino
PHP Envío a TBAI BIZ Batuz

Como ya me funciona bien lo de los envíos a batuz os dejo el código


Lo primero que hago es separar por ejercicios el envío, no sea que en enero quira enviar facturas de diciembre y de enero


Código PHP:

    if (file_exists($guardado_enviar_tbai)) {
    $fra_enviada = file_get_contents($guardado_enviar_tbai);
    $fichero = base64_encode($fra_enviada);    
     $xml_facturas[] = "<TicketBai>".$fichero."</TicketBai>";    // array de facturas
    }
   $xml  = "<?xml version='1.0' encoding='UTF-8'?>";
    $xml .= "<lrpjfecsgap:LROEPJ240FacturasEmitidasConSGAltaPeticion
    xmlns:lrpjfecsgap='https://www.batuz.eus/fitxategiak/batuz/LROE/esquemas/LROE_PJ_240_1_1_FacturasEmitidas_ConSG_AltaPeticion_V1_0_1.xsd'>";
    $xml .= "<Cabecera>
    <Modelo>240</Modelo>
    <Capitulo>1</Capitulo>
    <Subcapitulo>1.1</Subcapitulo>
    <Operacion>A00</Operacion>
    <Version>1.0</Version>
    <Ejercicio>".$xml_ejercicio."</Ejercicio>  // ejercicio 2020 o 2021 o 2022 ...
    <ObligadoTributario>
    <NIF>".$cif_340."</NIF>
    <ApellidosNombreRazonSocial>".$mombre_340."</ApellidosNombreRazonSocial>
    </ObligadoTributario>
    </Cabecera>";
    
    $xml .= "<FacturasEmitidas>";
    
    foreach($xml_facturas as $value) // array con los tbai en base64
    {
    $xml .= "<FacturaEmitida>";
     $xml .= $value;
    $xml .= "</FacturaEmitida>";    
    }
    $xml .= "</FacturasEmitidas>";
    $xml .= "</lrpjfecsgap:LROEPJ240FacturasEmitidasConSGAltaPeticion>";

    $ahora = round(microtime(true) * 10000);
    $ahora = sprintf ( "%.0f", $ahora );    // nombre del fichero xml de envío
    $guardar_como_xml = 'LROE_240_'.$ahora.'.xml';
    file_put_contents($directorio_TBAI_envios.$guardar_como_xml, $xml);
    $guardar_como_gzip = 'LROE_240_'.$ahora.'.xml.gz';
    
    $xml_data = file_get_contents($directorio_TBAI_envios.$guardar_como_xml);
    $gzip_data = gzencode($xml_data); //  nombre del fichero gz de envío

$eusbizkaian3data  = '{"con":"LROE","apa":"1.1","inte":';
$eusbizkaian3data .= '{"nif":"'.$cif_340.'","nrs":"'.$mombre_340.'"},';
$eusbizkaian3data .= '"drs":{"mode":"240","ejer":"'.$xml_ejercicio.'"}}';

    $header_soap = array(
    "Accept-Encoding: gzip",
    "Content-Encoding: gzip",
    "Content-Type: application/octet-stream",
    "eus-bizkaia-n3-version: 1.0",
    "eus-bizkaia-n3-content-type: application/xml",
    "eus-bizkaia-n3-data: ".$eusbizkaian3data,
    "Content-length: ".strlen($gzip_data)
    );

$soap_do = curl_init();
curl_setopt($soap_do, CURLOPT_URL,                 $url_TBAI); // url de envío pruebas
curl_setopt($soap_do, CURLOPT_CONNECTTIMEOUT,     500);
curl_setopt($soap_do, CURLOPT_TIMEOUT,            500);
curl_setopt($soap_do, CURLOPT_RETURNTRANSFER,     true);
curl_setopt($soap_do, CURLOPT_HEADER  ,     true);
curl_setopt($soap_do, CURLOPT_FOLLOWLOCATION,     true);
curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER,     false);
curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST,     false);
curl_setopt($soap_do, CURLOPT_USERAGENT,         'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($soap_do, CURLOPT_POST,               true);
curl_setopt($soap_do, CURLOPT_SSLCERT,            getcwd().'/_certificandos'.$alias_pdf.'/'.$cif_340.'.pem');
curl_setopt($soap_do, CURLOPT_POSTFIELDS,         $gzip_data);
curl_setopt($soap_do, CURLOPT_HTTPHEADER,         $header_soap);
chdir('ticketBAI');    

    $response = curl_exec($soap_do); 
    $size_response = curl_getinfo($soap_do, CURLINFO_HEADER_SIZE);
    $header_response = substr($response, 0, $size_response);
    $body_response = substr($response, $size_response);

    function get_headers_from_curl_response($header_response) // para la cabecera respuesta
    {
    $headers_r = array();
    foreach (explode("\r\n", $header_response) as $i => $line)
    if ($i !== 0)
    {
    list ($key, $value) = explode(': ', $line);
    $headers_r[$key] = utf8_encode($value);
    }
    return $headers_r;
    }
Continúo para ver las cabeceras de respuesta


Código PHP:
    $headers_r get_headers_from_curl_response($header_response);
//var_dump($headers_r);
    
$respuesta_tipo $headers_r['eus-bizkaia-n3-tipo-respuesta'];

    if(
$respuesta_tipo == 'Incorrecto')
    {
    include_once(
$_SERVER['DOCUMENT_ROOT'].'/_configs/_header_ifx.php' );        
    
$respuesta_codigo  $headers_r['eus-bizkaia-n3-codigo-respuesta'];
    
$respuesta_mensaje $headers_r['eus-bizkaia-n3-mensaje-respuesta'];        
    echo 
"<br><TABLE align=center width=97% class=gris>";
    echo 
"<tr class=amarillo>";
    echo 
"<td align=left><div id=tit1>
    Respuesta del envío de hoy a TBAI Bizkaia de facturas emitidas firmadas"
;
    echo 
"&nbsp;&nbsp;&nbsp;<b>$respuesta_tipo</b></td></tr>";
    echo 
"<tr class=amarillo>";    
    echo 
"<td align=left><div id=tit1>
    Error 
$respuesta_codigo";
    echo 
"&nbsp;&nbsp;&nbsp;<b>$respuesta_mensaje</b></td>";    
    echo
"</tr></table><br>";
//    exit();
    

Si va todo bien descomprimo, descomprimo y guardo


Código PHP:
    if(!curl_exec($soap_do)) {
    
$err 'Error: ' curl_error($soap_do);
    
curl_close($soap_do);
    echo 
"<br>No se puede conectar con la TBAI Bizkaia.<br><br>";    
    
print_r($err);
    exit();
    echo 
"<br>";    
    echo 
"<br><b>Respuesta de la TBAI: Bizkaia</b><br><br>";    
    
print_r($response);
    exit();
    } else {
    
curl_close($soap_do);



    
$xmlString gzdecode(gzdecode($body_response));
    
//$xmlString = gzdecode($xmlString);
    
    
$xmlString preg_replace('/(<\s*)\w+:/','$1',$xmlString);   // removes <xxx:
    
$xmlString preg_replace('/(<\/\s*)\w+:/','$1',$xmlString); // removes </xxx:
    
$xmlString preg_replace('/\s+xmlns:[^>]+/','',$xmlString); // removes xmlns:...    

    
$use_errors libxml_use_internal_errors(true);    
    
$parser simplexml_load_string($xmlString);
    if (
$parser === false) {
    echo 
"<br>No se puede cargar el fichero comprimido devuelto por la TBAI.<br><br>";
    echo 
"<br>";    
    echo 
"<br><b>Respuesta de la TBAI 0:</b><br><br>";    
    
print_r($headers_r);

    exit();
    }
    
libxml_clear_errors();
    
libxml_use_internal_errors($use_errors);    
    if (
$parser === false) exit();
    
$parser->asXML($directorio_respuestas.'LROE_240_'.$ahora.'.xml');
    } 
Para mostrar los registros, pendiente de afinar


Código PHP:
    $facturas_en_TBAI $parser;
    if (
$facturas_en_TBAI === false)    
    {
    echo 
"<br><b>Respuesta de TBAI parser:</b><br><br>";
    
print_r ($facturas_en_TBAI);
    }

    echo 
"<br><TABLE align=center width=97% class=gris>";
    echo 
"<tr class=amarillo>";
    echo 
"<td align=left><div id=tit1>
    Respuesta del envío de hoy a TBAI Bizkaia de facturas emitidas firmadas"
;
    echo 
"&nbsp;&nbsp;&nbsp;<b>$respuesta_tipo</b></td>";
    echo
"</tr></table><br>";
    
    if(
$respuesta_tipo == 'Incorrecto' || $respuesta_tipo == 'Parcialmente correcto')
    {
    include_once(
$_SERVER['DOCUMENT_ROOT'].'/_configs/_header_ifx.php' );        
    
$respuesta_codigo  $headers_r['eus-bizkaia-n3-codigo-respuesta'];
    
$respuesta_mensaje $headers_r['eus-bizkaia-n3-mensaje-respuesta'];        

    echo 
"<TABLE align=center width=97% class=gris id='sortedtable'><thead>";
    echo 
"<tr class=odd>";
    echo 
"<th align=left><div id=tit2>Factura</div></th>";
    echo 
"<th align=left><div id=tit2>Fecha</div></th>";
    echo 
"<th align=left><div id=tit2>Error</div></th>";
    echo 
"<th align=left><div id=tit2>Descripción</div></th>";    
    echo 
"</tr></thead>";

    
$a 0;
    foreach (
$facturas_en_TBAI->Registros->Registro as $nodo
    {
    
$SerieFactura $nodo->Identificador->IDFactura->SerieFactura;    
    
$NumFactura $nodo->Identificador->IDFactura->NumFactura;            
    
$FechaExpedicionFactura $nodo->Identificador->IDFactura->FechaExpedicionFactura;
    
$EstadoRegistro $nodo->SituacionRegistro->EstadoRegistro;
    
$CodigoErrorRegistro $nodo->SituacionRegistro->CodigoErrorRegistro;
    
$DescripcionErrorRegistro $nodo->SituacionRegistro->DescripcionErrorRegistro;
    
$DescripcionErrorRegistro utf8_decode($DescripcionErrorRegistro);

    if(
$EstadoRegistro == 'Correcto' || $CodigoErrorRegistro == 'B4_2000003')
    {
    
$xml_enviado_tbai $guardado_enviar[$SerieFactura.'-'.$NumFactura];    
    
$guardado_enviar_tbai  $directorio_TBAI.$xml_enviado_tbai;
    
$guardado_enviado_tbai $directorio_TBAI_envios.$xml_enviado_tbai;        
    
rename($guardado_enviar_tbai,$guardado_enviado_tbai); /// atencion a esto        
    
}
        
    if(
$EstadoRegistro != 'Correcto')
    {    
    echo 
"<tr "; if( $a%== ) echo " class=odd";                
    echo 
"><td class=firstcol align=left><div id=tit3>&nbsp;".$SerieFactura.'-'.$NumFactura."</div></td>";
    echo 
"<td align=left><div id=tit3>&nbsp;".$FechaExpedicionFactura."</div></td>";
    echo 
"<td align=left><div id=tit3>&nbsp;".$CodigoErrorRegistro."</div></td>";
    echo 
"<td align=left><div id=tit3>&nbsp;".$DescripcionErrorRegistro."</div></td>";
    
    
$a++;
    echo 
"</tr>";
    }

    } 
// fin foreach ($facturas_en_TBAI->Registros->Registro as $nodo)     
    
echo '</table><br>';    
    }    
    
//  fin if($respuesta_tipo == 'Incorrecto' || $respuesta_tipo == 'Parcialmente correcto')

    
if($respuesta_tipo == 'Correcto')
    {    
    include_once(
$_SERVER['DOCUMENT_ROOT'].'/_configs/_header_ifx.php' );    
    foreach (
$facturas_en_TBAI->Registros->Registro as $nodo
    {
    
$SerieFactura $nodo->Identificador->IDFactura->SerieFactura;    
    
$NumFactura $nodo->Identificador->IDFactura->NumFactura;    
    
$xml_enviado_tbai $guardado_enviar[$SerieFactura.'-'.$NumFactura];    
    
$guardado_enviar_tbai  $directorio_TBAI.$xml_enviado_tbai;
    
$guardado_enviado_tbai $directorio_TBAI_envios.$xml_enviado_tbai;        
    
rename($guardado_enviar_tbai,$guardado_enviado_tbai); /// atencion a esto            
    
}
    }    
    
//  fin if($respuesta_tipo == 'Correcto')
    
unset($facturas_en_TBAI); 
Comentamos
Responder Con Cita
  #2  
Antiguo 11-05-2021
Sistel Sistel is offline
Miembro
 
Registrado: nov 2019
Ubicación: Bilbao
Posts: 373
Poder: 5
Sistel Va por buen camino
Cita:
Empezado por bilbur Ver Mensaje
Como ya me funciona bien lo de los envíos a batuz os dejo el código
...
Hola Bilbur,

Muchas gracias, una vez más por compartir tu código.

Aún no he llegado a la fase de envío a Batuz.
Estoy aún en la fase de firma del XML.
Y me ha venido de maravilla tu código para la firma.
¡¡¡Funciona de perlas!!!
Se parece bastante al que yo estaba desarrollando (aunque estaba atrancado) basado en https://github.com/josemmo/Facturae-PHP

Hay una detallito que no entiendo de tu clase Firmador():
Código PHP:
$signTime1 date('Y-m-d\TH:i:s+01:00'); 
¿Porqué le añades 1 segundo a la hora de la firma?

Lo dicho, muchas gracias de nuevo.

Saludos
Responder Con Cita
  #3  
Antiguo 11-05-2021
bilbur bilbur is offline
Miembro
 
Registrado: dic 2019
Posts: 60
Poder: 5
bilbur Va por buen camino
Cita:
Empezado por Sistel Ver Mensaje
Hola B...
Se parece bastante al que yo estaba desarrollando (aunque estaba atrancado) basado en https://github.com/josemmo/Facturae-PHP

Hay una detallito que no entiendo de tu clase Firmador():
Código PHP:
$signTime1 date('Y-m-d\TH:i:s+01:00'); 
¿Porqué le añades 1 segundo a la hora de la firma?...
El firmador.php no es mío, es un apaño basado en facturae de Josemmo con adaptaciones de otro firmador de Costa Rica. https://github.com/CRLibre/API_Hacienda
El de facturae es fantástico pero un poco farragoso con los xmlns y no lograba "entenderlo"

No añado 1 segundo, añado 1 hora (o 2 horas) por no se qué de la zona horaria Europa/Madrid
Seguramente se pueda quitar sin problemas.
Si necesitas alguna aclaración para la firma, sólo has de preguntar
Responder Con Cita
  #4  
Antiguo 12-05-2021
Sistel Sistel is offline
Miembro
 
Registrado: nov 2019
Ubicación: Bilbao
Posts: 373
Poder: 5
Sistel Va por buen camino
Cita:
Empezado por bilbur Ver Mensaje
...
No añado 1 segundo, añado 1 hora (o 2 horas) por no se qué de la zona horaria Europa/Madrid
Seguramente se pueda quitar sin problemas.
...
Hola Bilbur,

Perdón, no había entendido bien la función date() que ejecutabas.
Ya veo que es por el tema de la hora UTC+1

Gracias.
Saludos
Responder Con Cita
  #5  
Antiguo 17-11-2021
misteradrian misteradrian is offline
Miembro
 
Registrado: sep 2021
Posts: 33
Poder: 0
misteradrian Va por buen camino
Envios batuz

¡Hola de nuevo a todos !

Después de enviar, comprobar el Qr y anular de manera correcta a Gipuzkoa y Álava.
Me he dispuesto a probar a realizar lo mismo a Batuz. De aquí un poco mi duda sobre cuál creo que es el proceso de envío. Lo voy a explicar un poco a continuación, si tenéis alguna duda o hay algo en lo que me haya equivocado confirmadme :

El documento por llamarlo así “inicial”, de la factura de TicketBAI lo tengo que codificar en gzip y en base64 después. La cadena generada gracias a la codificación en base64 lo tengo que incluir dentro de otro xml dentro de los campos Ingresos->TicketBai. Y a su vez este xml “final” codificarlo también en gzip y enviarlo con las cabeceras correspondientes a los servidores de BATUZ ya sean de prueba o de producción.
¿Hay alguna parte que me haya saltado o que esté errónea?

Un saludo y muchas gracias a todos.
La verdad que sin este foro no habría conseguido nada.
Responder Con Cita
  #6  
Antiguo 17-11-2021
unomasmas unomasmas is offline
Miembro
 
Registrado: dic 2019
Posts: 112
Poder: 5
unomasmas Va por buen camino
Cita:
Empezado por misteradrian Ver Mensaje
¡Hola de nuevo a todos !

Después de enviar, comprobar el Qr y anular de manera correcta a Gipuzkoa y Álava.
Me he dispuesto a probar a realizar lo mismo a Batuz. De aquí un poco mi duda sobre cuál creo que es el proceso de envío. Lo voy a explicar un poco a continuación, si tenéis alguna duda o hay algo en lo que me haya equivocado confirmadme :

El documento por llamarlo así “inicial”, de la factura de TicketBAI lo tengo que codificar en gzip y en base64 después. La cadena generada gracias a la codificación en base64 lo tengo que incluir dentro de otro xml dentro de los campos Ingresos->TicketBai. Y a su vez este xml “final” codificarlo también en gzip y enviarlo con las cabeceras correspondientes a los servidores de BATUZ ya sean de prueba o de producción.
¿Hay alguna parte que me haya saltado o que esté errónea?

Un saludo y muchas gracias a todos.
La verdad que sin este foro no habría conseguido nada.
Tal cual; así es.
Responder Con Cita
  #7  
Antiguo 18-11-2021
unomasmas unomasmas is offline
Miembro
 
Registrado: dic 2019
Posts: 112
Poder: 5
unomasmas Va por buen camino
Cita:
Empezado por misteradrian Ver Mensaje
¡Hola de nuevo a todos !

Después de enviar, comprobar el Qr y anular de manera correcta a Gipuzkoa y Álava.
Me he dispuesto a probar a realizar lo mismo a Batuz. De aquí un poco mi duda sobre cuál creo que es el proceso de envío. Lo voy a explicar un poco a continuación, si tenéis alguna duda o hay algo en lo que me haya equivocado confirmadme :

El documento por llamarlo así “inicial”, de la factura de TicketBAI lo tengo que codificar en gzip y en base64 después. La cadena generada gracias a la codificación en base64 lo tengo que incluir dentro de otro xml dentro de los campos Ingresos->TicketBai. Y a su vez este xml “final” codificarlo también en gzip y enviarlo con las cabeceras correspondientes a los servidores de BATUZ ya sean de prueba o de producción.
¿Hay alguna parte que me haya saltado o que esté errónea?

Un saludo y muchas gracias a todos.
La verdad que sin este foro no habría conseguido nada
.
Cita:
Empezado por unomasmas Ver Mensaje
Tal cual; así es.
Me colé; disculpas. Tiene razón Neftalí. Mira su respuesta aquí: https://www.clubdelphi.com/~hector/f...postcount=2235
Responder Con Cita
  #8  
Antiguo 18-11-2021
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.340
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por misteradrian Ver Mensaje
El documento por llamarlo así “inicial”, de la factura de TicketBAI lo tengo que codificar en gzip y en base64 después. La cadena generada gracias a la codificación en base64 lo tengo que incluir dentro de otro xml dentro de los campos Ingresos->TicketBai. Y a su vez este xml “final” codificarlo también en gzip y enviarlo con las cabeceras correspondientes a los servidores de BATUZ ya sean de prueba o de producción.
¿Hay alguna parte que me haya saltado o que esté errónea?

Yo creo que te sobra un ZIP (lo que está en rojo).

1) Generas el XML de TBAI (con la firma)
2) Lo codificas base64 y lo incluyes en el fichero LROE (inicial) en el TAG TicktBai (sin codificar gzip)
3) Ese nuevo XML lo comprimes (gzip) y lo envías con las cabeceras.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 18-11-2021
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.340
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Te adjunto un fichero de ejemplo de la documentación.

NOTA: Le he añadido la extensión ZIP para que me deje sibirlo como adjunto. Elimñinala. El nombre del fichero debe quedar:
Ejemplo_1_LROE_PJ_240_FacturasEmitidasConSG_B00000034.gz

1) Descomprime con gzip
2) En el XML decodifica con base64 el nodo TicketBai
3) El resultado es el XML del TicketBAI

Ese ejemplo y algunos más, tanto de peticiones como de respuestas y del resto de libros, los puedes descargar de aquí:
https://www.batuz.eus/fitxategiak/Ba...os/Ejemplos.7z

(loa añado al hilo inicial)
Archivos Adjuntos
Tipo de Archivo: zip Ejemplo_1_LROE_PJ_240_FacturasEmitidasConSG_B00000034.gz.zip (12,3 KB, 15 visitas)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #10  
Antiguo 14-12-2021
misteradrian misteradrian is offline
Miembro
 
Registrado: sep 2021
Posts: 33
Poder: 0
misteradrian Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Te adjunto un fichero de ejemplo de la documentación.

NOTA: Le he añadido la extensión ZIP para que me deje sibirlo como adjunto. Elimñinala. El nombre del fichero debe quedar:
Ejemplo_1_LROE_PJ_240_FacturasEmitidasConSG_B00000034.gz

1) Descomprime con gzip
2) En el XML decodifica con base64 el nodo TicketBai
3) El resultado es el XML del TicketBAI

Ese ejemplo y algunos más, tanto de peticiones como de respuestas y del resto de libros, los puedes descargar de aquí:


(loa añado al hilo inicial)
Muchas gracias por vuestros consejos.

Ayer retomé este proyecto y esa parte la solucioné gracias a vosotros como es costumbre.

Sin embargo hoy me he puesto a lanzar peticiones al entorno de pruebas de BATUZ y no me paran de dar errores 400 Bad Request.

Si alguien me puede dar algún consejo se lo agradecería. Ya que los de Batuz contestan un poco en contestador automatico.

Gracias de antemano.

Adrián.
Responder Con Cita
  #11  
Antiguo 09-12-2021
yasmNote yasmNote is offline
Miembro
 
Registrado: sep 2021
Posts: 26
Poder: 0
yasmNote Va por buen camino
Lroe 140

Cita:
Empezado por bilbur Ver Mensaje
Como ya me funciona bien lo de los envíos a batuz os dejo el código


Lo primero que hago es separar por ejercicios el envío, no sea que en enero quira enviar facturas de diciembre y de enero

.....
Buenos días,
Muchísimas gracias por compartir tu código.
Me gustaría saber si habéis conseguido desarrollar para el modelo 140?
Gracias
Responder Con Cita
  #12  
Antiguo 16-12-2021
musinho musinho is offline
Miembro
 
Registrado: dic 2021
Posts: 18
Poder: 0
musinho Va por buen camino
Certificados de prueba

Aupa,

Estoy intentando agregar un certificado tanto por postman como por cUrl en PHP:

Cita:
curl_setopt($soap_do, CURLOPT_SSLCERT, getcwd().'/_certificados/cert.pem');
Pero todo el rato recibo la siguiente respuesta:

Cita:
HTTP/1.1 400 Bad Request
Date: Thu, 16 Dec 2021 10:40:50 GMT
eus-bizkaia-n3-identificativo:
X-Powered-By: Undertow/1
eus-bizkaia-n3-mensaje-respuesta: Parámetro clientcert no indicado en la cabecera de la petición
eus-bizkaia-n3-codigo-respuesta: N3_0000011
eus-bizkaia-n3-numero-registro:
eus-bizkaia-n3-tipo-respuesta: Incorrecto
Content-Type: text/html; charset=UTF-8
Content-Length: 0
Connection: close
Set-Cookie: TS0171c831=0147f0636e8a03d83048cfc79d3a57d973e8e44067b1332f894a93ffd6f898fc45d17d16b5f988c255df54778 4694991c9ae2a3368; Path=/
Parámetro clientcert no indicado en la cabecera de la petición. Estoy utilizando un certificado de ejemplo de la documentación "PertsonaFisikoa_PersonaFísica.p12" convertiendola a .pem y enviandola como decía bilbur por curl. Alguien puede decirme que estoy haciendo mal?

Eskerrik asko!!
Responder Con Cita
  #13  
Antiguo 17-12-2021
misteradrian misteradrian is offline
Miembro
 
Registrado: sep 2021
Posts: 33
Poder: 0
misteradrian Va por buen camino
Cita:
Empezado por musinho Ver Mensaje
Aupa,

Estoy intentando agregar un certificado tanto por postman como por cUrl en PHP:



Pero todo el rato recibo la siguiente respuesta:



Parámetro clientcert no indicado en la cabecera de la petición. Estoy utilizando un certificado de ejemplo de la documentación "PertsonaFisikoa_PersonaFísica.p12" convertiendola a .pem y enviandola como decía bilbur por curl. Alguien puede decirme que estoy haciendo mal?

Eskerrik asko!!
Hola buenas yo lo que hago es pasar el p12 a crt.pem y key.pem por terminal
y luego los incluyo en la cabecera en php junto con la contraseña te digo los pasos que no me deja poner enlaces y luego el codigo php.

Código PHP:
openssl pkcs12 -in path.p12 -out certificado.crt.pem -clcerts -nokeys
openssl pkcs12 
-in path.p12 -out clave.key.pem -nocerts -nodes 
Después de esto tendras un certificado.crt.pem y una fichero clave.key.pem
Una vez compleatdo lo anterior, los incluyes en las cabeceras php del siguiente modo.

Código PHP:
curl_setopt($soap_doCURLOPT_SSLCERTTYPE'PEM');
            
curl_setopt($soap_doCURLOPT_SSLCERTPASSWD'Contraseña de Tu Certificado');
            
curl_setopt($soap_doCURLOPT_SSLCERT'Ruta donde hayas guardado certificado.crt.pem');
            
curl_setopt($soap_doCURLOPT_SSLKEY'Ruta donde hayas guardado clave.key.pem'); 
Espero que te vaya oso ondo después de ver esto.
Un saludo.
Responder Con Cita
  #14  
Antiguo 17-12-2021
musinho musinho is offline
Miembro
 
Registrado: dic 2021
Posts: 18
Poder: 0
musinho Va por buen camino
Me sigue sin funcionar

Cita:
Empezado por misteradrian Ver Mensaje
Hola buenas yo lo que hago es pasar el p12 a crt.pem y key.pem por terminal
y luego los incluyo en la cabecera en php junto con la contraseña te digo los pasos que no me deja poner enlaces y luego el codigo php.

Código PHP:
openssl pkcs12 -in path.p12 -out certificado.crt.pem -clcerts -nokeys
openssl pkcs12 
-in path.p12 -out clave.key.pem -nocerts -nodes 
Después de esto tendras un certificado.crt.pem y una fichero clave.key.pem
Una vez compleatdo lo anterior, los incluyes en las cabeceras php del siguiente modo.

Código PHP:
curl_setopt($soap_doCURLOPT_SSLCERTTYPE'PEM');
            
curl_setopt($soap_doCURLOPT_SSLCERTPASSWD'Contraseña de Tu Certificado');
            
curl_setopt($soap_doCURLOPT_SSLCERT'Ruta donde hayas guardado certificado.crt.pem');
            
curl_setopt($soap_doCURLOPT_SSLKEY'Ruta donde hayas guardado clave.key.pem'); 
Espero que te vaya oso ondo después de ver esto.
Un saludo.
Aupa @misteradrian,

He seguido tus pasos, que ya había hecho igual antes, pero me sigue sin funcionar.

Que archivo p12 es el que usas para crear el certificado? el PertsonaFisikoa_PersonaFísica.p12 ?

Tengo instalado el certificado en mi ordenador y los envio como dices en las cabeceras pero nada. La ruta a los archivos también es correcta... en fin.

Eskerrik asko de todos modos!
Responder Con Cita
  #15  
Antiguo 17-12-2021
misteradrian misteradrian is offline
Miembro
 
Registrado: sep 2021
Posts: 33
Poder: 0
misteradrian Va por buen camino
Cita:
Empezado por musinho Ver Mensaje
Aupa @misteradrian,

He seguido tus pasos, que ya había hecho igual antes, pero me sigue sin funcionar.

Que archivo p12 es el que usas para crear el certificado? el PertsonaFisikoa_PersonaFísica.p12 ?

Tengo instalado el certificado en mi ordenador y los envio como dices en las cabeceras pero nada. La ruta a los archivos también es correcta... en fin.

Eskerrik asko de todos modos!
Yo uso el de certificado de empresa que nos otrogan ellos para el entorno de pruebas y haciendo eso me funciona perfectamente.
Mira a ver si es otra condicion del curl.

Un saludo.
Responder Con Cita
  #16  
Antiguo 17-12-2021
misteradrian misteradrian is offline
Miembro
 
Registrado: sep 2021
Posts: 33
Poder: 0
misteradrian Va por buen camino
Hola muy buenas a todos.

Para el tema de envíos a BATUZ.
¿Sabéis que cuál es el formato de NIF correcto que hay que enviar en el campo del NIF del Destinatario ?

Yo pongo el siguiente NIF (ficticio) y BATUZ me dice que es incorrecto cosa que no entiendo.

Código PHP:
<IDDestinatario>
                <
NIF>12345678A</NIF>
                                <
ApellidosNombreRazonSocial>Xabier Alonso Olano</ApellidosNombreRazonSocial>
                <
CodigoPostal>48007</CodigoPostal>
                <
Direccion>Ernesto Erkoreka Plaza</Direccion>
</
IDDestinatario
Respuesta de BATUZ en el GZIP

Código PHP:
<SituacionRegistro>
                <
EstadoRegistro>Incorrecto</EstadoRegistro>
                <
CodigoErrorRegistro>B4_2000011</CodigoErrorRegistro>
                <
DescripcionErrorRegistroES>El NIF tiene un formato erróneo.</DescripcionErrorRegistroES>
                <
DescripcionErrorRegistroEU>IFZren formatua okerra da.</DescripcionErrorRegistroEU>
            </
SituacionRegistro
Un saludo y como siempre gracias de antemano.
Si me comentan ellos antes cualquier cosa os digo.
Responder Con Cita
  #17  
Antiguo 17-12-2021
misteradrian misteradrian is offline
Miembro
 
Registrado: sep 2021
Posts: 33
Poder: 0
misteradrian Va por buen camino
Cita:
Empezado por misteradrian Ver Mensaje
Hola muy buenas a todos.

Para el tema de envíos a BATUZ.
¿Sabéis que cuál es el formato de NIF correcto que hay que enviar en el campo del NIF del Destinatario ?

Yo pongo el siguiente NIF (ficticio) y BATUZ me dice que es incorrecto cosa que no entiendo.

Código PHP:
<IDDestinatario>
                <
NIF>12345678A</NIF>
                                <
ApellidosNombreRazonSocial>Xabier Alonso Olano</ApellidosNombreRazonSocial>
                <
CodigoPostal>48007</CodigoPostal>
                <
Direccion>Ernesto Erkoreka Plaza</Direccion>
</
IDDestinatario
Respuesta de BATUZ en el GZIP

Código PHP:
<SituacionRegistro>
                <
EstadoRegistro>Incorrecto</EstadoRegistro>
                <
CodigoErrorRegistro>B4_2000011</CodigoErrorRegistro>
                <
DescripcionErrorRegistroES>El NIF tiene un formato erróneo.</DescripcionErrorRegistroES>
                <
DescripcionErrorRegistroEU>IFZren formatua okerra da.</DescripcionErrorRegistroEU>
            </
SituacionRegistro
Un saludo y como siempre gracias de antemano.
Si me comentan ellos antes cualquier cosa os digo.
Ya he encontrado el error asique cero problemas
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
SII -Nuevo sistema de la Agencia Tributaria española de envío de datos vía Webservice newtron Internet 3565 Hace 1 Semana 11:04:13
Como utilizar la ayuda del nuevo Sistema Operativo gluglu Humor 3 24-09-2007 09:39:05
Aplicacion Agencia De Viajes ArdiIIa Varios 9 20-01-2007 16:49:53
El Vasco Aguirre Al González La Taberna 5 26-05-2006 09:22:28
Microsoft ha lanzado su nuevo sistema operativo DarkByte Humor 0 25-01-2004 09:21:14


La franja horaria es GMT +2. Ahora son las 15:22:50.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi