Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-09-2023
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.035
Poder: 22
keys Va por buen camino
Hola.

Lo primero gracias. Hasta ahí es donde yo llego.

En cuento a la primera respuesta la url que sale es https://editor.swagger.io/check-vat-number y esa no puede ser ya que esa es la dirección del editor, no encuentro por ningún otro lado la url correcta.

En cuento a la segunda, ese enlace se trata de una empresa que ha desarrollado su propia api para realizar las consultas y cobra por ello.

Gracias otra vez.
Responder Con Cita
  #2  
Antiguo 28-09-2023
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.110
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Buscando la URL de marras, me he topado con esta entrada en StackOverflow, donde se muestra la siguiente URL:

Código:
https://ec.europa.eu/taxation_customs/vies/rest-api/ms/[country]/vat/[vat]
En efecto, parece funcionar como se espera, por ejemplo, la siguiente URL, y, mediante un "simple" HTTP GET:

Código:
https://ec.europa.eu/taxation_customs/vies/rest-api/ms/DE/vat/122268496
... ya retorna un JSON que nos da la respuesta de si el VAT es válido o no.

Por otro lado, parece que la URL "base" que se necesita es la siguiente:

Código:
https://ec.europa.eu/taxation_customs/vies/rest-api/
... a la que se podría ya añadir el método que se quiere utilizar:

Código:
https://ec.europa.eu/taxation_customs/vies/rest-api/check-vat-number
Acabo de probarlo y funciona como se espera, esto es, enviando a dicho método (mediante HTTP POST) el JSON / argumento necesario, tal como se define aquí:

Código:
https://ec.europa.eu/assets/taxud/vow-information/swagger_publicVAT.yaml
... y puede verse "mejor" en el editor Swagger, la respuesta es la esperada.

P.D. Puede probarse todo esto fácilmente en REQ BIN.

URL: https://ec.europa.eu/taxation_custom...eck-vat-number

Method: POST

JSON de entrada:

Código:
{
  "countryCode": "DE",
  "vatNumber": "122268496"
}
JSON de salida / respuesta:

Código:
{
    "countryCode": "DE",
    "vatNumber": "122268496",
    "requestDate": "2023-09-28T12:41:19.417Z",
    "valid": true,
    "requestIdentifier": "",
    "name": "---",
    "address": "---",
    "traderName": "---",
    "traderStreet": "---",
    "traderPostalCode": "---",
    "traderCity": "---",
    "traderCompanyType": "---",
    "traderNameMatch": "NOT_PROCESSED",
    "traderStreetMatch": "NOT_PROCESSED",
    "traderPostalCodeMatch": "NOT_PROCESSED",
    "traderCityMatch": "NOT_PROCESSED",
    "traderCompanyTypeMatch": "NOT_PROCESSED"
}
Supongo que puede jugarse un poco con todo esto, porque, en el archivo YAML se puede ver un JSON de entrada para el método de arriba tal que así:

Código:
{
  "countryCode": "string",
  "vatNumber": "string",
  "requesterMemberStateCode": "string",
  "requesterNumber": "string",
  "traderName": "string",
  "traderStreet": "string",
  "traderPostalCode": "string",
  "traderCity": "string",
  "traderCompanyType": "string"
}
Como se ve en el ejemplo que he puesto arriba, no es necesario enviar toda esa información. Con las dos primeras claves se obtiene ya información. Podemos añadir las dos siguientes y también funciona. El resto de claves, imagino, son para utilizarlas sin las anteriores (sin al menos las dos primeras), es decir, para intentar obtener un VAT proporcionando el "traderName" únicamente, etc.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 28-09-2023 a las 14:46:40.
Responder Con Cita
  #3  
Antiguo 28-09-2023
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.035
Poder: 22
keys Va por buen camino
Acabo de encontrar la url y ahora tengo que hacer que funcione. Cuando lo tenga pondré el código.

https://ec.europa.eu/taxation_customs/vies/rest-api/

y tiene los tres siguientes servicios:

/check-vat-number
/check-vat-test-service
/check-status

A la del estado es fácil hacerla funcionar, ya que no tiene parámetros. Me estoy pegando con el primero.
Responder Con Cita
  #4  
