ibericode / vat
处理欧盟增值税的PHP库
2.0.9
2023-11-02 09:24 UTC
Requires
- php: >=7.3
- ext-curl: *
- ext-json: *
Requires (Dev)
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.5
Suggests
- ext-soap: Needed to support VIES VAT number validation
- ibericode/vat-bundle: Symfony bundle for integrating this package
README
这是一个简单的PHP库,可帮助您处理欧洲的增值税规则。
- 使用 ibericode/vat-rates 获取任何欧盟成员国的增值税率。
- 验证增值税号(格式和/或存在性)
- 验证ISO-3316 alpha-2国家代码
- 确定一个国家是否是欧盟成员国
- IP地址地理定位
安装
需要PHP 8.2或更高版本,以及CURL和JSON扩展。
对于增值税号存在性检查,还需要PHP SOAP扩展。
要获取最新稳定版本,请使用 Composer 安装包。
composer require ibericode/vat
用法
此库公开了4个主要类以供交互:Rates
、Countries
、Validator
和 Geolocator
。
检索增值税率。
此包依赖于vat rates的社区维护仓库。我们邀请您切换该仓库的通知,并在增值税率发布后为贵国的增值税率做出贡献。
$rates = new Ibericode\Vat\Rates('/path-for-storing-cache-file.txt'); $rates->getRateForCountry('NL'); // 21 $rates->getRateForCountry('NL', 'standard'); // 21 $rates->getRateForCountry('NL', 'reduced'); // 9 $rates->getRateForCountryOnDate('NL', new \Datetime('2010-01-01'), 'standard'); // 19
此操作从ibericode/vat-rates获取税率并将其存储在本地副本中,该副本定期刷新(默认每12小时刷新一次)。
验证
验证增值税号
$validator = new Ibericode\Vat\Validator(); $validator->validateVatNumberFormat('NL203458239B01'); // true (checks format) $validator->validateVatNumber('NL203458239B01'); // false (checks format + existence)
验证IP地址
$validator = new Ibericode\Vat\Validator(); $validator->validateIpAddress('256.256.256.256'); // false $validator->validateIpAddress('8.8.8.8'); // true
验证ISO-3166-1-alpha2国家代码
$validator = new Ibericode\Vat\Validator(); $validator->validateCountryCode('DE'); // true $validator->validateCountryCode('ZZ'); // false
处理ISO-3166-1-alpha2国家代码
$countries = new Ibericode\Vat\Countries(); // access country name using array access echo $countries['NL']; // Netherlands // loop over countries foreach ($countries as $code => $name) { // ... } // check if country is in EU $countries->isCountryCodeInEU('NL'); // true $countries->isCountryCodeInEU('US'); // false
地理定位
此库包括一个简单的地理定位服务,使用ip2c.org或ip2country.info(自2022年12月起已弃用)。
$geolocator = new Ibericode\Vat\Geolocator(); $geolocator->locateIpAddress('8.8.8.8'); // US
要明确使用ip2c.org。
$geolocator = new Ibericode\Vat\Geolocator('ip2c.org'); $geolocator->locateIpAddress('8.8.8.8'); // US
Symfony支持
如果您需要在Symfony环境中使用此包,请查看ibericode/vat-bundle。
许可证
ibericode/vat是在MIT许可证下授权的。