Cita:
Empezado por sline
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