PHP 및 Composer를 사용하여 유럽 연합 집행위원회(EC) VIES(VAT 정보 교환 시스템)를 사용하여 EU의 VAT 등록 번호를 확인하고 검증하는 구성 요소입니다.
Vies
클래스는 VIES에 대한 SOAP 호출을 수행하는 기능을 제공하고 다음 정보가 포함된 CheckVatResponse
객체를 반환합니다.
국가 코드(문자열): 국가 코드의 2자리 표기
VAT 등록 번호(문자열): 국가 코드 없이 전체 등록 번호가 포함되어 있습니다.
요청 날짜(DateTime): 요청한 날짜
유효(boolean): 등록 번호가 유효했는지(TRUE) 또는 유효하지 않았는지(FALSE)를 나타내는 플래그
이름(문자열): 등록된 회사 이름(EC 회원국에서 제공한 경우)
주소(문자열): 등록된 회사 주소(EC 회원국에서 제공한 경우)
유럽연합 집행위원회 웹사이트에는 다음과 같이 명시되어 있습니다.
VAT를 부과하지 않고 공동체 내 공급을 하려면 상품을 공급하는 사람이 다른 회원국의 과세 대상자인지, 해당 상품이 다른 회원국으로 떠났거나 다른 회원국으로 떠날 것인지 확인해야 합니다. MS. VAT 번호도 송장에 기재되어 있어야 합니다.
자세한 내용은 http://ec.europa.eu/taxation_customs/vies/faqvies.do#item16을 참조하세요.
2018년 5월 25일 일반 데이터 보호 규정(GDPR)이 유럽 28개 회원국 모두에서 법으로 제정되었습니다. 이 VIES 서비스 패키지가 GDPR을 준수합니까?
한마디로 말하면: 그렇습니다.
더 긴 답변은 이 VIES 패키지가 유럽 위원회에서 제공하는 VAT ID 확인 서비스와만 상호 작용한다는 것입니다. 유럽 국가에서는 VAT 확인이 필수이므로 이 서비스는 합법성과 법적 근거로 허용됩니다. 이에 대한 자세한 내용은 유럽 DPO-3816.1을 참조하세요. 이 서비스는 데이터 자체를 저장하지 않으며 법률에서 엄격히 요구하고 EC VIES 서비스에서 제공하는 것보다 더 많은 정보를 수집하지 않습니다.
자신의 프로젝트에서 이 서비스 패키지를 구현한 경우 VAT ID, 유효성 검사 타임스탬프, 유효성 검사 결과 및 선택적으로 EC VIES 서비스에서 제공한 특정 유효성 검사 ID만 저장하고 있는지 확인하세요. .
최소 PHP 버전: 7.3
권장 PHP 버전: 7.4
확장: 비누
확장자: pcntl
확장자: ctype
자세한 내용은 릴리스 노트를 읽어보세요.
이 프로젝트는 Packagist에서 진행됩니다!
최신 안정 버전을 설치하려면 composer require dragonbe/vies
사용하세요.
특정 버전(예: 2.2.0)을 설치하려면 위 명령에 버전을 추가하세요. 예를 들어 composer require dragonbe/vies:2.2.0
다음은 명령줄(또는 cron, 작업자 등)에서 즉시 실행할 수 있는 사용 예입니다. 이는 가장 일반적인 사용 사례일 가능성이 높습니다.
<?phpuse DragonBeViesVies;use DragonBeViesViesException;use DragonBeViesViesServiceException;require_once dirname(__DIR__) . '/vendor/autoload.php';$vies = 새로운 Vies();
if (false === $vies->getHeartBeat()->isAlive()) {echo '현재 서비스를 이용할 수 없습니다. 나중에 다시 시도해 주세요.' . PHP_EOL;종료(1); }
$vies = new Vies();$options = ['proxy_host' => '127.0.0.1','proxy_port' => '8888', ];$vies->setOptions($options);$heartBeat = new DragonBeViesHeartBeat('tcp://' . $options['proxy_host'], $options['proxy_port']);$vies->setHeartBeat($heartBeat );$isAlive = $vies->getHeartBeat()->isAlive();
이제 서비스가 활성화되었음을 알았으므로 VAT ID 확인을 시작할 수 있습니다.
$vatResult = $vies->validateVat('BE', // 거래자 국가 코드 '0203430576', // 거래자 VAT ID'BE', // 요청자 국가 코드 '0811231190' // 요청자 VAT ID);
$vatResult = $vies->validateVat('BE', // 거래자 국가 코드 '0203430576', // 거래자 VAT ID'BE', // 요청자 국가 코드 '0811231190' // 요청자 VAT ID'B-Rail', // 상인 이름'NV', // 상인 회사 유형'Frankrijkstraat 65', // 상인 거리 주소'1060', // 상인 우편번호 'Sint-Gillis' // 상인 도시 );
가장 중요한 기능은 VAT ID가 유효한지 확인하는 것입니다.
echo ($vatResult->isValid() ? '유효함' : '유효하지 않음') . PHP_EOL;// 결과: 유효함
echo '식별자: ' . $vatResult->getIdentifier() . PHP_EOL;// 결과: 식별자: WAPIAAAAWaXGj4Ra
참고: VIES 서비스는 날짜와 시간대를 반환하지만 시간은 반환하지 않습니다.
echo '날짜 및 시간: ' . $vatResult->getRequestDate()->format('r') . PHP_EOL;// 결과: 날짜 및 시간: 2019년 8월 31일 토요일 00:00:00 +0200
echo '회사명: ' . $vatResult->getName() . PHP_EOL;// 결과: 회사 이름: NV OR NATIONALE MAATSCHAPPIJ DER BELGISCHE SPOORWEGEN
echo '회사 주소: ' . $vatResult->getAddress() . PHP_EOL;// 결과: 회사 주소: FRANKRIJKSTRAAT 56 1060 SINT-GILLIS (BIJ-BRUSSEL)
echo '거래자 이름 일치: ' . $vatResult->getNameMatch() . PHP_EOL;// 결과: 거래자 이름이 일치합니다:
echo '거래자 회사 유형 일치: ' . $vatResult->getCompanyTypeMatch() . PHP_EOL;// 결과: 거래 회사 유형 일치:
echo '상인 거리 일치: ' . $vatResult->getStreetMatch() . PHP_EOL;// 결과: Trader street match:
echo '거래자 우편번호 일치: ' . $vatResult->getPostcodeMatch() . PHP_EOL;// 결과: 거래자 우편번호 일치:
echo '상인 도시 일치: ' . $vatResult->getCityMatch() . PHP_EOL;// 결과: Trader 도시 일치:
<?phpuse DragonBeViesVies;use DragonBeViesViesException;use DragonBeViesViesServiceException;require_once dirname(__DIR__) . '/vendor/autoload.php';$vies = new Vies();$company = [ 'country_code' => 'BE', 'vat_id' => '0203430576', 'trader_name' => 'B-Rail', 'trader_company_type' => 'NV', 'trader_street' => 'Frankrijkstraat 65', 'trader_postcode' => '1060', 'trader_city' => '신트길리스', ];try {$vatResult = $vies->validateVat($company['country_code'], // 거래자 국가 코드$company['vat_id'], // 거래자 VAT ID'BE', // 요청자 국가 코드(귀하의 국가 코드)'0811231190', // 요청자 VAT ID(귀하의 VAT ID)$company['trader_name'], // Trader name$company['trader_company_type'], // 상인 회사 유형$company['trader_street'], // 상인 거리 주소$company['trader_postcode'], // 상인 우편번호$company['trader_city'] // 상인 도시 ); } catch (ViesException $viesException) {echo 'VAT 유효성 검사를 처리할 수 없습니다: ' . $viesException->getMessage();종료(2); } catch (ViesServiceException $viesServiceException) {echo 'VAT 유효성 검사를 처리할 수 없습니다: ' . $viesServiceException->getMessage();종료(2); }echo ($vatResult->isValid() ? '유효함' : '유효하지 않음') . PHP_EOL;echo '식별자: ' . $vatResult->getIdentifier() . PHP_EOL;echo '날짜 및 시간: ' . $vatResult->getRequestDate()->format('d/m/Y H:i') . PHP_EOL;echo '회사명: ' . $vatResult->getName() . PHP_EOL;echo '회사 주소: ' . $vatResult->getAddress() . PHP_EOL;echo '거래자 이름 일치: ' . $vatResult->getNameMatch() . PHP_EOL;echo '거래자 회사 유형 일치: ' . $vatResult->getCompanyTypeMatch() . PHP_EOL;echo '상인 거리 일치: ' . $vatResult->getStreetMatch() . PHP_EOL;echo '거래자 우편번호 일치: ' . $vatResult->getPostcodeMatch() . PHP_EOL;echo '상인 도시 일치: ' . $vatResult->getCityMatch() . PHP_EOL;에코 PHP_EOL;
이를 실행하면 다음과 같은 결과를 얻게 됩니다.
Valid Identifier: WAPIAAAAWaYR0O8D Date and time: 21/10/2018 02:00 Company name: NV OR NATIONALE MAATSCHAPPIJ DER BELGISCHE SPOORWEGEN Company address: FRANKRIJKSTRAAT 56 1060 SINT-GILLIS (BIJ-BRUSSEL) Trader name match: Trader company type match: Trader street match: Trader postcode match: Trader city match:
이 VIES 패키지가 포함된 제품 또는 프로젝트 목록은 다음과 같습니다.
MyOnlineStore의 Symfony 번들
샌드위치/비-번들
이 패키지를 사용하는 제품이나 프로젝트가 있고 작업에 대한 저작자를 표시하려면 저에게 이메일을 보내거나 Twitter 또는 Facebook에서 저에게 핑을 보내주세요.
Docker 컨테이너를 갖고 싶다면 이제 해당 목적에 맞게 설계된 컨테이너를 사용할 수 있습니다.
docker run --rm -d -p 8000:18080 Dragonbe/vies-web
VAT 확인을 위한 웹 인터페이스를 사용하려면 브라우저에서 localhost:8000을 선택하세요.
Microsoft Dynamics GP - VIES를 사용한 Dynamics GP 실시간 EU 세금 등록 번호 유효성 검사
인기 있는 RIA 법률 EU 프로젝트
PHP 코드 예제 - HotExamples.com
그리스의 경우 국제 국가 ISO 코드는 GR 이지만 VAT IDN의 경우 접두사 EL 을 사용합니다. 이를 보고한 Johan Wilfer에게 감사드립니다.
2021년 1월 1일부터 영국은 더 이상 유럽 연합 회원국이 아니므로 유럽 위원회에서 제공하는 VIES 서비스는 더 이상 영국의 VAT ID를 확인하지 않습니다. 하지만 한 가지 예외가 있는데, 이는 이 라이브러리와 EC VIES 서비스를 사용하여 VAT ID를 확인할 수 있는 북아일랜드(XI)입니다.
DragonBeVies는 MIT 라이센스에 따라 출시됩니다. 자세한 내용은 번들로 제공되는 LICENSE 파일을 참조하세요.