VAT.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. Class VAT {
  3. private $soap;
  4. private static function respond($vatResult = null) {
  5. $results = [
  6. 'C' => [
  7. "registered" => true,
  8. "shortMessage" => "Czynny",
  9. ],
  10. 'N' => [
  11. "registered" => false,
  12. "shortMessage" => "Niezarejestrowany",
  13. ],
  14. 'Z' => [
  15. "registered" => true,
  16. "shortMessage" => "Zwolniony"
  17. ],
  18. 'I' => [
  19. "registered" => false,
  20. "shortMessage" => "Niepoprawny NIP"
  21. ],
  22. ];
  23. if (is_array($vatResult)) $vatResult = (object) $vatResult;
  24. if ((!is_object($vatResult)) || (!isset($results[$vatResult->Kod]))) {
  25. $result = [
  26. 'registered' => null,
  27. 'shortMessage' => 'Nieznany rezultat',
  28. 'message' => 'Nieznany rezultat',
  29. ];
  30. } else {
  31. $result = [
  32. 'registered' => $results[$vatResult->Kod]['registered'],
  33. 'shortMessage' => $results[$vatResult->Kod]['shortMessage'],
  34. 'message' => $vatResult->Komunikat,
  35. ];
  36. }
  37. return (object) $result;
  38. }
  39. private static function validateNIP(&$nip) {
  40. $prefix = substr($nip, 0, 2);
  41. if (!is_numeric($prefix)) $nip = substr($nip, 2);
  42. else $prefix = null;
  43. if ($prefix && $prefix != "PL") return false;
  44. if (strlen($nip) != 10 || (!is_numeric($nip))) return false;
  45. $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;
  46. return ($control == $nip[9]);
  47. }
  48. public function getVATStatus($nip) {
  49. if (!self::validateNIP($nip)) return self::respond(['Kod' => 'I', 'Komunikat' => 'Niepoprawny NIP']);
  50. try {
  51. $result = $this->soap->SprawdzNIP($nip);
  52. } catch (Exception $e) {
  53. return self::respond();
  54. }
  55. return self::respond($result);
  56. }
  57. function __construct() {
  58. $this->soap = new SoapClient("https://sprawdz-status-vat.mf.gov.pl/?wsdl");
  59. }
  60. function __destruct() {
  61. unset($this->soap);
  62. }
  63. }