dannyvankooten/vat.php

此软件包已被废弃,不再维护。作者建议使用ibericode/vat软件包。

处理欧盟增值税的PHP库

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许可证的许可。