Komponen menggunakan Sistem Pertukaran Informasi PPN (VIES) Komisi Eropa (EC) untuk memverifikasi dan memvalidasi nomor registrasi PPN di UE, menggunakan PHP dan Composer.
Kelas Vies
menyediakan fungsionalitas untuk membuat panggilan SOAP ke VIES dan mengembalikan objek CheckVatResponse
yang berisi informasi berikut:
Kode negara (string): notasi 2 karakter dari kode negara
Nomor registrasi PPN (string): berisi nomor registrasi lengkap tanpa kode negara
Tanggal permintaan (DateTime): tanggal permintaan dibuat
Valid (boolean): tanda yang menunjukkan nomor registrasi valid (TRUE) atau tidak (FALSE)
Nama (string): nama perusahaan terdaftar (jika disediakan oleh negara anggota EC)
Alamat (string): alamat perusahaan terdaftar (jika disediakan oleh negara anggota EC)
Dinyatakan di situs web Komisi Eropa:
Untuk melakukan pasokan intra-Komunitas tanpa memungut PPN, Anda harus memastikan bahwa orang yang Anda kirimi barang tersebut adalah wajib pajak di Negara Anggota lain, dan bahwa barang tersebut telah meninggalkan, atau akan meninggalkan Negara Anggota Anda ke Negara Anggota lain. MS. Nomor PPN juga harus ada dalam faktur.
Informasi lebih lanjut di http://ec.europa.eu/taxation_customs/vies/faqvies.do#item16
Pada tanggal 25 Mei 2018, Peraturan Perlindungan Data Umum atau GDPR menjadi undang-undang di 28 Negara Anggota Eropa. Apakah paket layanan VIES ini akan mematuhi GDPR?
Singkatnya: ya.
Jawaban yang lebih panjang adalah paket VIES ini hanya berinteraksi dengan layanan verifikasi ID PPN yang disediakan oleh Komisi Eropa. Validasi PPN bersifat wajib di negara-negara Eropa dan oleh karena itu layanan ini diperbolehkan sebagai sah dan dasar hukum. Silakan baca lebih lanjut tentang ini di DPO-3816.1 Eropa. Layanan ini tidak menyimpan data apa pun atau mengumpulkan lebih banyak informasi daripada yang diwajibkan oleh hukum dan disediakan oleh layanan EC VIES.
Ketika Anda telah menerapkan paket layanan ini di proyek Anda sendiri, pastikan Anda hanya menyimpan ID PPN, stempel waktu validasi, hasil validasi, dan opsional ID validasi yang diberikan yang disediakan oleh layanan EC VIES .
Versi PHP minimum: 7.3
Versi PHP yang direkomendasikan: 7.4
Ekstensi: sabun
Ekstensi: pcntl
Ekstensi: ctype
Silakan baca catatan rilis untuk detailnya.
Proyek ini ada di Packagist!
Untuk menginstal versi stabil terbaru gunakan composer require dragonbe/vies
.
Untuk menginstal versi tertentu (misalnya 2.2.0), tambahkan saja pada perintah di atas, misalnya composer require dragonbe/vies:2.2.0
Berikut adalah contoh penggunaan yang dapat langsung Anda jalankan di baris perintah (atau di cron, pekerja, atau apa pun) karena kemungkinan besar ini adalah kasus penggunaan Anda yang paling umum.
<?phpuse DragonBeViesViesVies;gunakan DragonBeViesViesException;gunakan DragonBeViesViesServiceException;require_once dirname(__DIR__) . '/vendor/autoload.php';$vies = Vies baru();
if (false === $vies->getHeartBeat()->isAlive()) {echo 'Layanan tidak tersedia saat ini, silakan coba lagi nanti.' . PHP_EOL;keluar(1); }
$vies = Vies baru();$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();
Sekarang setelah kami mengetahui bahwa layanan tersebut aktif, kami dapat mulai memvalidasi ID PPN
$vatResult = $vies->validateVat('BE', // Kode negara pedagang '0203430576', // Nomor PPN Pedagang'BE', // Kode negara peminta '0811231190' // Nomor PPN Pemohon);
$vatResult = $vies->validateVat('BE', // Kode negara pedagang '0203430576', // Nomor PPN Pedagang'BE', // Kode negara peminta '0811231190' // Nomor PPN Pemohon'B-Rail', // Nama pedagang 'NV', // Tipe perusahaan pedagang 'Frankrijkstraat 65', // Alamat jalan pedagang '1060', // Pedagang kode pos'Sint-Gillis' // Kota pedagang );
Fungsi yang paling penting adalah untuk melihat apakah ID PPN valid
echo ($vatResult->isValid() ? 'Valid' : 'Tidak valid') . PHP_EOL;// Hasil: Valid
gema 'Pengidentifikasi: ' . $vatResult->getIdentifier() . PHP_EOL;// Hasil: Pengidentifikasi: WAPIAAAAWaXGj4Ra
Catatan: Layanan VIES mengembalikan tanggal dan zona waktu, tetapi tidak ada waktu
echo 'Tanggal dan waktu: ' . $vatResult->getRequestDate()->format('r') . PHP_EOL;// Hasil: Tanggal dan waktu: Sabtu, 31 Agustus 2019 00:00:00 +0200
gema 'Nama perusahaan: ' . $vatResult->getName() . PHP_EOL;// Hasil: Nama perusahaan: NV ATAU NATIONALE MAATSCHAPPIJ DER BELGISCHE SPOORWEGEN
echo 'Alamat perusahaan: ' . $vatResult->getAddress() . PHP_EOL;// Hasil: Alamat perusahaan: FRANKRIJKSTRAAT 56 1060 SINT-GILLIS (BIJ-BRUSSEL)
echo 'Nama trader cocok: ' . $vatResult->getNameMatch() . PHP_EOL;// Hasil: Nama trader cocok:
echo 'Jenis perusahaan pedagang cocok: ' . $vatResult->getCompanyTypeMatch() . PHP_EOL;// Hasil: Jenis perusahaan pedagang cocok:
echo 'Pertandingan pedagang jalanan: ' . $vatResult->getStreetMatch() . PHP_EOL;// Hasil: Pertandingan jalanan pedagang:
echo 'Kode pos pedagang cocok: ' . $vatResult->getPostcodeMatch() . PHP_EOL;// Hasil: Kode pos trader cocok:
echo 'Pertandingan kota pedagang: ' . $vatResult->getCityMatch() . PHP_EOL;// Hasil: Pertandingan kota pedagang:
<?phpuse DragonBeViesViesVies;gunakan DragonBeViesViesException;gunakan 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', ];coba {$vatResult = $vies->validateVat($company['country_code'], // Kode negara pedagang$perusahaan['vat_id'], // ID PPN Pedagang'BE', // Kode negara peminta (Anda kode negara)'0811231190', // ID PPN Pemohon (ID PPN Anda)$perusahaan['nama_trader'], // Trader nama$perusahaan['trader_company_type'], // Tipe perusahaan pedagang$perusahaan['jalan_trader'], // Alamat jalan pedagang$perusahaan['kode pos_trader'], // Kode pos pedagang$perusahaan['kota_trader'] // Kota pedagang ); } catch (ViesException $viesException) {echo 'Tidak dapat memproses validasi PPN: ' . $viesException->getMessage();keluar (2); } catch (ViesServiceException $viesServiceException) {echo 'Tidak dapat memproses validasi PPN: ' . $viesServiceException->getMessage();keluar (2); }echo ($vatResult->isValid() ? 'Valid' : 'Tidak valid') . PHP_EOL;gema 'Pengenal: ' . $vatResult->getIdentifier() . PHP_EOL;echo 'Tanggal dan waktu: ' . $vatResult->getRequestDate()->format('d/m/Y H:i') . PHP_EOL;echo 'Nama perusahaan: ' . $vatResult->getName() . PHP_EOL;echo 'Alamat perusahaan:' . $vatResult->getAddress() . PHP_EOL;echo 'Nama pedagang cocok:' . $vatResult->getNameMatch() . PHP_EOL;echo 'Jenis perusahaan pedagang cocok: ' . $vatResult->getCompanyTypeMatch() . PHP_EOL;echo 'Kecocokan jalan pedagang:' . $vatResult->getStreetMatch() . PHP_EOL;echo 'Kode pos pedagang cocok: ' . $vatResult->getPostcodeMatch() . PHP_EOL;echo 'Kota pedagang cocok:' . $vatResult->getCityMatch() . PHP_EOL;gema PHP_EOL;
Ketika Anda menjalankan ini, Anda akan mendapatkan hasil sebagai berikut:
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:
Berikut daftar produk atau proyek yang sudah menyertakan paket VIES ini
Bundel Symfony oleh MyOnlineStore
sandwich/vies-bundel
Jika Anda memiliki produk atau proyek yang menggunakan paket ini dan Anda menginginkan atribusi untuk karya Anda, kirimkan saya email atau hubungi saya di Twitter atau Facebook.
Jika Anda ingin memiliki container Docker, kini Anda dapat menggunakan container yang dirancang untuk tujuan tersebut.
menjalankan buruh pelabuhan --rm -d -p 8000:18080 dragonbe/vies-web
Arahkan browser Anda ke localhost:8000 untuk menggunakan antarmuka web untuk memvalidasi PPN.
Microsoft Dynamics GP - Validasi nomor pendaftaran pajak UE waktu nyata Dynamics GP menggunakan VIES
Proyek hukum UE RIA yang populer
Contoh Kode PHP - HotExamples.com
Untuk Yunani kode ISO negara internasionalnya adalah GR , tetapi untuk IDN PPN menggunakan awalan EL . Terima kasih kepada Johan Wilfer karena telah melaporkan hal ini.
Sejak 1 Januari 2021 Inggris tidak lagi menjadi anggota Uni Eropa dan akibatnya, layanan VIES yang disediakan oleh Komisi Eropa tidak lagi memvalidasi ID PPN untuk Inggris. Namun ada satu pengecualian, yaitu untuk Irlandia Utara (XI) yang ID PPNnya dapat divalidasi menggunakan perpustakaan ini dan layanan EC VIES.
DragonBeVies dirilis di bawah Lisensi MIT. Lihat file LISENSI yang dibundel untuk detailnya.