Verification Results
Daftar lengkap semua kemungkinan hasil verifikasi dan cara menanganinya di aplikasi Anda.
Hasil Verifikasi
Valid
VALIDHTTP: 200Lisensi valid dan dapat digunakan.
Invalid
INVALIDHTTP: 404License key tidak ditemukan atau tidak valid.
Expired
EXPIREDHTTP: 403Lisensi sudah melewati tanggal kedaluwarsa.
IP Limit Exceeded
IP_LIMIT_EXCEEDEDHTTP: 403Lisensi sudah digunakan dari terlalu banyak IP address.
Rate Limited
RATE_LIMITEDHTTP: 429Terlalu banyak verification request dalam periode waktu tertentu.
Scope Mismatch
SCOPE_MISMATCHHTTP: 403Scope yang diminta tidak cocok dengan scope lisensi.
Connection Error
CONNECTION_ERRORHTTP: N/ATidak dapat terhubung ke server NxGate.
Signature Invalid
SIGNATURE_INVALIDHTTP: N/ARSA signature tidak valid, kemungkinan response dimanipulasi.
Handling Results di Java
1import xyz.noxlydev.nxgate.NxGateClient;2import xyz.noxlydev.nxgate.VerificationResult;3import xyz.noxlydev.nxgate.VerificationResult.Result;45NxGateClient client = new NxGateClient("YOUR_USER_ID", licenseKey);6VerificationResult result = client.verify();78switch (result.getResult()) {9 case VALID:10 // Lisensi valid, lanjutkan11 break;1213 case INVALID:14 // License key tidak ditemukan atau tidak valid15 getLogger().severe("License key tidak valid!");16 break;1718 case EXPIRED:19 // Lisensi sudah kedaluwarsa20 getLogger().severe("License expired: " + result.getExpirationDate());21 break;2223 case IP_LIMIT_EXCEEDED:24 // Sudah digunakan di terlalu banyak IP25 getLogger().severe("IP limit exceeded: " + result.getIpCount() + "/" + result.getIpLimit());26 break;2728 case RATE_LIMITED:29 // Terlalu banyak request30 getLogger().warning("Rate limited. Retry after: " + result.getRetryAfter() + "s");31 break;3233 case SCOPE_MISMATCH:34 // Scope tidak cocok35 getLogger().severe("License scope mismatch!");36 break;3738 case CONNECTION_ERROR:39 // Tidak dapat terhubung ke server40 getLogger().warning("Cannot connect to NxGate server");41 break;4243 case SIGNATURE_INVALID:44 // RSA signature tidak valid (possible tampering)45 getLogger().severe("Response signature invalid!");46 break;4748 default:49 getLogger().severe("Unknown error: " + result.getMessage());50}
Contoh JSON Response
1// Response untuk VALID2{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}1314// Response untuk EXPIRED15{16 "valid": false,17 "result": "EXPIRED",18 "expiresAt": "2024-06-01T00:00:00Z"19}2021// Response untuk IP_LIMIT_EXCEEDED22{23 "valid": false,24 "result": "IP_LIMIT_EXCEEDED",25 "ipCount": 5,26 "ipLimit": 327}2829// Response untuk RATE_LIMITED30{31 "valid": false,32 "result": "RATE_LIMITED",33 "retryAfter": 360034}
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.