PHP と Composer を使用して、欧州委員会 (EC) VAT 情報交換システム (VIES) を使用して EU 内の VAT 登録番号を検証および検証するコンポーネント。
Vies
クラスは、VIES への SOAP 呼び出しを行う機能を提供し、次の情報を含むオブジェクトCheckVatResponse
を返します。
欧州委員会のウェブサイトには次のように記載されています。
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 のみを保存していることを確認してください。 。
詳細についてはリリースノートをお読みください。
このプロジェクトは Packagist にあります!
最新の安定バージョンをインストールするには、 composer require dragonbe/vies
使用します。
特定のバージョン (例: 2.2.0) をインストールするには、それを上のコマンドに追加します。たとえば、 composer require dragonbe/vies:2.2.0
これはおそらく最も一般的な使用例であるため、コマンド ライン (または cron、ワーカーなど) ですぐに実行できる使用例を次に示します。
use DragonBe Vies Vies ;
use DragonBe Vies ViesException ;
use DragonBe Vies ViesServiceException ;
require_once dirname ( __DIR__ ) . ' /vendor/autoload.php ' ;
$ vies = new Vies ();
if ( false === $ vies -> getHeartBeat ()-> isAlive ()) {
echo ' Service is not available at the moment, please try again later. ' . PHP_EOL ;
exit ( 1 );
}
$ vies = new Vies ();
$ options = [
' proxy_host ' => ' 127.0.0.1 ' ,
' proxy_port ' => ' 8888 ' ,
];
$ vies -> setOptions ( $ options );
$ heartBeat = new DragonBe Vies HeartBeat ( ' tcp:// ' . $ options [ ' proxy_host ' ], $ options [ ' proxy_port ' ]);
$ vies -> setHeartBeat ( $ heartBeat );
$ isAlive = $ vies -> getHeartBeat ()-> isAlive ();
サービスが有効であることがわかったので、VAT ID の検証を開始できます。
$ vatResult = $ vies -> validateVat (
' BE ' , // Trader country code
' 0203430576 ' , // Trader VAT ID
' BE ' , // Requester country code
' 0811231190 ' // Requester VAT ID
);
$ vatResult = $ vies -> validateVat (
' BE ' , // Trader country code
' 0203430576 ' , // Trader VAT ID
' BE ' , // Requester country code
' 0811231190 ' // Requester VAT ID
' B-Rail ' , // Trader name
' NV ' , // Trader company type
' Frankrijkstraat 65 ' , // Trader street address
' 1060 ' , // Trader postcode
' Sint-Gillis ' // Trader city
);
最も重要な機能は、VAT ID が有効かどうかを確認することです。
echo ( $ vatResult -> isValid () ? ' Valid ' : ' Not valid ' ) . PHP_EOL ;
// Result: Valid
echo ' Identifier: ' . $ vatResult -> getIdentifier () . PHP_EOL ;
// Result: Identifier: WAPIAAAAWaXGj4Ra
注: VIES サービスは日付とタイムゾーンを返しますが、時刻は返しません
echo ' Date and time: ' . $ vatResult -> getRequestDate ()-> format ( ' r ' ) . PHP_EOL ;
// Result: Date and time: Sat, 31 Aug 2019 00:00:00 +0200
echo ' Company name: ' . $ vatResult -> getName () . PHP_EOL ;
// Result: Company name: NV OR NATIONALE MAATSCHAPPIJ DER BELGISCHE SPOORWEGEN
echo ' Company address: ' . $ vatResult -> getAddress () . PHP_EOL ;
// Result: Company address: FRANKRIJKSTRAAT 56
1060 SINT - GILLIS ( BIJ - BRUSSEL )
echo ' Trader name match: ' . $ vatResult -> getNameMatch () . PHP_EOL ;
// Result: Trader name match:
echo ' Trader company type match: ' . $ vatResult -> getCompanyTypeMatch () . PHP_EOL ;
// Result: Trader company type match:
echo ' Trader street match: ' . $ vatResult -> getStreetMatch () . PHP_EOL ;
// Result: Trader street match:
echo ' Trader postcode match: ' . $ vatResult -> getPostcodeMatch () . PHP_EOL ;
// Result: Trader postcode match:
echo ' Trader city match: ' . $ vatResult -> getCityMatch () . PHP_EOL ;
// Result: Trader city match:
use DragonBe Vies Vies ;
use DragonBe Vies ViesException ;
use DragonBe Vies ViesServiceException ;
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 ' ], // Trader country code
$ company [ ' vat_id ' ], // Trader VAT ID
' BE ' , // Requester country code (your country code)
' 0811231190 ' , // Requester VAT ID (your VAT ID)
$ company [ ' trader_name ' ], // Trader name
$ company [ ' trader_company_type ' ], // Trader company type
$ company [ ' trader_street ' ], // Trader street address
$ company [ ' trader_postcode ' ], // Trader postcode
$ company [ ' trader_city ' ] // Trader city
);
} catch ( ViesException $ viesException ) {
echo ' Cannot process VAT validation: ' . $ viesException -> getMessage ();
exit ( 2 );
} catch ( ViesServiceException $ viesServiceException ) {
echo ' Cannot process VAT validation: ' . $ viesServiceException -> getMessage ();
exit ( 2 );
}
echo ( $ vatResult -> isValid () ? ' Valid ' : ' Not valid ' ) . PHP_EOL ;
echo ' Identifier: ' . $ vatResult -> getIdentifier () . PHP_EOL ;
echo ' Date and time: ' . $ vatResult -> getRequestDate ()-> format ( ' d/m/Y H:i ' ) . PHP_EOL ;
echo ' Company name: ' . $ vatResult -> getName () . PHP_EOL ;
echo ' Company address: ' . $ vatResult -> getAddress () . PHP_EOL ;
echo ' Trader name match: ' . $ vatResult -> getNameMatch () . PHP_EOL ;
echo ' Trader company type match: ' . $ vatResult -> getCompanyTypeMatch () . PHP_EOL ;
echo ' Trader street match: ' . $ vatResult -> getStreetMatch () . PHP_EOL ;
echo ' Trader postcode match: ' . $ vatResult -> getPostcodeMatch () . PHP_EOL ;
echo ' Trader city match: ' . $ vatResult -> getCityMatch () . PHP_EOL ;
echo 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 パッケージが含まれている製品またはプロジェクトのリストは次のとおりです。
このパッケージを使用している製品またはプロジェクトがあり、その作品の帰属が必要な場合は、私に電子メールを送信するか、Twitter または Facebook で私に ping を送ってください。
Docker コンテナーを使用したい場合は、その目的のために設計されたコンテナーを使用できるようになりました。
docker run --rm -d -p 8000:18080 dragonbe/vies-web
VAT を検証するために Web インターフェイスを使用するには、ブラウザーで localhost:8000 を指定します。
ギリシャの場合、国際国 ISO コードはGRですが、VAT IDN では接頭辞EL が使用されます。これを報告してくれた Johan Wilfer に感謝します。
2021 年 1 月 1 日以降、英国は欧州連合の加盟国ではなくなり、その結果、欧州委員会が提供する VIES サービスは英国の VAT ID を検証しなくなりました。ただし、例外が 1 つあり、それは北アイルランド (XI) の場合であり、このライブラリと EC VIES サービスを使用して VAT ID を検証できます。
DragonBeVies は MIT ライセンスに基づいてリリースされています。詳細については、同梱の LICENSE ファイルを参照してください。