| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <?php
- Class VAT {
- private $soap;
- private static function respond($vatResult = null) {
- $results = [
- 'C' => [
- "registered" => true,
- "shortMessage" => "Czynny",
- ],
- 'N' => [
- "registered" => false,
- "shortMessage" => "Niezarejestrowany",
- ],
- 'Z' => [
- "registered" => true,
- "shortMessage" => "Zwolniony"
- ],
- 'I' => [
- "registered" => false,
- "shortMessage" => "Niepoprawny NIP"
- ],
- ];
- if (is_array($vatResult)) $vatResult = (object) $vatResult;
- if ((!is_object($vatResult)) || (!isset($results[$vatResult->Kod]))) {
- $result = [
- 'registered' => null,
- 'shortMessage' => 'Nieznany rezultat',
- 'message' => 'Nieznany rezultat',
- ];
- } else {
- $result = [
- 'registered' => $results[$vatResult->Kod]['registered'],
- 'shortMessage' => $results[$vatResult->Kod]['shortMessage'],
- 'message' => $vatResult->Komunikat,
- ];
- }
- return (object) $result;
- }
- private static function validateNIP(&$nip) {
- $prefix = substr($nip, 0, 2);
- if (!is_numeric($prefix)) $nip = substr($nip, 2);
- else $prefix = null;
- if ($prefix && $prefix != "PL") return false;
- if (strlen($nip) != 10 || (!is_numeric($nip))) return false;
- $control = (($nip[0] * 6 + $nip[1] * 5 + $nip[2] * 7 + $nip[3] * 2 + $nip[4] * 3 + $nip[5] * 4 + $nip[6] * 5 + $nip[7] * 6 + $nip[8] * 7) % 11 ) % 10;
- return ($control == $nip[9]);
- }
- public function getVATStatus($nip) {
- if (!self::validateNIP($nip)) return self::respond(['Kod' => 'I', 'Komunikat' => 'Niepoprawny NIP']);
- try {
- $result = $this->soap->SprawdzNIP($nip);
- } catch (Exception $e) {
- return self::respond();
- }
- return self::respond($result);
- }
- function __construct() {
- $this->soap = new SoapClient("https://sprawdz-status-vat.mf.gov.pl/?wsdl");
- }
- function __destruct() {
- unset($this->soap);
- }
- }
|