处理欧盟增值税的PHP库

维护者

详细信息

github.com/ibericode/vat

源代码

问题

安装次数: 2,063,647

依赖项: 5

建议者: 2

安全: 0

星标: 424

关注者: 12

分支: 61

公开问题: 11

2.0.9 2023-11-02 09:24 UTC

This package is auto-updated.

Last update: 2024-08-23 06:25:52 UTC


README

Build Status Latest Stable Version PHP from Packagist Total Downloads License

这是一个简单的PHP库,可帮助您处理欧洲的增值税规则。

  • 使用 ibericode/vat-rates 获取任何欧盟成员国的增值税率。
  • 验证增值税号(格式和/或存在性
  • 验证ISO-3316 alpha-2国家代码
  • 确定一个国家是否是欧盟成员国
  • IP地址地理定位

安装

需要PHP 8.2或更高版本,以及CURL和JSON扩展。

对于增值税号存在性检查,还需要PHP SOAP扩展。

要获取最新稳定版本,请使用 Composer 安装包。

composer require ibericode/vat

用法

此库公开了4个主要类以供交互:RatesCountriesValidatorGeolocator

检索增值税率。

此包依赖于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.orgip2country.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许可证下授权的。