NIP at checkout
Los clientes empresariales necesitan un campo NIP en la página de pago para recibir una factura con IVA. Polski for WooCommerce añade un campo NIP con validación de suma de control y verificación en GUS REGON. Los datos de la empresa se rellenan automáticamente.
Funcionalidades
Section titled “Funcionalidades”El módulo NIP verifica el número en tres niveles:
- Validación de formato - comprobación de que el número está compuesto por 10 dígitos
- Validación de suma de control - algoritmo de verificación del dígito de control del NIP
- Verificación GUS REGON - comprobación en la base de datos de la Oficina Central de Estadística con obtención automática de los datos de la empresa
Configuración
Section titled “Configuración”Vaya a WooCommerce > Ajustes > Polski > Pago y configure la sección “NIP”.
Ajustes básicos
Section titled “Ajustes básicos”| Ajuste | Valor predeterminado | Descripción |
|---|---|---|
| Activar campo NIP | Sí | Añade el campo NIP a la página de pago |
| Campo obligatorio | No | Si el NIP es obligatorio |
| Posición del campo | Después del campo de empresa | Dónde mostrar el campo NIP |
| Validación de suma de control | Sí | Comprueba la corrección del número NIP |
| Verificación GUS REGON | No | Verifica el NIP en la base de datos GUS |
| Rellenado automático | Sí | Obtiene los datos de la empresa de GUS |
Visualización condicional
Section titled “Visualización condicional”El campo NIP se puede mostrar:
- Siempre - visible para todos los clientes
- Tras marcar “Quiero una factura” - aparece tras marcarlo
- Tras introducir un nombre de empresa - aparece cuando el campo “Empresa” está relleno
La opción recomendada es mostrarlo tras marcar “Quiero una factura” - es la más clara para el cliente.
Validación de suma de control
Section titled “Validación de suma de control”El algoritmo de validación del NIP se basa en un sistema de pesos. El dígito de control (último, décimo dígito) se calcula a partir de los nueve dígitos anteriores.
Algoritmo
Section titled “Algoritmo”Pesos para los dígitos sucesivos del NIP: 6, 5, 7, 2, 3, 4, 5, 6, 7
NIP: 1234567890Sum = 1*6 + 2*5 + 3*7 + 4*2 + 5*3 + 6*4 + 7*5 + 8*6 + 9*7 = 214Remainder = 214 mod 11If remainder == last NIP digit -> NIP is validEl plugin valida tanto en el lado del cliente (JavaScript) como en el del servidor (PHP). La validación del lado del servidor siempre está activa.
Gestión de formatos de entrada
Section titled “Gestión de formatos de entrada”El plugin acepta el NIP en diversos formatos:
1234567890- solo dígitos123-456-78-90- con guiones123 456 78 90- con espaciosPL1234567890- con prefijo de país
Todos los formatos se normalizan a 10 dígitos antes de la validación.
Verificación GUS REGON
Section titled “Verificación GUS REGON”Configuración de la API
Section titled “Configuración de la API”La API GUS REGON requiere una clave de acceso. El plugin admite dos entornos:
| Entorno | URL | Clave | Uso |
|---|---|---|---|
| Prueba | https://wyszukiwarkaregontest.stat.gov.pl/wsBIR/UslugaBIRzewnwordbir.svc | abcde12345abcde12345 (clave de prueba pública) | Desarrollo y pruebas |
| Producción | https://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnetrzny.svc | Su propia clave de GUS | Tienda en producción |
Obtención de una clave de producción
Section titled “Obtención de una clave de producción”- Vaya a: https://api.stat.gov.pl/Home/BirIndex
- Regístrese e inicie sesión
- Presente una solicitud de acceso a la API REGON
- La clave se enviará a la dirección de correo electrónico indicada (tiempo de espera: 1-3 días hábiles)
Configuración del plugin
Section titled “Configuración del plugin”- Vaya a WooCommerce > Ajustes > Polski > Pago > NIP
- Active Verificación GUS REGON
- Seleccione el entorno: Prueba o Producción
- Pegue la clave de API (para el entorno de producción)
- Guarde los ajustes
Modo de prueba
Section titled “Modo de prueba”En modo de prueba, el plugin utiliza la clave de prueba pública de GUS. La base de datos de prueba contiene datos ficticios. Úsela únicamente durante el desarrollo y las pruebas.
Obtención automática de los datos de la empresa
Section titled “Obtención automática de los datos de la empresa”Tras verificar el NIP en GUS REGON, el plugin rellena automáticamente los campos del formulario:
| Campo de WooCommerce | Datos de GUS |
|---|---|
| Empresa | Nombre de la empresa |
| Dirección 1 | Calle y número |
| Ciudad | Ciudad |
| Código postal | Código postal |
| Estado/Provincia | Voivodato |
El cliente ve los datos rellenados y puede corregirlos antes de realizar el pedido.
Comportamiento del rellenado automático
Section titled “Comportamiento del rellenado automático”- Los campos se rellenan solo si están vacíos o contienen datos de GUS obtenidos previamente
- Si el cliente ha modificado los datos manualmente, el plugin no sobrescribe los cambios
- Se informa al cliente con un mensaje sobre la obtención de los datos
Almacenamiento del NIP
Section titled “Almacenamiento del NIP”El número NIP se guarda como metadatos del pedido:
- clave:
_billing_nip - visible en la vista del pedido del panel de administración
- disponible en las plantillas de correo electrónico
- exportable en los informes
Visualización del NIP en el pedido
Section titled “Visualización del NIP en el pedido”El NIP se muestra automáticamente:
- en los detalles del pedido (panel de administración)
- en el correo electrónico de confirmación del pedido
- en la página “Mi cuenta > Pedidos”
Acceso programático
Section titled “Acceso programático”Obtener el NIP de un pedido
Section titled “Obtener el NIP de un pedido”$order = wc_get_order($order_id);$nip = $order->get_meta('_billing_nip');Validación del NIP en PHP
Section titled “Validación del NIP en PHP”function validate_nip(string $nip): bool { $nip = preg_replace('/[^0-9]/', '', $nip);
if (strlen($nip) !== 10) { return false; }
$weights = [6, 5, 7, 2, 3, 4, 5, 6, 7]; $sum = 0;
for ($i = 0; $i < 9; $i++) { $sum += (int) $nip[$i] * $weights[$i]; }
return ($sum % 11) === (int) $nip[9];}Hook de validación
Section titled “Hook de validación”add_filter('polski/checkout/validate_nip', function (bool $is_valid, string $nip): bool { // Additional validation logic // e.g. checking against a blocked NIP list $blocked_nips = ['0000000000'];
if (in_array($nip, $blocked_nips, true)) { return false; }
return $is_valid;}, 10, 2);Problemas frecuentes
Section titled “Problemas frecuentes”La verificación GUS devuelve un error
Section titled “La verificación GUS devuelve un error”- Compruebe que la clave de API es correcta y está activa
- Verifique que el servidor puede establecer una conexión HTTPS con api.stat.gov.pl
- La API de GUS puede no estar disponible - el plugin gestiona los tiempos de espera y muestra un mensaje adecuado
- Asegúrese de que la extensión PHP SOAP está instalada en el servidor
El campo NIP no se muestra
Section titled “El campo NIP no se muestra”- Compruebe que el módulo NIP está activado
- Verifique el ajuste de visualización condicional
- Vacíe la caché (los plugins de caché pueden almacenar en caché el formulario de pago)
Los datos de la empresa no se rellenan automáticamente
Section titled “Los datos de la empresa no se rellenan automáticamente”- Compruebe la consola del navegador en busca de errores AJAX
- Verifique que el endpoint de la API REST del plugin es accesible
- Asegúrese de que el NIP es correcto y de que la empresa existe en la base de datos GUS