Bilgi bankası

HostBill, Blesta veya kendi sisteminiz üzerinden Zinn® barındırma hizmeti satın

HostBill, Blesta veya kendi sisteminiz üzerinden Zinn® barındırma hizmeti satın: ücretsiz HostBill modülü, tek dosyalık PHP istemcisi, ihlal edildiğinde maliyet doğuran iki kural ve atlanması kolay olan iki istek alanı.

WHMCS kullanıyorsanız, bunun yerine WHMCS modülünü kullanın — bu sayfa diğer her şey içindir. Her ikisi de ücretsiz ve her ikisi de GPL-2.0-or-later lisanslı iki seçenek mevcuttur.

HostBill

WHMCS modülü ile aynı altı eyleme sahip bir hosting modülü.

  1. İndirin ve arşivden çıkarın.
  2. Dosyaların includes/modules/Hosting/zinn/class.zinn.php ve includes/modules/Hosting/zinn/ZinnHostBillClient.php konumlarına yerleşmesi için zinn dizinini includes/modules/Hosting/ içine yükleyin.
  3. Settings → Modules → Hosting yolunu izleyin, Zinn Digital® modülünü etkinleştirin ve bir bağlantı ekleyin:
  • API address: https://api.zinndigital.com
  • API key: Zinn® API anahtarınız (bir password alanı olduğundan HostBill bunu şifrelenmiş olarak saklar)
  1. Ürün üzerinde Product line (ör. mainstream), Stack (varsayılan olarak wordpress) ve isteğe bağlı olarak Application ile PHP version ayarlarını yapın.
  2. Test connection düğmesine basın.

⛔ zinn dizinini yeniden adlandırmayın. HostBill'in yükleyicisi, aradığı sınıfı dizin adından türetir; bu nedenle yeniden adlandırma, panelin listelediği ancak hiçbir zaman çağırmadığı bir modüle yol açar.

Diğer her şey — PHP istemcisi

Tek dosya, bağımlılık yok, panel varsayımı yok. ZinnProvisioning.php dosyasını kendi kod tabanınıza bırakın ve altı yöntemi çağırın.

require_once 'ZinnProvisioning.php';

$zinn = new ZinnProvisioning(getenv('ZINN_API_KEY'));

// Bir sipariş ödendiğinde — MÜŞTERİ başına bir kez, ardından HİZMET başına bir kez:
$orgId  = $zinn->account('customer-4211', 'Acme Ltd');
$siteId = $zinn->provision('service-9915', $orgId, 'acme.com', 'mainstream', 'wordpress');
// $orgId değerini müşterinizle, $siteId değerini ise hizmetinizle eşleştirerek saklayın.

$zinn->suspend($siteId, 'INV-2026-114 unpaid');   // bir fatura ödenmediğinde
$zinn->unsuspend($siteId);                        // ödeme yaptıklarında
$zinn->terminate($siteId);                        // iptal ettiklerinde — silme işlemi planlar

// "Hosting hesabıma giriş yap" seçeneğine tıkladıklarında — asla sayfa oluşturma sırasında değil, TIKLAMA anında üretin:
header('Location: ' . $zinn->signInLink($siteId));

PHP ile yazmıyor musunuz? Aynı çağrılar API referansı içinde de yer almaktadır ve bunları herhangi bir dilden yapabilirsiniz.

API anahtarı

Yedi izin, daha fazlası değil: org.create, org.read, sites.create, sites.view, sites.delete, reseller.view, reseller.provision.

⛔ reseller.manage değil. Bir faturalandırma paneline yapıştırdığınız anahtar, ödeme yapılmaması durumunda bir müşteriyi askıya alabilmeli ve oturum açmasını sağlayabilmelidir; kendi ödeme ağ geçidi kimlik bilgilerinizi yeniden yazamamalıdır.

İhlal edildiklerinde maliyet yaratan iki kural

  1. Hesabı MÜŞTERİNİZE, siteyi ise HİZMETİNİZE bağlayın. Bir müşterinin ikinci siparişi, zaten sahip olduğu hesaba tanımlanmalıdır. Her ikisini de hizmete bağlarsanız, tek bir müşteri birbiriyle ilişkisiz üç hesap ve üç ayrı kontrol paneliyle kalır.
  2. Her oluşturma işleminde, ilgili öğe için kendi kimliğinizden türetilen bir denklik (idempotency) anahtarı gönderin. Her faturalandırma sistemi yeniden dener — bir ağ geçidi geri araması iki kez gelebilir, bir yönetici başarısız olan bir temel hazırlığı yeniden çalıştırabilir, bir müşteri çift tıklayabilir. Bu anahtar olmadan ikinci deneme ikinci bir site oluşturur ve bunun için faturalandırılırsınız. Her iki modül ve PHP istemcisi bunu sizin için yapar; API'yi doğrudan çağırıyorsanız, Idempotency-Key gönderin.

Dışarıda bırakılması kolay üç alan

