View Single Post
  #590  
Old 12/05/2021
bilbur bilbur is offline
Miembro
 
Join Date: Dec 2019
Posts: 62
Rep Power: 7
bilbur Va por buen camino
Quote:
Originally Posted by sline View Post
Gracias bilbur!

todo esto me ha permitido continuar con el proceso, pero me encuentro un contratiempo con el qr.
Para generar el código QR es necesario los 13 primeros caracteres de la firma, en ocasiones la firma contiene caracteres como + o / y al entrar la url para batuz muestra que es incorrecta.
No encuentro nada (o al menos no lo he visto) que limite qué caracteres usar o no, o si hubiera que reemplazarlos.

te explico el código de la dirección qr para GIP


$caracterSeparador = '-' // el guión medio o tecla del menos
$cif_340 = cif de la empresa 9 dígitos
$dd$mm$aaa = dia mes año sin separador // 12052021
$SignatureValueFirmaFacturaActua = substr($SignatureValueFirmaFacturaActual,0,13); // 13 primeras posiciones
$TBAIID = utf8_encode($TBAIID); // lo codificas a utf8
$cod_crc8 = crc8($TBAIID); // calculas el crc8
$TBAIID = $TBAIID.$cod_crc8; // se lo añades a la cadena TBAIID
$msg_TBAI = $url_TBAI_QR.'?id='.$TBAIID.'&s='.serie.'&nf='.numero.'&i='.$importe; // creas el enlace TBAI
$msg_TBAI = utf8_encode($msg_TBAI); // otra vez a utf8
$cod_crc8 = crc8($msg_TBAI); // calculas el nuevo crc8
$msg_TBAI = $msg_TBAI.'&cr='.$cod_crc8; // y se lo añades al enalce

PHP Code:
   $msg_TBAI = '';
    
$xml_actual_enviado = simplexml_load_file($guardado_enviado_tbai);    
    
$signatureNodeActual = $xml_actual_enviado->children('ds', true)->Signature;    
    
$SignatureValueFirmaFacturaActual = $signatureNodeActual->SignatureValue;
    
$SignatureValueFirmaFacturaActual = substr($SignatureValueFirmaFacturaActual,0,13);    
    
$factura_tbai_serie  = $xml_actual_enviado->Factura->CabeceraFactura->SerieFactura;    
    
$factura_tbai_numero = $xml_actual_enviado->Factura->CabeceraFactura->NumFactura;
    
$factura_tbai_fecha  = $xml_actual_enviado->Factura->CabeceraFactura->FechaExpedicionFactura;    
    
$factura_tbai_fecha_dd = substr($factura_tbai_fecha,0,2);
    
$factura_tbai_fecha_mm = substr($factura_tbai_fecha,3,2);    
    
$factura_tbai_fecha_aa = substr($factura_tbai_fecha,-2);        
    
$factura_tbai_importe  = $xml_actual_enviado->Factura->DatosFactura->ImporteTotalFactura;        
    
$TBAIID  = 'TBAI'.$caracterSeparador.$cif_340.$caracterSeparador.$dd;
    
$TBAIID .= $mm.$aaaa.$caracterSeparador;
    
$TBAIID .= $SignatureValueFirmaFacturaActual.$caracterSeparador;
    
$TBAIID = utf8_encode($TBAIID);    
    
$cod_crc8 = crc8($TBAIID);
    
$TBAIID  = $TBAIID.$cod_crc8;
    unset(
$xml_actual_enviado);
    
$msg_TBAI =  $url_TBAI_QR.'?id='.$TBAIID.'&s='.$factura_tbai_serie.'&nf='.$factura_tbai_numero.'&i='.$factura_tbai_importe;
    
$msg_TBAI = utf8_encode($msg_TBAI);    
    
$cod_crc8 = crc8($msg_TBAI);
    
$msg_TBAI = $msg_TBAI.'&cr='.$cod_crc8; 
Al final queda algo así:

'https://tbai.prep.gipuzkoa.eus/qr/?id=TBAI-B09203993-210421-YQw6BwvgmOe9h-235&s=FR&nf=000115&i=-5.44&cr=012'

Este enlace funciona
Reply With Quote