Ver Mensaje Individual
  #590  
Antiguo 12-05-2021
bilbur bilbur is offline
Miembro
 
Registrado: dic 2019
Posts: 62
Reputación: 7
bilbur Va por buen camino
Cita:
Empezado por sline Ver Mensaje
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

Código PHP:
   $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
Responder Con Cita