Skip to content

Commit c45abc2

Browse files
committed
Added function to support the whitelist file.
1 parent 564710b commit c45abc2

File tree

5 files changed

+469
-5
lines changed

5 files changed

+469
-5
lines changed

pom.xml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>pl.nip24</groupId>
77
<artifactId>nip24-client</artifactId>
8-
<version>1.3.3</version>
8+
<version>1.3.4</version>
99

1010
<name>nip24-client-java</name>
1111
<description>NIP24 Service Client for Java</description>
@@ -42,7 +42,7 @@
4242
<plugin>
4343
<groupId>org.apache.maven.plugins</groupId>
4444
<artifactId>maven-compiler-plugin</artifactId>
45-
<version>3.8.0</version>
45+
<version>3.8.1</version>
4646
<configuration>
4747
<source>${java.version}</source>
4848
<target>${java.version}</target>
@@ -51,7 +51,7 @@
5151
<plugin>
5252
<groupId>org.apache.maven.plugins</groupId>
5353
<artifactId>maven-source-plugin</artifactId>
54-
<version>3.0.1</version>
54+
<version>3.2.0</version>
5555
<executions>
5656
<execution>
5757
<id>attach-sources</id>
@@ -64,7 +64,7 @@
6464
<plugin>
6565
<groupId>org.apache.maven.plugins</groupId>
6666
<artifactId>maven-javadoc-plugin</artifactId>
67-
<version>3.0.1</version>
67+
<version>3.1.1</version>
6868
<executions>
6969
<execution>
7070
<id>attach-javadocs</id>
@@ -78,5 +78,11 @@
7878
</build>
7979

8080
<dependencies>
81+
<!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
82+
<dependency>
83+
<groupId>javax.xml.bind</groupId>
84+
<artifactId>jaxb-api</artifactId>
85+
<version>2.3.1</version>
86+
</dependency>
8187
</dependencies>
8288
</project>

