Verification Results

Daftar lengkap semua kemungkinan hasil verifikasi dan cara menanganinya di aplikasi Anda.

Hasil Verifikasi

Valid

VALIDHTTP: 200

Lisensi valid dan dapat digunakan.

Invalid

INVALIDHTTP: 404

License key tidak ditemukan atau tidak valid.

Expired

EXPIREDHTTP: 403

Lisensi sudah melewati tanggal kedaluwarsa.

IP Limit Exceeded

IP_LIMIT_EXCEEDEDHTTP: 403

Lisensi sudah digunakan dari terlalu banyak IP address.

Rate Limited

RATE_LIMITEDHTTP: 429

Terlalu banyak verification request dalam periode waktu tertentu.

Scope Mismatch

SCOPE_MISMATCHHTTP: 403

Scope yang diminta tidak cocok dengan scope lisensi.

Connection Error

CONNECTION_ERRORHTTP: N/A

Tidak dapat terhubung ke server NxGate.

Signature Invalid

SIGNATURE_INVALIDHTTP: N/A

RSA signature tidak valid, kemungkinan response dimanipulasi.

Handling Results di Java

ResultHandler.java
1import xyz.noxlydev.nxgate.NxGateClient;
2import xyz.noxlydev.nxgate.VerificationResult;
3import xyz.noxlydev.nxgate.VerificationResult.Result;
4
5NxGateClient client = new NxGateClient("YOUR_USER_ID", licenseKey);
6VerificationResult result = client.verify();
7
8switch (result.getResult()) {
9 case VALID:
10 // Lisensi valid, lanjutkan
11 break;
12
13 case INVALID:
14 // License key tidak ditemukan atau tidak valid
15 getLogger().severe("License key tidak valid!");
16 break;
17
18 case EXPIRED:
19 // Lisensi sudah kedaluwarsa
20 getLogger().severe("License expired: " + result.getExpirationDate());
21 break;
22
23 case IP_LIMIT_EXCEEDED:
24 // Sudah digunakan di terlalu banyak IP
25 getLogger().severe("IP limit exceeded: " + result.getIpCount() + "/" + result.getIpLimit());
26 break;
27
28 case RATE_LIMITED:
29 // Terlalu banyak request
30 getLogger().warning("Rate limited. Retry after: " + result.getRetryAfter() + "s");
31 break;
32
33 case SCOPE_MISMATCH:
34 // Scope tidak cocok
35 getLogger().severe("License scope mismatch!");
36 break;
37
38 case CONNECTION_ERROR:
39 // Tidak dapat terhubung ke server
40 getLogger().warning("Cannot connect to NxGate server");
41 break;
42
43 case SIGNATURE_INVALID:
44 // RSA signature tidak valid (possible tampering)
45 getLogger().severe("Response signature invalid!");
46 break;
47
48 default:
49 getLogger().severe("Unknown error: " + result.getMessage());
50}

Contoh JSON Response

API Response Examples
1// Response untuk VALID
2{
3 "valid": true,
4 "result": "VALID",
5 "license": {
6 "key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
7 "createdAt": "2024-01-15T10:30:00Z",
8 "expiresAt": null,
9 "scope": "minecraft-server",
10 "notes": "Customer: ServerXYZ"
11 }
12}
13
14// Response untuk EXPIRED
15{
16 "valid": false,
17 "result": "EXPIRED",
18 "expiresAt": "2024-06-01T00:00:00Z"
19}
20
21// Response untuk IP_LIMIT_EXCEEDED
22{
23 "valid": false,
24 "result": "IP_LIMIT_EXCEEDED",
25 "ipCount": 5,
26 "ipLimit": 3
27}
28
29// Response untuk RATE_LIMITED
30{
31 "valid": false,
32 "result": "RATE_LIMITED",
33 "retryAfter": 3600
34}

Best Practices

Handle Semua Cases

Selalu handle semua kemungkinan hasil, jangan hanya VALID dan INVALID.

Graceful Degradation

Untuk CONNECTION_ERROR, pertimbangkan menggunakan cache jika offline mode enabled.

Log untuk Debugging

Log semua hasil verifikasi untuk membantu troubleshooting user issues.

Rate Limit Handling

Gunakan retryAfter value untuk menentukan kapan retry verification.