Her biri koca bir eylemi bozar ve hiçbiri bir doğrulama hatasından başka bir şey olarak görünmez — ilki hariç; o hiçbir şey olarak görünür:

  • ⛔⛔ Bir müşteri, ilk sitesi sağlanmadan ÖNCE bir plana dahil edilmelidir; bu işlem POST /v1/reseller/clients/{orgId}/plan ile yapılır ve subscription_id değeri POST /v1/sites uç noktasına iletilir. Okunacak hiçbir hatanın bulunmadığı durum tam olarak budur. Yeni bir müşteri hesabı hiçbir abonelik barındırmaz ve POST /v1/sites içinde bir plan alanı yoktur; bu nedenle plansız sağlanan bir site hiçbir plan taşımaz: toptan satış ekstreniz müşterilerinizin aktif aboneliklerinden oluşturulur, dolayısıyla hiçbir satır eklenmez ve barındırma çalıştığı sürece Zinn® size hiçbir fatura kesmez; müşteriniz hiçbir hak devralmaz, bu yüzden sitesine hiçbir kota uygulanmaz; ve bir yükseltmenin değiştirebileceği hiçbir şey olmaz. Sipariş 201 döndürür, site sağlanır ve kusursuz bir şekilde hizmet verir. İki tarafta da hiçbir şey bu durumun hiçbirini bildirmez.

Sıralama önemlidir: POST /v1/sites çalıştığı anda hangi abonelik mevcutsa onu kaydeder, bu nedenle sonradan belirlenen bir plan geriye dönük olarak eklenmez.

  • POST /v1/sites, stack_type gerektirir. Bunu atlarsanız hiçbir sipariş başarılı olamaz.
  • DELETE /v1/sites/{siteId}, {"confirm_domain": "<the site's own domain>"} şeklinde bir gövde gerektirir — bu yıkıcı eylem olduğu için yazılı bir onay istenir. Bunu atlarsanız hiçbir iptal işlemi başarılı olamaz; bu nedenle hizmet çalışmaya devam eder ve siz de bunun için faturalandırılmaya devam edersiniz. Alan adını kendi kaydınızı kullanmak yerine GET /v1/reseller/services/{siteId} üzerinden tekrar okuyun: bu değer sitenin kendi birincil alan adıyla karşılaştırılır, asla bir takma adla karşılaştırılmaz.

Yalnızca cümleyi değil, hatanın tamamını okuyun

Bir doğrulama reddinin iletisi bilerek genel bırakılmıştır — "İstek düzgün biçimlendirilmişti ancak doğrulamadan geçemedi." — çünkü işlem yapılabilir olan kısım alanı ve nedenini belirten details içindedir. Hem modüller hem de PHP istemcisi, bunu yöneticinize gösterdikleri iletiye ekler. API'yi kendiniz çağırıyorsanız error.details kısmını okuyun; bazı girdiler bir cümle yerine yalnızca yalın bir değer taşır; bayi planınızda yer kalmadığında max_sites: 0 değerinin size ulaşması da bu şekildedir.

İlk siparişinizden önce

Müşterilerinizin satın aldığı siteler sizin bayi planınızın site limitinden düşer, bu nedenle içinde yer olan bir plana ihtiyacınız vardır. Bir bağlantı testi bunu tespit edemez — programınızı okur ve hiçbir şey sağlamaz — bu yüzden henüz satış yapamayan sağlıklı bir hesap bildirir. Limit olmadan verilen bir sipariş, tam olarak bunu belirten bir iletiyle reddedilir.

İndirmenizi doğrulayın

Her iki arşiv de başka hiçbir yere yönlendirilmeden kendi ana bilgisayar adımızdan TLS üzerinden sunulur ve SHA-256 sağlama toplamları indirmeler sayfasındaki indirme bağlantılarının yanında yer alır.

Blogdan son yazılar

Barındırma, SEO ve sitelerin geniş ölçekte yönetilmesi hakkında yazdıklarımız.

Barındırma Katmanından SEO ve Bağlantı İnşası: 2026 Yılı Operatörünün Bakış Açısı

2026'da barındırmanın indekslemeyi ve bağlantı değerini (link equity) nasıl şekillendirdiği: sayfaları dizinde tutmak, üzerlerinde geliştirme yapmadan önce eski alan adlarını incelemek, ayak izi (footprint) bırakmadan bağlantı inşa etmek ve altyapının SEO için neler yapabileceği ve yapamayacağı konusunda dürüst bir değerlendirme.

Gönderiyi oku →

WordPress'i Hızlı ve Güvenli Hale Getirme: Performans ve Eklenti Kontrol Listesi

Hızlı ve güvenli bir WordPress için pratik bir kontrol listesi: sunucu düzeyinde önbelleğe alma, site başına bir nesne önbelleği, çalıştırılmaya değer az sayıda eklenti, teknoloji yığınını güncel tutma ve asla önbelleğe almamanız gereken WooCommerce sayfaları.

Gönderiyi oku →

2026'da Yönetilen Web Barındırma Nasıl Seçilir: Alıcı Kılavuzu

İyi bir yönetilen barındırmayı kontrol paneline sahip ucuz bir sunucudan gerçekte neyin ayırdığı — taşımalar, yedeklemeler, izolasyon, gerçek önbelleğe alma ve dürüst ölçeklendirme — ve taahhütte bulunmadan önce bunu nasıl değerlendireceğiniz.

Gönderiyi oku →

Blogu okuyun →

Hâlâ sorun mu yaşıyorsunuz?

Her pakette destek dahildir, destek ekibimiz günde 24 saat hizmet vermektedir ve 58 dilimizden herhangi biriyle bize yazabilirsiniz; size kendi dilinizde yanıt veriyoruz.

Destek ekibiyle iletişime geçin → Tüm makaleler →