src/main/java/pl/nip24/client/AccountStatus.java

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public class AccountStatus {
3636
protected float itemPriceInvoice;
3737
protected float itemPriceAll;
3838
protected float itemPriceIBAN;
39+
protected float itemPriceWhitelist;
3940

4041
protected int limit;
4142
protected int requestDelay;
@@ -58,13 +59,15 @@ public class AccountStatus {
5859
protected boolean funcGetVIESData;
5960
protected boolean funcGetVATStatus;
6061
protected boolean funcGetIBANStatus;
62+
protected boolean funcGetWhitelistStatus;
6163

6264
protected int invoiceDataCount;
6365
protected int allDataCount;
6466
protected int firmStatusCount;
6567
protected int vatStatusCount;
6668
protected int viesStatusCount;
6769
protected int ibanStatusCount;
70+
protected int whitelistStatusCount;
6871
protected int totalCount;
6972

7073
/**
@@ -218,6 +221,24 @@ public void setItemPriceIBAN(float itemPriceIBAN)
218221
this.itemPriceIBAN = itemPriceIBAN;
219222
}
220223

224+
/**
225+
* Koszt netto pojedynczego zapytania - status podmiotu na białej liście podatników VAT
226+
* @return cena netto
227+
*/
228+
public float getItemPriceWhitelist()
229+
{
230+
return itemPriceWhitelist;
231+
}
232+
233+
/**
234+
* Koszt netto pojedynczego zapytania - status podmiotu na białej liście podatników VAT
235+
* @param itemPriceWhitelist cena netto
236+
*/
237+
public void setItemPriceWhitelist(float itemPriceWhitelist)
238+
{
239+
this.itemPriceWhitelist = itemPriceWhitelist;
240+
}
241+
221242
/**
222243
* Maksymalna liczba zapytań w planie
223244
* @return liczba zapytań
@@ -542,6 +563,24 @@ public void setFuncGetIBANStatus(boolean funcGetIBANStatus)
542563
this.funcGetIBANStatus = funcGetIBANStatus;
543564
}
544565

566+
/**
567+
* Dostęp do funkcji sprawdzających status podmiotu na białej liście podatników VAT
568+
* @return true jeżeli funkcja jest dostępna
569+
*/
570+
public boolean isFuncGetWhitelistStatus()
571+
{
572+
return funcGetWhitelistStatus;
573+
}
574+
575+
/**
576+
* Dostęp do funkcji sprawdzających status podmiotu na białej liście podatników VAT
577+
* @param funcGetWhitelistStatus true jeżeli funkcja jest dostępna
578+
*/
579+
public void setFuncGetWhitelistStatus(boolean funcGetWhitelistStatus)
580+
{
581+
this.funcGetWhitelistStatus = funcGetWhitelistStatus;
582+
}
583+
545584
/**
546585
* Ilość wykonanych zapytań o dane podmiotu do faktury
547586
* @return ilość zapytań
@@ -650,6 +689,24 @@ public void setIBANStatusCount(int ibanStatusCount)
650689
this.ibanStatusCount = ibanStatusCount;
651690
}
652691

692+
/**
693+
* Ilość wykonanych zapytań o status podmiotu na białej liście
694+
* @return ilość zapytań
695+
*/
696+
public int getWhitelistStatusCount()
697+
{
698+
return whitelistStatusCount;
699+
}
700+
701+
/**
702+
* Ilość wykonanych zapytań o status podmiotu na białej liście
703+
* @param whitelistStatusCount ilość zapytań
704+
*/
705+
public void setWhitelistStatusCount(int whitelistStatusCount)
706+
{
707+
this.whitelistStatusCount = whitelistStatusCount;
708+
}
709+
653710
/**
654711
* Całkowita ilość wykonanych zapytań w bieżącym miesiącu
655712
* @return ilość zapytań
@@ -680,6 +737,7 @@ public String toString()
680737
+ ", itemPriceInvoice = " + itemPriceInvoice
681738
+ ", itemPriceAll = " + itemPriceAll
682739
+ ", itemPriceIBAN = " + itemPriceIBAN
740+
+ ", itemPriceWhitelist = " + itemPriceWhitelist
683741

684742
+ ", limit = " + limit
685743
+ ", requestDelay = " + requestDelay
@@ -702,13 +760,15 @@ public String toString()
702760
+ ", funcGetVIESData = " + funcGetVIESData
703761
+ ", funcGetVATStatus = " + funcGetVATStatus
704762
+ ", funcGetIBANStatus = " + funcGetIBANStatus
763+
+ ", funcGetWhitelistStatus = " + funcGetWhitelistStatus
705764

706765
+ ", invoiceDataCount = " + invoiceDataCount
707766
+ ", allDataCount = " + allDataCount
708767
+ ", firmStatusCount = " + firmStatusCount
709768
+ ", VATStatusCount = " + vatStatusCount
710769
+ ", VIESStatusCount = " + viesStatusCount
711770
+ ", IBANStatusCount = " + ibanStatusCount
771+
+ ", whitelistStatusCount = " + whitelistStatusCount
712772
+ ", totalCount = " + totalCount
713773
+ "]";
714774
}

src/main/java/pl/nip24/client/NIP24Client.java

Lines changed: 117 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
*/
6060
public class NIP24Client {
6161

62-
public final static String VERSION = "1.3.3";
62+
public final static String VERSION = "1.3.4";
6363

6464
public final static String PRODUCTION_URL = "https://www.nip24.pl/api";
6565
public final static String TEST_URL = "https://www.nip24.pl/api-test";
@@ -801,6 +801,119 @@ public IBANStatus getIBANStatus(String nip, String iban)
801801
return getIBANStatus(Number.NIP, nip, iban, null);
802802
}
803803

804+
/**
805+
* Sprawdzenie statusu firmy na podstawie pliku białej listy podatników VAT
806+
* @param type typ numeru identyfikującego firmę
807+
* @param number numer określonego typu
808+
* @param iban numer IBAN rachunku do sprawdzenia (polskie rachunki mogą być bez prefiksu PL)
809+
* @param date dzień, którego ma dotyczyć sprawdzenie statusu (null - bieżący dzień)
810+
* @return bieżący status rachunku bankowego lub null w przypadku błędu
811+
*/
812+
public WLStatus getWhitelistStatus(Number type, String number, String iban, Date date)
813+
{
814+
try {
815+
// clear error
816+
err = null;
817+
818+
// validate number and construct path
819+
String suffix = null;
820+
821+
if ((suffix = getPathSuffix(type, number)) == null) {
822+
return null;
823+
}
824+
825+
if (!IBAN.isValid(iban)) {
826+
iban = "PL" + iban;
827+
828+
if (!IBAN.isValid(iban)) {
829+
err = "Numer IBAN jest nieprawidłowy";
830+
return null;
831+
}
832+
}
833+
834+
if (date == null) {
835+
date = new Date();
836+
}
837+
838+
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
839+
840+
// prepare url
841+
String url = (this.url.toString() + "/check/whitelist/" + suffix + "/" + IBAN.normalize(iban) + "/" + sdf.format(date));
842+
843+
// prepare request
844+
StringBuilder sb = new StringBuilder();
845+
846+
byte[] b = get(url, sb);
847+
848+
if (b == null) {
849+
err = "Nie udało się nawiązać połączenia z serwisem NIP24";
850+
return null;
851+
}
852+
853+
// parse response
854+
Document doc = dbf.newDocumentBuilder().parse(new ByteArrayInputStream(b));
855+
856+
if (doc == null) {
857+
err = "Odpowiedź serwisu NIP24 ma nieprawidłowy format";
858+
return null;
859+
}
860+
861+
String res = getString(doc, "/result/error/code", null);
862+
863+
if (res != null) {
864+
err = getString(doc, "/result/error/description", null);
865+
return null;
866+
}
867+
868+
WLStatus wl = new WLStatus();
869+
870+
wl.setUID(getString(doc, "/result/whitelist/uid", null));
871+
872+
wl.setNIP(getString(doc, "/result/whitelist/nip", null));
873+
wl.setIBAN(getString(doc, "/result/whitelist/iban", null));
874+
875+
wl.setValid(getString(doc, "/result/whitelist/valid", "false").equals("true"));
876+
wl.setVirtual(getString(doc, "/result/whitelist/virtual", "false").equals("true"));
877+
878+
wl.setStatus(Integer.parseInt(getString(doc, "/result/whitelist/vatStatus", "0")));
879+
wl.setResult(getString(doc, "/result/whitelist/vatResult", null));
880+
881+
wl.setHashIndex(Integer.parseInt(getString(doc, "/result/whitelist/hashIndex", "-1")));
882+
wl.setMaskIndex(Integer.parseInt(getString(doc, "/result/whitelist/maskIndex", "-1")));
883+
wl.setDate(getDate(doc, "/result/whitelist/date"));
884+
wl.setSource(getString(doc, "/result/whitelist/source", null));
885+
886+
return wl;
887+
}
888+
catch (Exception ignored) {
889+
}
890+
891+
return null;
892+
}
893+
894+
/**
895+
* Sprawdzenie statusu firmy na podstawie pliku białej listy podatników VAT dla bieżącego dnia
896+
* @param type typ numeru identyfikującego firmę
897+
* @param number numer określonego typu
898+
* @param iban numer IBAN rachunku do sprawdzenia (polskie rachunki mogą być bez prefiksu PL)
899+
* @return bieżący status rachunku bankowego lub null w przypadku błędu
900+
*/
901+
public WLStatus getWhitelistStatus(Number type, String number, String iban)
902+
{
903+
return getWhitelistStatus(type, number, iban, null);
904+
}
905+
906+
/**
907+
* Sprawdzenie statusu firmy na podstawie pliku białej listy podatników VAT dla bieżącego dnia
908+
* @param nip numer NIP
909+
* @param iban numer IBAN rachunku do sprawdzenia (polskie rachunki mogą być bez prefiksu PL)
910+
* @return bieżący status rachunku bankowego lub null w przypadku błędu
911+
*/
912+
public WLStatus getWhitelistStatus(String nip, String iban)
913+
{
914+
return getWhitelistStatus(Number.NIP, nip, iban, null);
915+
}
916+
804917
/**
805918
* Sprawdzenie bieżącego stanu konta użytkownika
806919
* @return status konta lub null w przypadku błędu
@@ -850,6 +963,7 @@ public AccountStatus getAccountStatus()
850963
status.setItemPriceInvoice(Float.parseFloat(getString(doc, "/result/account/billingPlan/itemPriceInvoiceData", "0")));
851964
status.setItemPriceAll(Float.parseFloat(getString(doc, "/result/account/billingPlan/itemPriceAllData", "0")));
852965
status.setItemPriceIBAN(Float.parseFloat(getString(doc, "/result/account/billingPlan/itemPriceIBANStatus", "0")));
966+
status.setItemPriceWhitelist(Float.parseFloat(getString(doc, "/result/account/billingPlan/itemPriceWLStatus", "0")));
853967

854968
status.setLimit(Integer.parseInt(getString(doc, "/result/account/billingPlan/limit", "0")));
855969
status.setRequestDelay(Integer.parseInt(getString(doc, "/result/account/billingPlan/requestDelay", "0")));
@@ -872,13 +986,15 @@ public AccountStatus getAccountStatus()
872986
status.setFuncGetVIESData(getString(doc, "/result/account/billingPlan/funcGetVIESData", "false").equals("true"));
873987
status.setFuncGetVATStatus(getString(doc, "/result/account/billingPlan/funcGetVATStatus", "false").equals("true"));
874988
status.setFuncGetIBANStatus(getString(doc, "/result/account/billingPlan/funcGetIBANStatus", "false").equals("true"));
989+
status.setFuncGetWhitelistStatus(getString(doc, "/result/account/billingPlan/funcGetWLStatus", "false").equals("true"));
875990

876991
status.setInvoiceDataCount(Integer.parseInt(getString(doc, "/result/account/requests/invoiceData", "0")));
877992
status.setAllDataCount(Integer.parseInt(getString(doc, "/result/account/requests/allData", "0")));
878993
status.setFirmStatusCount(Integer.parseInt(getString(doc, "/result/account/requests/firmStatus", "0")));
879994
status.setVATStatusCount(Integer.parseInt(getString(doc, "/result/account/requests/vatStatus", "0")));
880995
status.setVIESStatusCount(Integer.parseInt(getString(doc, "/result/account/requests/viesStatus", "0")));
881996
status.setIBANStatusCount(Integer.parseInt(getString(doc, "/result/account/requests/ibanStatus", "0")));
997+
status.setWhitelistStatusCount(Integer.parseInt(getString(doc, "/result/account/requests/wlStatus", "0")));
882998
status.setTotalCount(Integer.parseInt(getString(doc, "/result/account/requests/total", "0")));
883999

8841000
return status;

0 commit comments

Comments
 (0)