Geliştiriciler

CihazSorgula API

WordPress ve Joomla eklentilerimizin kullandığı API'nin aynısı. Kendi sitenize, mobil uygulamanıza veya ERP sisteminize servis kayıtlarınızı bağlayın.

Hazır eklentiler

Kod yazmanıza gerek yok: sitenize eklentiyi kurun, lisans bilgilerinizi yapıştırın, sorgu formu hazır.

WordPress kurulumu

  1. Eklentiler → Yeni Ekle → Eklenti Yükle → zip dosyasını seçin → Şimdi Kur → Etkinleştir.
  2. Ayarlar → CihazSorgula sayfasına lisans anahtarını ve API gizli anahtarını yapıştırın → Kaydet ve doğrula.
  3. Bir sayfaya Cihaz Sorgula bloğunu veya [cihaz_sorgula] kısa kodunu ekleyin.

Joomla kurulumu

  1. Sistem → Uzantı Yükle → zip dosyasını sürükleyin.
  2. İçerik → Site Modülleri → CihazSorgula modülünü açın (yoksa Yeni → CihazSorgula).
  3. Lisans anahtarı ve API gizli anahtarını yapıştırıp Kaydet'e basın; “Bağlı” yazısını görün.
  4. Modül konumunu ve Menü Ataması'nı seçin, durumu Yayında yapıp Kaydet ve Kapat.

Eklentiyi kaldırdığınızda site lisansınızdan otomatik ayrılır ve site hakkınız boşa çıkar. Kullanılmayan siteleri servis panelinizden de kaldırabilirsiniz.

Erişim seviyeleri

Uç noktaBaşlangıçProKurumsal
Lisans doğrulama, site aktivasyonu, cihaz sorgulama✓ (eklenti)✓
Kayıt listeleme ve detay (okuma)—✓
Kayıt oluşturma ve durum güncelleme (yazma)—✓

Kimlik doğrulama

Servis panelinizde Servis Ayarları → Eklenti ve API bölümünden lisans anahtarınızı ve API gizli anahtarınızı alın. Gizli anahtar asla tarayıcıya veya mobil uygulamanın içine konmamalıdır; istekleri her zaman kendi sunucunuzdan gönderin.

Her istekte şu başlıklar gönderilir:

X-CS-LicenseLisans anahtarı
X-CS-TimestampUnix zamanı (saniye). Sunucu saatinden en fazla 5 dakika farklı olabilir.
X-CS-Signatureİstek imzası (aşağıda)
X-CS-DomainEklentiler için: isteği yapan sitenin alan adı. Başlangıç paketinde zorunlu.
X-CS-End-User-IPİsteğe bağlı: sorgu yapan ziyaretçinin IP'si (hız sınırı ziyaretçi bazında uygulanır).

İmza nasıl hesaplanır?

imzalanacak_metin = METHOD + "\n" + YOL_VE_SORGU + "\n" + TIMESTAMP + "\n" + hex(sha256(GÖVDE))
X-CS-Signature    = hex(hmac_sha256(gizli_anahtar, imzalanacak_metin))

Örnek imzalanacak metin (GET, gövde boş):
GET
/v1/track?code=CS-7K4M2P&phone4=1234
1760700000
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

PHP örneği

$key    = 'XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX';
$secret = 'gizli-anahtariniz';
$uri    = '/v1/track?code=CS-7K4M2P&phone4=1234';
$ts     = (string) time();
$sig    = hash_hmac('sha256', "GET\n$uri\n$ts\n" . hash('sha256', ''), $secret);

$ch = curl_init('https://api.cihazsorgula.com' . $uri);
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [
    "X-CS-License: $key", "X-CS-Timestamp: $ts", "X-CS-Signature: $sig",
    'X-CS-Domain: teknikservisim.com',
]]);
$sonuc = json_decode(curl_exec($ch), true);

Hazır PHP istemcisi (CihazSorgulaClient.php) için bizimle iletişime geçin; imzalama ve hata yönetimini sizin yerinize yapar.

Uç noktalar

Temel adres: https://api.cihazsorgula.com · Tüm yanıtlar JSON'dur ve "ok": true|false alanı içerir.

GET /v1/ping

Bağlantıyı ve lisansı test eder. Paket, bitiş tarihi, site limiti ve alan adının aktive olup olmadığını döner.

POST /v1/activate · POST /v1/deactivate

Siteyi lisansa bağlar / ayırır. Gövde: {"domain": "teknikservisim.com", "platform": "wordpress", "plugin_version": "1.0.0"}. Paketinizin site limiti aşılırsa site_limit hatası döner.

GET /v1/track?code=…&phone4=…

Müşteri cihaz sorgusu. Takip numarası ve kayıtlı telefonun son 4 hanesi eşleşirse durum, ilerleme, işlem geçmişi (yalnızca müşteriye açık notlar), ücret ve servis bilgilerini döner. Müşteri adı maskelenir.

GET /v1/statuses

Servisin kullandığı durumlar (received, inspecting, awaiting_approval, awaiting_parts, repairing, testing, ready, delivered, cancelled).

GET /v1/tickets (Pro, Kurumsal)

Kayıt listesi. Filtreler: status, updated_since (ISO 8601), phone, page, per_page (en fazla 100).

GET /v1/tickets/{takip_no} (Pro, Kurumsal)

Kaydın tüm detayı: müşteri, parça/işçilik kalemleri, iç notlar dahil tüm geçmiş.

POST /v1/tickets (Kurumsal)

{
  "customer": {"name": "Ahmet Yılmaz", "phone": "05321234567", "email": "[email protected]"},
  "device_type": "Akıllı Telefon", "brand": "Samsung", "model": "Galaxy S23",
  "serial_imei": "35xxxxxxxxxxxxx", "complaint": "Ekran kırık",
  "accessories": "Kılıf", "estimated_cost": 3450, "estimated_ready_at": "2026-10-25"
}

Başarılı olursa 201 ile takip numarası ve sorgu bağlantısı döner.

POST /v1/tickets/{takip_no}/status (Kurumsal)

Gövde: {"status": "ready", "note": "Cihaz hazır", "is_public": true, "final_cost": 3450}

Hata kodları

401auth_missing, auth_expired, license_invalid, signature_invalid
402license_expired — lisans süresi dolmuş
403plan_required, domain_required, domain_not_activated, site_limit, ticket_limit, service_suspended
404not_found — kayıt bulunamadı veya bilgiler eşleşmedi
422invalid_code, invalid_phone, validation_failed, status_invalid
429rate_limited — lisans başına dakikada 300 istek; ziyaretçi başına 10 dakikada 20 sorgu