Antiguo 28-09-2023
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.110
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Cita:
Empezado por keys Ver Mensaje
Acabo de encontrar la url y ahora tengo que hacer que funcione. Cuando lo tenga pondré el código.

https://ec.europa.eu/taxation_customs/vies/rest-api/

y tiene los tres siguientes servicios:

/check-vat-number
/check-vat-test-service
/check-status

A la del estado es fácil hacerla funcionar, ya que no tiene parámetros. Me estoy pegando con el primero.
Pues la hemos encontrado casi a la vez. Como he puesto en mi anterior mensaje, en efecto, funciona como se espera. Vaya, no lo he probado en Delphi sino en REQ BIN, pero, no veo porqué no funcionaría un HTTP POST similar desde Delphi. Si es que es necesario... porque la primera URL que pongo en mi anterior mensaje (y que usa sólo HTTP GET) acaso podría ser suficiente.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 02-10-2023
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.035
Poder: 22
keys Va por buen camino
Hola a todos. Pongo una función para validar un documento en el servicio VIES de la UE.

Código Delphi [-]
function ComprobarDocumentoVIES(Pais, Documento: string): false;
var
  LRequest: THTTPClient;

  LResponse: TStringStream;
  JSONData: TJSONObject;
  StringStream: TStringStream;
  valido : Boolean;
begin

  result := false;
  LRequest := THTTPClient.Create;
  LResponse := TStringStream.Create;

  //Objeto JSON para enviar los datos
  JSONData := TJSONObject.Create;
  JSONData.AddPair('countryCode', Pais);
  JSONData.AddPair('vatNumber', Documento);
  
  try

    Lrequest.ContentType := 'application/json';

    StringStream := TStringStream.Create(JSONData.ToString, TEncoding.UTF8);
    LRequest.Post('https://ec.europa.eu/taxation_customs/vies/rest-api/check-vat-number', StringStream , LResponse);
   
    JSONData := TJSONObject.ParseJSONValue(LResponse.DataString) as TJSONObject;

    if Assigned(JSONData) then
      begin
        // Obtener el valor del campo deseado
         if JSONData.TryGetValue Boolean ('valid', valido) then //esto lo pongo asi por que el chat no me deja poner los simbolos de mayor y menor delante y detrás de boolean;
          begin
            
             result := valido;
           
          end;

      end;

    JsonData.destroy;
    LResponse.Free;
    LRequest.Free;
    StringStream.Destroy;
  except
    JsonData.destroy;
    LResponse.Free;
    LRequest.Free;
    StringStream.Destroy;
  end;


end;
Responder Con Cita
  #6  
Antiguo 02-10-2023
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.474
Poder: 21
newtron Va camino a la fama
Gracias a todos. Seguro que nos será de utilidad a bastante gente.
__________________
Be water my friend.
Responder Con Cita
  #7  
Antiguo 02-10-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.068
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No entiendo, qué quieres decir aquí:
Código Delphi [-]
if JSONData.TryGetValue Boolean ('valid', valido) then //esto lo pongo asi por que el chat no me deja poner los simbolos de mayor y menor delante y detrás de boolean;
Responder Con Cita
  #8  
Antiguo 02-10-2023
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.035
Poder: 22
keys Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
No entiendo, qué quieres decir aquí:
Código Delphi [-]
if JSONData.TryGetValue Boolean ('valid', valido) then //esto lo pongo asi por que el chat no me deja poner los simbolos de mayor y menor delante y detrás de boolean;
que hay que poner <boolean>, Si esto lo pongo dentro del chat, marcando sintaxis delphi lo quita.

Para TicketBAI puede ser útil, ya que las haciendas están validando que son corectos los documentos intracomunitarios.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Suma de números pares que hay entre dos números Daniel2622 Lazarus, FreePascal, Kylix, etc. 21 26-04-2017 22:47:29
Tablas de multiplicar para todos los números entre dos números Daniel2622 Lazarus, FreePascal, Kylix, etc. 3 22-04-2017 00:47:59
Documentos UDF's johan Firebird e Interbase 1 23-03-2010 17:19:01
Documentos XML cone220 Internet 1 03-11-2004 17:49:35
Documentos pdf roman PHP 5 27-09-2004 16:14:23


La franja horaria es GMT +2. Ahora son las 03:39:42.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi