PHP と Composer を使用して、欧州委員会 (EC) VAT 情報交換システム (VIES) を使用して EU 内の VAT 登録番号を検証および検証するコンポーネント。
Vies
クラスは、VIES への SOAP 呼び出しを行う機能を提供し、次の情報を含むオブジェクトCheckVatResponse
を返します。
国コード (文字列): 国コードの 2 文字の表記
VAT 登録番号 (文字列): 国コードを除いた完全な登録番号が含まれます。
リクエストの日付 (DateTime): リクエストが行われた日付
Valid (ブール値): 登録番号が有効か (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 = 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();
サービスが有効であることがわかったので、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', // トレーダーストリートaddress'1060', // 貿易業者の郵便番号 'Sint-Gillis' // 貿易業者の都市 );
最も重要な機能は、VAT ID が有効かどうかを確認することです。
echo ($vatResult->isValid() ? '有効' : '無効') 。 PHP_EOL;// 結果: 有効
echo '識別子: ' 。 $vatResult->getIdentifier() 。 PHP_EOL;// 結果: 識別子: WAPIAAAAWaXGj4Ra
注: VIES サービスは日付とタイムゾーンを返しますが、時刻は返しません
echo '日付と時刻: ' 。 $vatResult->getRequestDate()->format('r') 。 PHP_EOL;// 結果: 日時: Sat, 31 Aug 2019 00:00:00 +0200
echo '会社名: ' 。 $vatResult->getName() 。 PHP_EOL;// 結果: 会社名: NV OR NATIONALE MAATSCHAPIJ 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' => 'Sint-Gillis'、 ];try {$vatResult = $vies->validateVat($company['country_code'], // トレーダーの国コード$company['vat_id'], // トレーダーの VAT ID'BE', // リクエスターの国コード (あなたの国コード)'0811231190', // 申請者の VAT ID (あなたの VAT ID)$company['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 で私に ping を送ってください。
Docker コンテナーを使用したい場合は、その目的のために設計されたコンテナーを使用できるようになりました。
docker run --rm -d -p 8000:18080 Dragonbe/vies-web
VAT を検証するために Web インターフェイスを使用するには、ブラウザーで 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 を検証しなくなりました。ただし、例外が 1 つあり、それは北アイルランド (XI) の場合であり、このライブラリと EC VIES サービスを使用して VAT ID を検証できます。
DragonBeVies は MIT ライセンスに基づいてリリースされています。詳細については、同梱の LICENSE ファイルを参照してください。