VIES-programmeringsbibliotek
Med programmeringsbibliotek kan du söka efter företagardata baserat på det angivna EU-momsnumret. För närvarande finns API-bibliotek tillgängliga för följande programmeringsspråk:
- .NET (C#, Visual Basic)
- Java
- JavaScript (Node.js)
- PHP
- Pytonorm
- C/C++
API tillhandahåller följande funktioner:
getVIESData
– funktion för att bekräfta aktiviteten för det EU-momsnummer som tilldelats av någon av Europeiska unionens medlemsstater,getVIESDataParsed
– funktion för att bekräfta aktiviteten för det EU-momsnummer som tilldelats av någon av Europeiska unionens medlemsstater och returnera den analyserade handlaradressen,getVIESDataAsync
– asynkron funktion, som, baserat på den skickade batchen av momsnummer, låter dig få aktuell EU-momsstatus och näringsidkardata.getVIESDataAsyncResult
– funktionen låter dig hämta batchresultat baserat på token som returneras av getVIESDataAsync-funktionengetAccountStatus
– funktion för att hämta aktuell information om användarkontot.
Integration
Alla bibliotek med källkoder är tillgängliga för nedladdning på Ladda ner sida. Dessutom finns källkoden för biblioteken också tillgänglig i vårt officiella arkiv på Github.
Sättet att integrera biblioteket beror på det valda programmeringsspråket. För de språk som stöder bibliotekshantering baserat på ett centralt arkiv är det möjligt att använda det.
- C#
- C/C++
- Java
- JavaScript
- PHP
- Pytonorm
- Visual Basic
// NuGet Gallery
// https://www.nuget.org/packages/VIESAPI.VIESAPIClient
PM> Install-Package VIESAPI.VIESAPIClient
// No central repository support
// Maven
// https://viesapi.eu/maven/
<repository>
<id>viesapi</id>
<url>https://viesapi.eu/maven/releases</url>
</repository>
<dependency>
<groupId>eu.viesapi</groupId>
<artifactId>viesapi-client</artifactId>
<version>1.2.6</version>
</dependency>
// NPM
// https://www.npmjs.com/package/viesapi-client
npm install viesapi-client
// Packagist (Composer)
// https://packagist.org/packages/viesapi/client
composer require viesapi/client
# No central repository support
pip install viesapi-python-client-1.2.6.zip
' No central repository support
Autentisering
För att utföra korrekt autentisering, de korrekta värdena för id
och key
parametrar bör tillhandahållas under konstruktionen av klientobjektet. De id
parametern bör innehålla en giltig nyckelidentifierare som används för auktorisering. De key
parametern bör innehålla ett giltigt värde för nyckeln som används för auktorisering. Nyckelidentifieraren och nyckeln genereras av användaren efter att ha loggat in på sitt konto på viesapi.eu
portal. Processen att generera nycklar och identifierare har beskrivits i detalj ovan.
Följande exempel illustrerar hur du använder biblioteksfunktionerna:
- C#
- C/C++
- Java
- JavaScript
- PHP
- Pytonorm
- Visual Basic
using viesapiLibrary.dll;
// Create the service client object
// id - a string representing the API key identifier
// key - a string representing the API key
VIESAPIClient viesapi = new VIESAPIClient("id", "key");
#include "viesapi.h"
// Create the service client object
// id - a string representing the API key identifier
// key - a string representing the API key
VIESAPIClient* viesapi = NULL;
viesapi_new_prod(&viesapi, "id", "key");
import pl.viesapi.client.*;
// Create the service client object
// id - a string representing the API key identifier
// key - a string representing the API key
VIESAPIClient viesapi = new VIESAPIClient("id", "key");
var VIESAPI = require('viesapiclient');
// Create the service client object
// id - a string representing the API key identifier
// key - a string representing the API key
var viesapi = new VIESAPI.VIESAPIClient('id', 'key');
require_once 'VIESAPI/VIESAPIClient.php';
\VIESAPI\VIESAPIClient::registerAutoloader();
// Create the service client object
// id - a string representing the API key identifier
// key - a string representing the API key
$viesapi = new \VIESAPI\VIESAPIClient('id', 'key');
from viesapi import *
from pprint import pprint
// Create the service client object
// id - a string representing the API key identifier
// key - a string representing the API key
viesapi = VIESAPIClient('id', 'key')
' Create the service client object
' id - a string representing the API key identifier
' key - a string representing the API key
Dim viesapi As New VIESAPIClient
viesapi.URL = "https://www.viesapi.eu/api"
viesapi.Id = "id"
viesapi.Key = "key"
Uppmärksamhet! Den aktuella tiden för klientens dator används under autentiseringsprocessen. I händelse av autentiseringsproblem när du försöker ansluta till viesapi.eu-systemet, se därför först till att datorn eller servern från vilken anslutningen upprättas har rätt aktuell tid och tidszon. Mer information om metoden som används av viesapi.eu-systemet för att autentisera förfrågningar finns här.
Kontrollera EU-momsnummer
EU-momsnumret bekräftas genom att ringa till getVIESData
funktion, vars parameter är det EU-momsnummer som vi vill verifiera. Funktionen möjliggör verifiering av EU-momsnummer utfärdade av alla EU-medlemsstater.
Följande exempel illustrerar hur funktioner används i bibliotek:
- C#
- C/C++
- Java
- JavaScript
- PHP
- Pytonorm
- Visual Basic
// A call to a method that returns data from a VIES system
VIESData vies = viesapi.GetVIESData("PL1234567890");
if (vies != null) {
Console.WriteLine(vies);
}
else {
Console.WriteLine("Error: " + viesapi.LastError + " (code: " + viesapi.LastErrorCode + ")");
}
// A call to a method that returns data from a VIES system
VIESData* vies = viesapi_get_vies_data(viesapi, "PL1234567890");
if (vies != NULL) {
printf("Kraj: %s\n", vies->CountryCode);
printf("VAT ID: %s\n", vies->VATNumber);
printf("Aktywny: %d\n", vies->Valid);
}
else {
printf("Error: %s (code: %d)\n", viesapi_get_last_err(viesapi), viesapi_get_last_err_code(viesapi));
}
// A call to a method that returns data from a VIES system
VIESData vies = viesapi.getVIESData("PL1234567890");
if (vies != null) {
System.out.println(vies);
}
else {
System.out.println("Error: " + viesapi.getLastError() + " (code: " + viesapi.getLastErrorCode() + ")");
}
// A call to a method that returns data from a VIES system
viesapi.getVIESData('PL1234567890').then((vies) => {
console.log(vies.toString());
}).catch((e) => {
console.log(e.message);
});
// A call to a method that returns data from a VIES system
$vies = $viesapi->get_vies_data('PL1234567890');
if ($vies) {
print_r($vies);
}
else {
echo '<p>Error: ' . $viesapi->get_last_error() . '</p>';
}
# A call to a method that returns data from a VIES system
vies = viesapi.get_vies_data('PL1234567890')
if vies:
pprint(vars(vies))
else:
print('Error: ' + viesapi.get_last_error() + ' (code: ' + str(viesapi.get_last_error_code()) + ')')
' A call to a method that returns data from a VIES system
Dim vies As VIESData
Set vies = viesapi.GetVIESData("PL1234567890")
If vies Is Nothing Then
Console.WriteLine("Error: {0}", viesapi.LastError)
Else
Console.WriteLine(vies.ToString())
End If
Detaljerad beskrivning av returnerade attribut:
uid
– unik frågeidentifierare genererad av viesapi.eu,countryCode
– landskod där det företag som är kopplat till det EU-momsnummer som anges i förfrågan är registrerat,vatNumber
– EU-momsnummer för det verifierade företaget som anges i förfrågan,valid
– svar från VIES-tjänsten, som informerar om den kontrollerade enhetens aktuella EU-momsstatus:true
– EU-momsnummer som anges i förfrågan är giltigt,false
– EU-momsnumret som anges i förfrågan är inte giltigt,
traderName
– företagets handelsnamn,traderCompanyType
– returnerade alltid en sträng med "-"-tecken,traderAddress
– företagsadress där företaget är registrerat,id
– unik frågeidentifierare genererad av VIES-systemet (konsultationsnummer)date
– datum för utförande av frågansource
– datakälla, alltid: http://ec.europa.eu
Kontrollera EU-momsnummer med analyserad näringsidkaradress
Du kan också bekräfta EU-momsnumret genom att ringa getVIESDataParsed
funktion, vars parameter är det EU-momsnummer som vi vill verifiera. Genom att anropa denna funktion får du, förutom information om status som momsbetalare, även den analyserade näringsidkaradressen.
Notera! På grund av bristen på data som returneras av VIES för handlare från Tyskland och Spanien gör funktionen det inte återvända en analyserad handlaradress (traderAddressComponent
) för dessa länder.
Viktig ansvarsfriskrivning
Parsningsfunktionen använder externa AI-algoritmer och API:er för att automatiskt extrahera attribut som: stad, postnummer, gata med gatunummer (byggnadsnummer) och husnummer, så vi kan inte garantera att dess 100% fungerar korrekt.
Följande exempel illustrerar hur funktioner används i bibliotek:
- C#
- C/C++
- Java
- JavaScript
- PHP
- Pytonorm
- Visual Basic
// A call to a method that returns data from a VIES system
VIESData vies = viesapi.GetVIESDataParsed("PL1234567890");
if (vies != null) {
Console.WriteLine(vies);
}
else {
Console.WriteLine("Error: " + viesapi.LastError + " (code: " + viesapi.LastErrorCode + ")");
}
// A call to a method that returns data from a VIES system
VIESData* vies = viesapi_get_vies_data_parsed(viesapi, "PL1234567890");
if (vies != NULL) {
printf("Kraj: %s\n", vies->CountryCode);
printf("VAT ID: %s\n", vies->VATNumber);
printf("Aktywny: %d\n", vies->Valid);
}
else {
printf("Error: %s (code: %d)\n", viesapi_get_last_err(viesapi), viesapi_get_last_err_code(viesapi));
}
// A call to a method that returns data from a VIES system
VIESData vies = viesapi.getVIESDataParsed("PL1234567890");
if (vies != null) {
System.out.println(vies);
}
else {
System.out.println("Error: " + viesapi.getLastError() + " (code: " + viesapi.getLastErrorCode() + ")");
}
// A call to a method that returns data from a VIES system
viesapi.getVIESDataParsed('PL1234567890').then((vies) => {
console.log(vies.toString());
}).catch((e) => {
console.log(e.message);
});
// A call to a method that returns data from a VIES system
$vies = $viesapi->get_vies_data_parsed('PL1234567890');
if ($vies) {
print_r($vies);
}
else {
echo '<p>Error: ' . $viesapi->get_last_error() . '</p>';
}
# A call to a method that returns data from a VIES system
vies = viesapi.get_vies_data_parsed('PL1234567890')
if vies:
pprint(vars(vies))
else:
print('Error: ' + viesapi.get_last_error() + ' (code: ' + str(viesapi.get_last_error_code()) + ')')
' A call to a method that returns data from a VIES system
Dim vies As VIESData
Set vies = viesapi.GetVIESDataParsed("PL1234567890")
If vies Is Nothing Then
Console.WriteLine("Error: {0}", viesapi.LastError)
Else
Console.WriteLine(vies.ToString())
End If
Detaljerad beskrivning av returnerade attribut:
uid
– unik frågeidentifierare genererad av viesapi.eu,countryCode
– landskod där det företag som är kopplat till det EU-momsnummer som anges i förfrågan är registrerat,vatNumber
– EU-momsnummer för det verifierade företaget som anges i förfrågan,valid
– svar från VIES-tjänsten, som informerar om den kontrollerade enhetens aktuella EU-momsstatus:true
– EU-momsnummer som anges i förfrågan är giltigt,false
– EU-momsnumret som anges i förfrågan är inte giltigt,
traderName
– företagets handelsnamn,traderCompanyType
– returnerade alltid en sträng med "-"-tecken,traderAddress
– företagsadress där företaget är registrerat (originalformat)traderAddressComponent
– adressuppgifter för komponentgrupperingcountry
– Namnet på näringsidkarens land på dess nationella språkpostalCode
– postnummer för näringsidkarens adresscity
– orten för näringsidkarens adressstreet
-gatan till näringsidkarens adressstreetNumber
– gatunummer för näringsidkarens adresshouseNumber
– husnummer för näringsidkarens adress
id
– unik frågeidentifierare genererad av VIES-systemet (konsultationsnummer)date
– datum för utförande av frågansource
– datakälla, alltid: http://ec.europa.eu
Batch (asynkron) kontroll av EU-momsnummer
getVIESDataAsync
– asynkron funktion, som, baserat på den skickade batchen av momsnummer, låter dig få aktuell EU-momsstatus och näringsidkardata.
Som en parameter, tillhandahåll en strängmatris som innehåller EU-momsnummer för vilka EU:s momsbetalares status ska kontrolleras och beträdarens data ska laddas ner.
Det minsta antalet EU-momsnummer som skickas är 2 och det maximala är 99.
En korrekt anropad funktion returnerar en token, som är nödvändig för att hämta förfrågningsresultaten. Följande exempel illustrerar hur funktioner används i bibliotek:
- C#
- C/C++
- Java
- JavaScript
- PHP
- Pytonorm
- Visual Basic
// Upload batch of VAT numbers and get their current VAT statuses and traders data
List numbers = new List {
"PL1234567890,
"DK64839576",
"CZ8475630234"
};
string token = viesapi.GetVIESDataAsync(numbers);
if (token != null) {
Console.WriteLine("Batch token: " + token);
} else {
Console.WriteLine("Error: " + viesapi.LastError + " (code: " + viesapi.LastErrorCode + ")");
}
// Upload batch of VAT numbers and get their current VAT statuses and traders data
char* numbers[] = {
"PL1234567890,
"DK64839576",
"CZ8475630234"
};
token = viesapi_get_vies_data_async(viesapi, numbers, 3);
if (token != NULL) {
printf("Batch token: %s\n", token);
} else {
printf("Error: %s (code: %d)\n", viesapi_get_last_err(viesapi), viesapi_get_last_err_code(viesapi));
}
// Upload batch of VAT numbers and get their current VAT statuses and traders data
List numbers = new ArrayList<>();
numbers.add("PL1234567890");
numbers.add("DK64839576");
numbers.add("CZ8475630234");
String token = viesapi.getVIESDataAsync(numbers);
if (token != null) {
System.out.println("Batch token: " + token);
} else {
System.out.println("Error: " + viesapi.getLastError() + " (code: " + viesapi.getLastErrorCode() + ")");
}
// Upload batch of VAT numbers and get their current VAT statuses and traders data
const numbers = [
'PL1234567890',
'DK64839576',
'CZ8475630234'
];
viesapi.getVIESDataAsync(numbers).then((token) => {
console.log('Batch token: ' + token);
}).catch((e) => {
console.log(e.message);
});
// Upload batch of VAT numbers and get their current VAT statuses and traders data
$numbers = array(
'PL1234567890',
'DK64839576',
'CZ7710043187'
);
$token = $viesapi->get_vies_data_async($numbers);
if ($token) {
echo '<pre>Batch token: ' . $token . '</pre>';
} else {
echo '<p>Error: ' . $viesapi->get_last_error() . ' (code: ' . $viesapi->get_last_error_code() . ')</p>';
}
# Upload batch of VAT numbers and get their current VAT statuses and traders data
numbers = [
'PL1234567890',
'DK64839576',
'CZ7710043187'
]
token = viesapi.get_vies_data_async(numbers)
if token:
print('Batch token: ' + token)
else:
print('Error: ' + viesapi.get_last_error() + ' (code: ' + str(viesapi.get_last_error_code()) + ')')
' Not supported yet
På grund av funktionens asynkrona karaktär kan resultaten hämtas efter cirka 2-3 minuter. Det spelar ingen roll om 2 eller 99 EU-momsnummer skickades i begäran.
Om minst ett EU-momsnummer som skickats i begäran har ett felaktigt format, returnerar systemet ett felmeddelande "VAT-numret är ogiltigt".
För att hämta resultaten för den skickade förfrågan, ring getVIESDataAsyncResult
funktion, vilket ger tokenvärdet som indataparameter.
Viktig anmärkning!
- Funktionen förbereddes som en lösning för felet som returnerades av VIES-systemet: "
The maximum number of concurrent requests has been reached
” (MS_MAX_CONCURRENT_REQ
). Vi rekommenderar att du använder den när du skickar förfrågningar om Tyskland (DE) och Frankrike (FR), som returnerade det ovan nämnda felet. - Tills processen att kontrollera alla EU-momsnummer som skickats i begäran är klar, kommer alla efterföljande försök att avvisas och felet kommer att rättas till "
The maximum number of batch request has been reached, please re-submit your request later
“.
getVIESDataAsyncResult
– funktionen låter dig hämta batchresultat baserat på token som returneras av getVIESDataAsync
fungera.
Följande exempel illustrerar hur funktioner används i bibliotek:
- C#
- C/C++
- Java
- JavaScript
- PHP
- Pytonorm
- Visual Basic
// Check batch result and download data (at production it usually takes 2-3 min for result to be ready)
BatchResult result;
while ((result = viesapi.GetVIESDataAsyncResult(token)) == null) {
if (viesapi.LastErrorCode != Error.BATCH_PROCESSING) {
Console.WriteLine("Error: " + viesapi.LastError + " (code: " + viesapi.LastErrorCode + ")");
return;
}
Console.WriteLine("Batch is still processing, waiting...");
Thread.Sleep(30000);
}
// Batch result is ready
Console.WriteLine(result);
// Check batch result and download data (at production it usually takes 2-3 min for result to be ready)
while ((result = viesapi_get_vies_data_async_result(viesapi, token)) == NULL) {
if (viesapi_get_last_err_code(viesapi) != VIESAPI_ERR_BATCH_PROCESSING) {
printf("Error: %s (code: %d)\n", viesapi_get_last_err(viesapi), viesapi_get_last_err_code(viesapi));
return;
}
printf("Batch is still processing, waiting...\n");
Sleep(30000);
}
// Batch result is ready
for (i = 0; i < result->NumbersCount; i++) {
printf("Country: %s\n", result->Numbers[i]->CountryCode);
printf("VAT ID: %s\n", result->Numbers[i]->VATNumber);
printf("Is valid: %d\n", result->Numbers[i]->Valid);
printf("\n");
}
for (i = 0; i < result->ErrorsCount; i++) {
printf("Country: %s\n", result->Errors[i]->CountryCode);
printf("VAT ID: %s\n", result->Errors[i]->VATNumber);
printf("Error: %s\n", result->Errors[i]->Error);
printf("\n");
}
// Check batch result and download data (at production it usually takes 2-3 min for result to be ready)
BatchResult result;
while ((result = viesapi.getVIESDataAsyncResult(token)) == null) {
if (viesapi.getLastErrorCode() != eu.viesapi.client.Error.BATCH_PROCESSING) {
System.out.println("Error: " + viesapi.getLastError() + " (code: " + viesapi.getLastErrorCode() + ")");
return;
}
System.out.println("Batch is still processing, waiting...");
Thread.sleep(30000);
}
// Batch result is ready
System.out.println(result);
// Check batch result and download data (at production it usually takes 2-3 min for result to be ready)
const looper = setInterval(() => {
viesapi.getVIESDataAsyncResult(token).then((result) => {
// Batch result is ready
console.log(result);
clearInterval(looper);
}).catch((e) => {
console.log(e.message);
});
}, 30000);
// Check batch result and download data (at production it usually takes 2-3 min for result to be ready)
while (($result = $viesapi->get_vies_data_async_result($token)) === false) {
if ($viesapi->get_last_error_code() !== \VIESAPI\Error::BATCH_PROCESSING) {
echo '<p>Error: ' . $viesapi->get_last_error() . ' (code: ' . $viesapi->get_last_error_code() . ')</p>';
die();
}
echo '<p>Batch is still processing, waiting...</p>';
sleep(30);
}
// Batch result is ready
echo '<pre>' . print_r($result, true) . '</pre>';
# Upload batch of VAT numbers and get their current VAT statuses and traders data
numbers = [
'PL1234567890',
'DK64839576',
'CZ7710043187'
]
token = viesapi.get_vies_data_async(numbers)
if token:
print('Batch token: ' + token)
else:
print('Error: ' + viesapi.get_last_error() + ' (code: ' + str(viesapi.get_last_error_code()) + ')')
' Not supported yet
För varje EU-momsnummer som skickas i batchanropet, attribut som överensstämmer med svaret på getVIESData
funktion returneras.
Hämtar information om användarens kontostatus
Funktionen låter dig ladda ner all grundläggande information om användarkontot, som visas efter att du loggat in på kontot på viesapi.eu-portalen. Funktionen returnerar också information om det maximala antalet förfrågningar som är tillgängliga under den valda planen (t.ex. 5 000 för affärsplanen) och det totala antalet förfrågningar gjorda under den aktuella månaden på användarens konto.
Uppmärksamhet! Att anropa funktionen gör det inte öka antalet gjorda frågor.
Följande exempel illustrerar hur du använder biblioteksfunktionerna.
- C#
- C/C++
- Java
- JavaScript
- PHP
- Pytonorm
- Visual Basic
// Get current account status
AccountStatus account = viesapi.GetAccountStatus();
if (account != null) {
Console.WriteLine(account);
}
else {
Console.WriteLine("Error: " + viesapi.LastError);
}
// Get current account status
AccountStatus* account = viesapi_get_account_status(viesapi);
if (account != NULL) {
printf("Plan name: %s\n", account->BillingPlanName);
printf("Price: %.2f\n", account->SubscriptionPrice);
printf("Number of queries: %d\n", account->TotalCount);
}
else {
printf("Error: %s\n", viesapi_get_last_err(viesapi));
}
// Get current account status
AccountStatus account = viesapi.getAccountStatus();
if (account != null) {
System.out.println(account);
}
else {
System.err.println("Error: " + viesapi.getLastError());
}
// Get current account status
viesapi.getAccountStatus().then((account) => {
console.log(account.toString());
}).catch((e) => {
console.log(e.message);
});
// Get current account status
$account = $viesapi->get_account_status();
if ($account) {
echo '<p>' . print_r($account, true) . '</p>';
}
else {
echo '<p>Error: ' . $viesapi->get_last_error() . '</p>';
}
# Get current account status
account = viesapi.get_account_status()
if account:
pprint(vars(account))
else:
print u'Error: ' + viesapi.get_last_error()
'Get current account status
Dim account As AccountStatus
Set account = viesapi.GetAccountStatus()
If account Is Nothing Then
Console.WriteLine("Error: {0}", viesapi.LastError)
Else
Console.WriteLine(account.ToString())
End If
Registrera ett .NET-bibliotek som ett COM-objekt
De viesapiLibrary.dll
bibliotek kan registreras i Windows-systemet som den sk COM
objekt. Då kan bibliotekets funktioner refereras från många olika programmeringsspråk och färdiga applikationer, inkl. Microsoft Excel, Access, SQL Server, Dynamics eller Visual FoxPro.
För att registrera ett bibliotek som ett COM-objekt, följ dessa steg:
- Ladda ner .NET-bibliotek arkivera och packa upp den på en lokal disk till valfri plats.
- Gå till katalogen med uppackade biblioteksfiler och hitta
com-register.bat
fil. - Välj
com-register.bat
fil med musen och väljRun as administrator
kommandot från snabbmenyn.
Använda .NET-biblioteket i MS Excel
Funktionerna i biblioteket viesapiLibrary.dll kan användas i MS Excel-applikationen för att skriva dina egna funktioner och procedurer i Visual Basic
språk. För att göra det möjligt är det nödvändigt att:
- Registrera de
viesapiLibrary.dll
bibliotek som enCOM
objekt påWindows
. - Starta Excel-applikationen. Välj
DEVELOPER
fliken på menyfliksområdet och klicka sedan påVisual Basic
knapp. - I den
Visual Basic for Application
fönster, väljTools
och dåReferences
från menyn. I denAvailable References
lista, hitta och väljVIESAPI Service Client for .NET Framework (C#)
. Bekräfta ditt val medOK
knapp. - Från
Insert
meny, väljModule
och klistra in funktionskoden som presenteras i exemplen för Visual Basic i det nya fönstret. - Slutligen, lämpliga värden på w för
viesapi.ID
ochviesapi.Key
bör ställas in. Metoden för att erhålla nyckeln och åtkomstnyckeln beskrivs i kapitlet Genererar identifierare och åtkomstnyckel