Sí, la estructura es correcta siempre que respetes los tipos de datos: los campos numéricos deben ser números (no strings) y los string deben ser strings. Es importante que el CAE (codAut) sea numérico y que el importe también sea un número, no un string ni con comillas, según las especificaciones de AFIP y experiencias de la comunidad. El uso de JSON_NUMERIC_CHECK ayuda a esto, y la URL generada es la adecuada para el QR de AFIP.
Sin embargo, asegúrate de que el Base64 generado incluya los caracteres de padding (=) al final si corresponde, ya que omitirlos puede causar errores al escanear el QR. Si tienes problemas de autocompletado en la web de AFIP, revisa que los tipos de datos sean correctos y que el Base64 esté bien formado. Más detalles y ejemplos en este hilo de Discord y en la documentación oficial de AFIP. ¿Te gustaría ver ejemplos de código o casos de error comunes?
Sources:
decime como serian los tipos de datos apra cada campo
@user decime como serian los tipos de datos apra cada campo
Los tipos de datos correctos para cada campo del QR de AFIP son:
- ver: número (integer)
- fecha: string (formato "YYYY-MM-DD")
- cuit: número (integer, sin guiones)
- ptoVta: número (integer)
- tipoCmp: número (integer)
- nroCmp: número (integer)
- importe: número (float o integer, sin comillas)
- moneda: string (por ejemplo, "PES" o "ARS")
- ctz: número (float o integer)
- tipoDocRec: número (integer)
- nroDocRec: número (integer, sin comillas)
- tipoCodAut: string ("E" o "A")
- codAut: número (integer, sin comillas)
Esto está validado por la experiencia de la comunidad y la especificación oficial de AFIP. ¿Querés ver un ejemplo concreto en código?
Sources:
@user cuando scaneo el codigo me lleva a la pagina de arca y se ve todo bien, cuando pongo "CONSULTAR" me sale esto: Se ha detectado al menos uno de los siguientes errores: Los datos que contiene el QR escaneado están incompletos. El NÚMERO CAE consultado no existe en las bases de datos del organismo. Se podrán constatar comprobantes con FECHA DE EMISIÓN del 01/01/2013 en adelante. La CUIT del emisor no se corresponde con el CAE ingresado. El TIPO DE COMPROBANTE no se corresponde con el CAE ingresado. El PUNTO DE VENTA consignado no se corresponde con el CAE ingresado. El NÚMERO DE COMPROBANTE no se corresponde con el CAE ingresado. La FECHA consignada no se corresponde para el CAE ingresado. El IMPORTE TOTAL no se corresponde con lo registrado en las bases de datos del organismo. El TIPO Y NÚMERO DE DOCUMENTO del receptor no se corresponde con la informada en el comprobante o no es válida y no se encontraba activa al momento de emisión.
Ese mensaje indica que algún dato del QR no coincide con lo registrado en AFIP/ARCA, o que falta información obligatoria. Los errores más comunes son: tipos de datos incorrectos (por ejemplo, números como string), CAE inexistente o mal tipeado, fechas fuera de rango, o diferencias entre los datos del comprobante y los del QR. También puede ocurrir si el comprobante fue emitido en ambiente de desarrollo, ya que solo los comprobantes de producción pueden ser validados en la web pública.
Verifica que todos los campos del QR sean del tipo correcto y coincidan exactamente con los datos del comprobante autorizado (CAE, fecha, CUIT, punto de venta, tipo y número de comprobante, importe, etc.). Si estás en desarrollo, la validación pública no funcionará; solo en producción es posible constatar. Más detalles y ejemplos en este hilo de Discord y en la documentación oficial. ¿Querés ayuda para comparar los datos del QR con los del comprobante?
Sources:
Sí, los tipos de datos y valores que estás enviando son correctos: todos los campos numéricos están como números y los string como corresponde. El formato de fecha también es válido. Si el comprobante fue emitido en producción y los datos coinciden exactamente con los registrados en AFIP/ARCA, debería funcionar correctamente según la especificación oficial.
Si aún así recibís error, revisá que el CAE (codAut), el número de comprobante, el punto de venta, el importe y el resto de los datos coincidan exactamente con los del comprobante autorizado en AFIP. Si estás en ambiente de desarrollo, la validación pública no funcionará. ¿Querés que te ayude a comparar los datos con el comprobante real?
Sources:
@user podes ver algun tipo de error aca?
$datos = array( "ver" => 1, "fecha" => $fecha_factura_qr, "cuit" => $cuit_emisor_qr, "ptoVta" => $pto_vta_qr, "tipoCmp" => $tipoCmp_qr, "nroCmp" => $nroCmp_qr, "importe" => $importe_qr, "moneda" => $moneda, "ctz" => $ctz_qr, "tipoDocRec" => $tipoDocRec_qr, "nroDocRec" => $nroDocRec_qr, "tipoCodAut" => "E", "codAut" => intval($cae) );
$json_resultado = json_encode($datos, JSON_NUMERIC_CHECK); $base64_resultado = base64_encode($json_resultado); $cadena = "https://www.arca.gob.ar/fe/qr/?p=$base64_resultado";
$options = new QROptions([ 'version' => QRCode::VERSION_AUTO, 'outputType' => QRCode::OUTPUT_IMAGE_PNG, 'eccLevel' => QRCode::ECC_L, 'scale' => 5, 'imageBase64' => false, 'moduleValues' => [], ]);
$qrcode = new QRCode($options); $imageData = $qrcode->render($cadena); $carpetaQR = "../images/qr/$id/";
if (!file_exists($carpetaQR)) { mkdir($carpetaQR, 0777, true); }
$archivoQR = "$carpetaQR$id.png"; file_put_contents($archivoQR, $imageData);
El código es correcto en cuanto a estructura y tipos de datos, pero el error principal es la URL: debe ser https://www.afip.gob.ar/fe/qr/?p=... y no https://www.arca.gob.ar/fe/qr/?p=.... AFIP es el dominio oficial para la validación de comprobantes electrónicos, según la especificación oficial.
Además, asegurate de que $moneda sea "PES" o "ARS" y que todos los valores numéricos sean realmente números (sin comillas). Si el comprobante es de producción y los datos coinciden, debería funcionar. ¿Querés que revise algún campo específico o el proceso de generación del CAE?
Sources:
esa es la URL generada, es correcta?
esa es la URL generada, es correcta?
esa es la URL generada, es correcta?
Sí, la URL generada es correcta en cuanto a formato y dominio: utiliza el endpoint oficial de AFIP y el parámetro p contiene el JSON en base64, siguiendo la especificación oficial de AFIP. Los campos y tipos de datos también parecen correctos.
Si al consultar recibís errores, revisá que todos los datos (CAE, CUIT, punto de venta, tipo y número de comprobante, importe, etc.) coincidan exactamente con los registrados en AFIP y que el comprobante sea de producción. ¿Querés ayuda para validar los datos internos del JSON?
Sources: