https://tdestudiodesign.com/wp-content/plugins/whatsapp/style.css

Como comerciante de la UE que trata con clientes de IVA, a menudo me encuentro haciendo controles manuales en el Validación del número de IVA VIES sitio web. Afortunadamente, la mayoría de mis clientes están fuera de la UE, así que no uso la herramienta a menudo, pero aún así, ¡para un desarrollador, esto es solo una pérdida de tiempo!

Al estudiar las opciones disponibles en varios foros en línea, encontré una solución súper simple que ni siquiera requiere registrarse para una API.

De hecho, simplemente puede visitar una URL y obtener la respuesta de inmediato, lo que significa que podemos acceder a la misma URL a través de PHP, obtener la respuesta y posiblemente devolver un error en la página de pago de WooCommerce en caso de que el número no sea válido.

Siga leyendo para averiguar cómo uso esta validación en este mismo sitio web.

¡Aquí está mi código en el trabajo! Cuando el usuario realiza un pedido, la validación de IVA de la UE se desencadena, y en caso de un error se notifica al usuario al respecto.

URL y respuesta de API

La URL que debe visitar para fines de validación de IVA tiene el siguiente formato:

https://ec.europa.eu/taxation_customs/vies/rest-api/ms/{$country}/vat/{$vatno}[/php]

donde {$ country} es el código de país de 2 letras (IT, ES, DE, etc.) y {$ Vatno} es el número de impuestos. No se requieren credenciales de API ni claves ni registro.

Tan pronto como vas a la URL, obtienes una respuesta JSON:

{  "isValid" : false,  "requestDate" : "2023-10-31T17:57:36.559Z",  "userError" : "INVALID",  "name" : "---",  "address" : "---",  "requestIdentifier" : "",  "originalVatNumber" : "123456789",  "vatNumber" : "123456789",  "viesApproximate" : {    "name" : "---",    "street" : "---",    "postalCode" : "---",    "city" : "---",    "companyType" : "---",    "matchName" : 3,    "matchStreet" : 3,    "matchPostalCode" : 3,    "matchCity" : 3,    "matchCompanyType" : 3  }}[/php]

Solo necesitamos centrarnos en la tecla "UserError": si no es "válido", entonces el número de IVA está mal.

Prueba rápida? Ir a https://ec.europa.eu/taxation_customs/vies/rest-api/ms/it/vat/1179829733 y validemos el número de IVA de la UE IT1179829733. La respuesta debe ser "UserError": "inválido".

Ok, ahora podemos pasar a los ganchos de PHP y WooCommerce, para que podamos validar el IVA de la UE sobre la marcha.

Php Snippet 1: Agregar campo de IVA de la UE @ WooCommerce.

Ya hemos estudiado cómo Agregue campos de pago personalizados de WooCommerceasí que no copiaré el código aquí. Todo lo que necesita para la siguiente pieza de código es el ID de campo de pago personalizado que define en dicho fragmento. En el tutorial acabo de compartir esto se puede encontrar aquí:

woocommerce_form_field( 'license_no', array(   // ETC);

Por supuesto, puedes cambiar el nombre 'licencia_no'a lo que desee dentro del fragmento de campo de pago personalizado, así que siéntase libre de usar un más apropiado'Eu_vat_nunber'ID de campo.

Ahora podemos orientar esto en el próximo fragmento: leeremos los datos publicados, los enviaremos a VIES para la validación y recuperaremos la respuesta.

Php Fnippet 2: Validar el valor del campo de la UE IVA @ WooCommerce Checkout

/**  n*@snippet       EU VAT Validation @ WooCommerce Checkout  n*@how-to        https://tdestudiodesign.com/tutoriales  n*@author        Tomás Lucas D´Amario, TD Estudio Design  n*@compatible    WooCommerce 8  n*@community     https://tdestudiodesign.com/club */add_action( 'woocommerce_checkout_process', 'tddesign_validate_new_checkout_field' );  function tddesign_validate_new_checkout_field() {    if ( $_POST['vat'] ) {$vat = preg_replace( '/[^A-Z0-9]/i', '', sanitize_text_field( $_POST['vat'] ) ); // ONLY KEEP ALPHANUMERIC CHARS$country = substr( $vat, 0, 2 ); // COUNTRY CODE$vatno = substr( $vat, 2 ); // VAT NUMBER$url = "https://ec.europa.eu/taxation_customs/vies/rest-api/ms/{$country}/vat/{$vatno}";$response = file_get_contents( $url ); // CALL THE URL$response_obj = json_decode( $response ); // RESPONSE OBJECTif ( $response_obj->userError != 'VALID' ) {wc_add_notice( 'There seems to be an error with your Vat Number: ' . $response_obj->userError, 'error' );}}}

Este código todavía funciona, a menos que informe lo contrario. Para excluir los conflictos, cambie temporalmente al tema de la tienda, deshabilite todos los complementos, excepto WooCommerce, y pruebe el fragmento nuevamente: Solución de problemas de WooCommerce 101

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *