此元件使用歐盟委員會 (EC) 增值稅資訊交換系統 (VIES),使用 PHP 和 Composer 來驗證和確認歐盟的增值稅註冊號碼。
Vies
類別提供對 VIES 進行 SOAP 呼叫的功能,並傳回包含以下資訊的CheckVatResponse
物件:
國家/地區代碼(字串):國家/地區代碼的 2 個字元表示法
增值稅註冊號(字串):包含完整的註冊號,不含國家/地區代碼
請求日期(DateTime):提出請求的日期
有效(布林值):指示註冊號碼有效(TRUE)或無效(FALSE)的標誌
名稱(字串):註冊公司名稱(如果由 EC 成員國提供)
地址(字串):註冊公司地址(如果由 EC 成員國提供)
歐盟委員會網站上指出:
要在不收取增值稅的情況下進行共同體內供應,您應確保您向其提供貨物的人是另一個成員國的納稅人,並且相關貨物已經離開或將離開您的成員國到另一個成員國多發性硬化症。增值稅號碼也應包含在發票中。
更多資訊請上http://ec.europa.eu/taxation_customs/vies/faqvies.do#item16
2018 年 5 月 25 日,《一般資料保護規範》(GDPR)成為所有 28 個歐洲成員國的法律。此 VIES 服務包是否符合 GDPR?
簡而言之:是的。
更長的答案是,此 VIES 包僅與歐盟委員會提供的增值稅 ID 驗證服務交互。增值稅驗證在歐洲國家是強制性的,因此該服務被允許作為合法性和法律依據。請閱讀歐洲 DPO-3816.1 中的更多相關資訊。本服務本身不儲存任何數據,也不收集超出法律嚴格要求和 EC VIES 服務提供的資訊的資訊。
當您在自己的專案中實施此服務包時,請確保僅儲存增值稅 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、worker 或其他)中執行,因為這很可能是您最常見的用例。
<?phpuse DragonBeViesVies;use DragonBeViesViesException;use DragonBeViesViesServiceException;require_once dirname(__DIR__) 。 '/vendor/autoload.php';$vies = new 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();
現在我們知道服務處於活動狀態,我們可以開始驗證增值稅 ID
$vatResult = $vies->validateVat('BE', // 交易者國家代碼'0203430576', // 交易者增值稅ID 'BE', // 請求者國家代碼'0811231190' // 請求者增值稅ID );
$vatResult = $vies->validateVat('BE', // 交易者國家代碼'0203430576', // 交易者增值稅ID'BE', // 請求者國家代碼'0811231190' // 請求者增值稅ID 'B-Rail', // 交易者名稱'NV', // 交易者公司類型'Frankrijkstraat 65', // 交易者街道地址'1060', // 交易者郵遞區號'Sint-Gillis' // 交易者城市 );
最重要的功能是查看增值稅 ID 是否有效
echo ($vatResult->isValid() ? '有效' : '無效') 。 PHP_EOL;// 結果:有效
回顯'標識符:'。 $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;// 結果:交易者街賽:
echo '交易者郵遞區號匹配:' 。 $vatResult->getPostcodeMatch() 。 PHP_EOL;// 結果:交易者郵遞區號匹配:
echo '交易者城市匹配:' . $vatResult->getCityMatch() 。 PHP_EOL;// 結果:交易者城市匹配:
<?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'], // 交易者增值稅ID'BE', //請求者國家/地區代碼(您的國家代碼)'0811231190', // 請求者增值稅ID(您的增值稅ID)$company['trader_name'], // 交易者名稱$company['trader_company_type '], // 交易者公司類型$company['trader_street'], // 交易者街道地址$company['trader_postcode'], // 交易者郵遞區號$company['trader_city'] // 交易者城市 ); } catch (ViesException $viesException) {echo '無法處理增值稅驗證:' . $viesException->getMessage();退出(2); } catch (ViesServiceException $viesServiceException) {echo '無法處理增值稅驗證:' . $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 組合包
三明治/vies-bundle
如果您有一個產品或專案正在使用此軟體包,並且您希望對您的工作進行一些歸因,請給我發送電子郵件或在 Twitter 或 Facebook 上聯繫我。
如果您喜歡 Docker 容器,現在可以使用為此目的設計的容器。
docker run --rm -d -p 8000:18080 Dragonbe/vies-web
將瀏覽器指向 localhost:8000 以使用 Web 介面驗證增值稅。
Microsoft Dynamics GP - 使用 VIES 進行 Dynamics GP 即時歐盟稅務登記號碼驗證
熱門 RIA 法歐盟項目
PHP 程式碼範例 - HotExamples.com
對於希臘,國際國家 ISO 代碼是GR ,但對於增值稅 IDN,他們使用前綴EL 。感謝 Johan Wilfer 的報告。
自 2021 年 1 月 1 日起,英國不再是歐盟成員,因此歐盟委員會提供的 VIES 服務不再驗證英國的增值稅 ID。但有一個例外,即北愛爾蘭 (XI) 的增值稅 ID 可以使用此程式庫和 EC VIES 服務進行驗證。
DragonBeVies 是根據 MIT 許可證發布的。有關詳細信息,請參閱捆綁的許可證文件。