Başlarken
SSL Sertifikası Reseller API v3.0, bayi hesabınız üzerinden SSL sertifikası siparişlerini, fatura işlemlerini ve kredi ödemelerini programatik olarak yönetmenizi sağlar.
Gereksinimler
- Aktif bir bayi hesabı (sipariş verebilmek için hesabınıza bir bayi fiyat grubu tanımlanmış olmalıdır)
- API anahtarı (bayi panelinizden oluşturabilirsiniz)
- API erişimi açık olmalı (Panel > API & Entegrasyonlar)
Base URL
https://www.sslsertifikasi.com.tr/api/reseller/
İstek Formatı
Tüm istekler ve yanıtlar JSON formatındadır.
Content-Type: application/json
Accept: application/json
Genel Yanıt Yapısı
// Başarılı (veri alanları doğrudan üst seviyede döner; "message" yalnızca işlem yapan isteklerde bulunur)
{
"success": true,
...data
}
// Hata
{
"success": false,
"error": "Hata mesajı"
}
İstek Sınırı
Her bayi hesabı için dakikada 60 istek sınırı vardır. Sınır aşıldığında API 429 döner; yanıtta Retry-After başlığı ve retry_after_minutes alanı bulunur.
Para Birimi ve KDV
Fiyat ve bakiye alanlarının para birimi yanıttaki currency / base_currency alanlarında belirtilir. Ürün fiyatları KDV hariçtir; sipariş tutarı (total) KDV dahil hesaplanır ve bakiyenizden bu tutar düşülür.
Kimlik Doğrulama
Tüm API isteklerinde aşağıdaki yöntemlerden birini kullanın:
Yöntem 1: X-API-Key Header
X-API-Key: YOUR_API_KEY
Yöntem 2: Bearer Token
Authorization: Bearer YOUR_API_KEY
API Anahtarı Nasıl Alınır?
- Bayi panelinize giriş yapın
- API & Entegrasyonlar sayfasını açın
- "API Anahtarı Oluştur" butonuna tıklayın
- Oluşturulan anahtarı güvenli bir yerde saklayın
Tüm Endpoint'ler
| Method |
Endpoint |
Açıklama |
| GET |
/products |
Ürün listesi (filtre destekli) |
| GET |
/products/{id} |
Ürün detayı + SAN fiyatları |
| GET |
/orders |
Sipariş listesi (filtre destekli) |
| GET |
/orders/{id} |
Sipariş detayı |
| POST |
/orders |
Yeni sipariş oluştur (SAN destekli) |
| PUT |
/orders/{id} |
Sipariş işlemleri (iptal) |
| POST |
/ssl/configure |
SSL yapılandırma (CSR, DCV, iletişim bilgileri) |
| GET |
/ssl/{order_id} |
SSL durum sorgulama + doğrulama detayları |
| POST |
/ssl/resend-validation |
Doğrulama e-postasını tekrar gönder |
| POST |
/ssl/change-dcv |
DCV yöntemini değiştir |
| POST |
/ssl/reissue |
Sertifika yeniden düzenle (reissue) |
| POST |
/ssl/documents |
Doğrulama evrakı yükle (Certum ürünleri) |
| GET |
/ssl/{order_id}/documents |
Yüklenen evrakların durumu |
| POST |
/csr/decode |
CSR decode (domain, org, SAN bilgileri) |
| GET |
/invoices |
Fatura listesi |
| GET |
/invoices/{id} |
Fatura detayı |
| GET |
/credits |
Kredi bakiyesi + işlem geçmişi |
| POST |
/credits |
Ödenmemiş bir siparişi bakiyeden öde |
| GET |
/balance |
Bakiye ve son işlemler |
| GET |
/certificate/{order_id} |
Sertifika durum bilgisi |
| GET |
/certificate/{order_id}/download |
Sertifika indir (PEM + CA Bundle) |
| GET |
/account (veya /me) |
Hesap bilgileri |
| GET |
/stats |
İstatistikler ve grafikler |
Ürünler
Grup Bazlı Fiyat: Hesabınıza bir bayi fiyat grubu tanımlıysa yalnızca o gruptaki ürünler ve grup fiyatları döner. Fiyatlar KDV hariçtir.
Ürün Listesi
GET /products
Filtre Parametreleri
brand |
Marka (ör. Sectigo, DigiCert, Certum). Tam eşleşme, büyük/küçük harf duyarsız. |
type |
Ürün türü. Değer, ürün listesinde dönen type alanıyla aynı olmalıdır. |
validation |
Doğrulama tipi (dv, ov, ev) |
GET /products?brand=Sectigo&validation=dv
Yanıt
{
"success": true,
"products": [
{
"id": 1,
"name": "Sectigo PositiveSSL",
"brand": "Sectigo",
"type": "dv",
"validation_type": "dv",
"domain_type": "single",
"list_price": 49.99,
"list_pricing": { "1": 49.99, "2": 89.99, "3": 119.99 },
"reseller_price": 12.99,
"pricing": { "1": 12.99, "2": 22.99, "3": 29.99 },
"max_years": 3,
"san_enabled": false,
"currency": "USD",
"tax_rate": 20
}
],
"count": 25,
"group_id": 1,
"currency": "USD",
"tax_rate": 20,
"note": "Fiyatlar KDV hariçtir. KDV bilgisi her üründe ayrı gösterilmektedir."
}
Yukarıdaki değerler örnektir. SAN destekleyen ürünlerde ek olarak san nesnesi (SAN ve Wildcard SAN fiyatları) döner.
Ürün Detayı
GET /products/{id}
Tek ürünün bilgilerini product nesnesi içinde döndürür: 1–5 yıllık fiyatlar ve varsa SAN / Wildcard SAN fiyatları. Ürün grubunuzda tanımlı değilse 404 döner.
Siparişler
Sipariş Listesi
GET /orders
Filtre Parametreleri
status |
Durum filtresi (aşağıdaki durum değerlerinden biri) |
domain |
Alan adı araması (içinde geçen) |
limit |
Sayfa başına kayıt (maks. 100, varsayılan 50) |
offset |
Başlangıç noktası (sayfalama) |
GET /orders?status=pending_configuration&limit=20&offset=0
Sipariş Detayı
GET /orders/{id}
{
"success": true,
"order": {
"id": 12345,
"order_number": "ORD-2026-0042",
"product_name": "Sectigo PositiveSSL",
"domain": "example.com",
"period_months": 12,
"subtotal": 12.99,
"discount_amount": 37.00,
"total": 15.59,
"status": "active",
"payment_status": "paid",
"max_validity_days": 199,
"purchase_end_date": "2027-03-21",
"reissue_count": 0,
"created_at": "2026-03-21 10:30:00",
"certificate": { "valid_from": "2026-03-21", "valid_till": "2026-10-05", "has_certificate": true }
}
}
Yeni Sipariş Oluştur
POST /orders
Body Parametreleri
product_id * |
Ürün ID (grubunuzda tanımlı olmalı) |
domain * |
Alan adı. Kod imzalama gibi alan adı gerektirmeyen ürünlerde zorunlu değildir; csr gönderilirse CSR'daki CN kullanılabilir. |
period |
Hizmet süresi (ay): 12, 24, 36… (en fazla 60). Gönderilmezse ürünün varsayılan süresi kullanılır. Tutar, ürünün o süreye ait fiyatından (pricing) hesaplanır; ilgili süre için fiyat tanımlı değilse sipariş 400 ile reddedilir. |
san_count |
Ek SAN sayısı. Ürün için SAN fiyatı tanımlı değilse SAN'lı sipariş reddedilir. Yapılandırmada gönderilen ek alan adı sayısı, ödenen adedi (çoklu alan adı ürünlerinde ürüne dahil adet dahil) aşamaz. |
san_wildcard_count |
Ek Wildcard SAN sayısı |
csr |
CSR (PEM). Gönderilirse sipariş oluşturulur oluşturulmaz sertifika başvurusu yapılır. Gönderilmezse sipariş pending_configuration durumunda bekler ve POST /ssl/configure ile tamamlanır. |
dcv_method, approver_email |
csr ile birlikte kullanılır. Doğrulama yöntemi: email, http, https, dns (varsayılan: email). |
admin_firstname, admin_lastname, admin_email, admin_phone, organization, admin_address, admin_city, admin_postcode, admin_country |
İletişim / kuruluş bilgileri (opsiyonel). Gönderilmezse bayi hesabınızdaki bilgiler kullanılır; admin_country varsayılanı TR. |
Bakiyeden Ödeme
Sipariş oluşturulduğunda KDV dahil tutar bakiyenizden düşülür ve sipariş paid olarak kaydedilir; ayrıca ödeme isteği göndermeniz gerekmez. Bakiye (veya tanımlıysa kredi limiti) yetersizse sipariş oluşturulmaz ve 402 döner.
CSR ve özel anahtar: API, CSR veya özel anahtar (private key) üretmez ve saklamaz. CSR'ı kendi sunucunuzda oluşturup göndermelisiniz; özel anahtar yalnızca sizde kalır.
// Örnek istek
{
"product_id": 1,
"domain": "example.com",
"period": 12
}
Yanıt
{
"success": true,
"message": "Sipariş başarıyla oluşturuldu",
"order_id": 12345,
"order_number": "ORD-2026-0042",
"domain": "example.com",
"subtotal": 12.99,
"tax_rate": 20,
"tax_amount": 2.60,
"total": 15.59,
"currency": "USD",
"status": "pending_configuration",
"payment_status": "paid",
"credit_used": 15.59,
"new_balance": 1234.41,
"invoice_number": "INV-2026-0078",
"max_validity_days": 199,
"purchase_end_date": "2027-03-21"
}
csr ile gönderilen siparişlerde yanıtta ayrıca ssl_provision ve doğrulama talimatlarını içeren validation_details alanları bulunur. Başvuru aşamasında bir hata oluşursa sipariş yine oluşturulmuş olur; hata ssl_provision.error alanında bildirilir.
Sipariş İptal Et
PUT /orders/{id}
// Body
{ "action": "cancel", "reason": "İptal nedeni (opsiyonel)" }
Yalnızca henüz sertifikası düzenlenmemiş siparişler (pending, pending_configuration, processing) iptal edilebilir; tutar bakiyenize iade edilir ve yanıttaki credit_refunded alanında gösterilir. Yayınlanmış sertifikalar ve sertifika sağlayıcısının iptalini kabul etmediği siparişler API üzerinden iptal edilemez (409); bunlar için destek talebi oluşturun.
Sipariş Durumları
pending_configuration |
Ödendi, CSR / yapılandırma bekleniyor |
processing |
Başvuru yapıldı, işleniyor |
validation_pending |
Alan adı / kuruluş doğrulaması bekleniyor |
pending |
Beklemede |
active / completed |
Sertifika düzenlendi |
cancelled |
İptal edildi |
expired |
Süresi dolmuş |
SSL Yönetimi
SSL endpoint'leri sipariş sonrası sertifika yapılandırma, durum sorgulama, DCV değişikliği ve yeniden düzenleme (reissue) işlemleri için kullanılır.
SSL Yapılandırma
POST /ssl/configure
Sipariş oluşturulduktan sonra CSR ve DCV bilgilerini göndererek sertifika başvurusunu yapın. Sipariş ödenmiş olmalı (aksi halde 402) ve daha önce yapılandırılmamış olmalıdır (aksi halde 400).
order_id * |
Sipariş ID |
csr * |
Certificate Signing Request (PEM). Kendi sunucunuzda üretilmelidir. Bulut kod imzalama ürünlerinde gönderilmez (ayrıntı). |
dcv_method |
Doğrulama yöntemi: email, http, https, dns (varsayılan: email) |
approver_email |
Onay e-postası (email DCV için) |
san_domains |
Çoklu alan adı ürünlerinde ek alan adları |
admin_firstname, admin_lastname, admin_email, admin_phone, organization, admin_address, admin_city, admin_postcode, admin_country |
İletişim / kuruluş bilgileri (opsiyonel; OV ve EV ürünlerinde kuruluş bilgilerini göndermeniz önerilir) |
SSL Durum Sorgulama
GET /ssl/{order_id}
Siparişin durumunu, seçili DCV yöntemini ve doğrulama talimatlarını (validation_details: HTTP dosyası, DNS kaydı veya onay e-postası) döndürür. Sertifika düzenlendiğinde has_certificate alanı true olur; sertifikayı GET /certificate/{order_id}/download ile alabilirsiniz.
DCV Yöntemi Değiştir
POST /ssl/change-dcv
order_id * |
Sipariş ID |
dcv_method * |
Yeni DCV yöntemi: email, http, https, dns |
approver_email |
Yeni onay e-postası |
Yalnızca doğrulaması tamamlanmamış siparişlerde kullanılabilir.
Doğrulama E-postası Tekrar Gönder
POST /ssl/resend-validation
{ "order_id": 12345 }
Sertifika Yeniden Düzenle (Reissue)
POST /ssl/reissue
Yeniden düzenleme hizmet süresi boyunca ücretsizdir ve
bu istekle siz başlatırsınız; sistem otomatik reissue yapmaz. Ayrıntı için
199 Gün Kuralı bölümüne bakın.
order_id * |
Sipariş ID (aktif sertifika gerekli) |
csr |
Yeni CSR (opsiyonel, boşsa siparişteki mevcut CSR kullanılır) |
dcv_method |
DCV yöntemi |
approver_email |
Onay e-postası |
Ürüne göre destek: DCV değiştirme, doğrulama e-postasını yeniden gönderme ve reissue işlemleri bazı markaların ürünlerinde API üzerinden desteklenmez. Bu durumda istek 400 ile açıklayıcı bir hata döndürür; işlemi bayi panelinden yapabilir veya destek talebi açabilirsiniz.
Bulut Kod İmzalama (Certum Cloud)
Certum bulut kod imzalama ürünlerinde imzalama anahtarı Certum bulutunda (SimplySign) üretilir; bu nedenle CSR ve alan adı gönderilmez. Sipariş POST /orders ile oluşturulur, başvuru POST /ssl/configure ile aşağıdaki alanlarla yapılır:
order_id * |
Sipariş ID |
admin_firstname, admin_lastname * |
Başvuran kişinin adı ve soyadı |
admin_email * |
Başvuranın e-posta adresi. Sertifika bu adrese bağlı SimplySign hesabına tanımlanır; farklı bir hesap e-postası için simplysign_email gönderin. |
admin_phone |
Başvuranın telefonu |
organization, tax_number |
Kuruluş adı ve vergi numarası. Kuruluş adına başvuruda ikisi birlikte zorunludur; EV kod imzalamada organization zorunludur. Bireysel başvuruda gönderilmez. |
admin_country, admin_city, admin_address, admin_postcode |
Kuruluş adresi (ülke kodu iki harf, varsayılan TR). EV başvurularında adres bilgilerini eksiksiz gönderin; ticaret sicil numarası için registration_number kullanılabilir. |
{
"order_id": 12345,
"admin_firstname": "Ali",
"admin_lastname": "Yilmaz",
"admin_email": "ali@ornek.com.tr",
"admin_phone": "+905550000000",
"organization": "Ornek Yazilim A.S.",
"tax_number": "1234567890",
"admin_city": "Istanbul",
"admin_country": "TR"
}
Başvurudan sonra sertifika otoritesi kişi ve kuruluş doğrulaması yapar ve belge isteyebilir. Belgeleri Evrak Yükleme ile gönderebilir, durumu GET /ssl/{order_id} ile izleyebilirsiniz.
Evrak Yükleme
POST /ssl/documents
Certum ürünlerinde doğrulama için istenen belgeleri (kimlik, kuruluş belgesi, yetki belgesi vb.) gönderir. Sipariş POST /ssl/configure ile yapılandırılmış olmalıdır. Dosyalar doğrudan sertifika otoritesine iletilir, tarafımızda saklanmaz.
order_id * |
Sipariş ID |
files * |
Dosya listesi: [{"name": "belge.pdf", "content": "<base64>"}]. PDF, JPG veya PNG; dosya başına en fazla 10 MB, istek başına en fazla 5 dosya ve toplam 20 MB. |
doc_type |
Belge türü: APPLICANT (başvuran), ORGANIZATION (kuruluş), AUTHORIZATION (yetki belgesi), ADDITIONAL (diğer, varsayılan), ATTESTATION_LETTER |
note |
Kısa açıklama (opsiyonel) |
// İstek
{
"order_id": 12345,
"doc_type": "ORGANIZATION",
"files": [ { "name": "vergi-levhasi.pdf", "content": "JVBERi0xLjQK..." } ]
}
// Yanıt
{ "success": true, "message": "Evrak sertifika otoritesine iletildi", "order_id": 12345, "doc_type": "ORGANIZATION", "uploaded": 1 }
Evrak Durumu
GET /ssl/{order_id}/documents
{
"success": true,
"order_id": 12345,
"documents": [
{ "type": "ORGANIZATION", "state": "VERIFIED", "created_at": "2026-10-04", "expires_at": "" }
]
}
state değerini sertifika otoritesi belirler (ör. doğrulama bekliyor, doğrulandı, reddedildi). Reddedilen belge yerine yenisini aynı istekle gönderebilirsiniz.
CSR Decode
POST /csr/decode
{ "csr": "-----BEGIN CERTIFICATE REQUEST-----\n...\n-----END CERTIFICATE REQUEST-----" }
CSR içindeki bilgileri döndürür: cn, domain, is_wildcard, organization, country, sans, san_count ve onay için kullanılabilecek email_suggestions.
199 Gün Kuralı & Yeniden Düzenleme
CA/Browser Forum kuralı: Mart 2026'dan itibaren SSL/TLS sertifikaları en fazla 199 gün geçerli olarak düzenlenir.
Kod imzalama (Code Signing) sertifikaları bu kurala tabi değildir.
Nasıl Çalışır?
1 yıllık (veya daha uzun) bir SSL siparişinde:
- Sertifika en fazla 199 gün geçerli olarak düzenlenir.
- Hizmet süresi (
purchase_end_date) devam ederken sertifikanın süresi dolmadan POST /ssl/reissue ile ücretsiz yeniden düzenleme başlatırsınız.
- Yeniden düzenleme otomatik yapılmaz; isteği sizin sisteminiz gönderir. Sertifikanın bitiş tarihini (
valid_till / days_remaining) izlemenizi öneririz.
İlgili Alanlar
max_validity_days |
integer — Sertifikanın en fazla geçerlilik süresi (gün). Kod imzalama ürünlerinde null. |
purchase_end_date |
string (YYYY-MM-DD) — Satın alınan hizmet süresinin bitiş tarihi |
reissue_count |
integer — Sipariş için kayıtlı yeniden düzenleme sayısı |
auto_reissue_enabled, next_reissue_at |
Geriye dönük uyumluluk için yanıtlarda yer alır. Otomatik yeniden düzenleme kullanılmadığından 0 ve null döner. |
Geçerlilik Takvimi
CA/Browser Forum'un açıkladığı takvime göre azami geçerlilik süresi kademeli olarak kısalacaktır:
| Başlangıç | Azami Geçerlilik | Durum |
| Mart 2026 | 200 gün (uygulamada 199 gün) | Yürürlükte |
| Mart 2027 | 100 gün | Planlanan |
| Mart 2029 | 47 gün | Planlanan |
Örnek Senaryo: 1 Yıllık DV SSL
Sipariş: 21 Mart 2026 — hizmet süresi 21 Mart 2027'ye kadar
1. sertifika : 21 Mart 2026 → 5 Ekim 2026 (199 gün)
Reissue isteği: Ekim 2026'dan önce POST /ssl/reissue (sizin sisteminiz gönderir)
2. sertifika : yeniden düzenleme tarihinden itibaren en fazla 199 gün
Hizmet süresi 21 Mart 2027'de sona erer; sonrası için yeni sipariş gerekir.
Faturalar
Fatura Listesi
GET /invoices
status |
Durum filtresi (ör. paid, cancelled). API ile oluşturulan siparişlerin faturaları paid olarak oluşur. |
limit |
Sayfa başı kayıt (maks. 100, varsayılan 50) |
offset |
Başlangıç noktası |
Yanıt
{
"success": true,
"invoices": [
{
"id": 78,
"invoice_number": "INV-2026-0078",
"order_number": "ORD-2026-0042",
"domain": "example.com",
"total": 28.97,
"currency": "USD",
"status": "paid",
"due_date": "2026-02-21",
"created_at": "2026-02-14 10:30:00"
}
],
"pagination": { "total": 156, "limit": 50, "offset": 0 }
}
Fatura Detayı
GET /invoices/{id}
Kredi & Ödeme
Siparişler bakiyenizden karşılanır. Tutarların para birimi yanıttaki currency / base_currency alanlarında belirtilir.
Bakiye & İşlem Geçmişi
GET /credits?limit=50&offset=0
{
"success": true,
"balance": 1234.41,
"currency": "USD",
"transactions": [
{
"id": 45,
"amount": -15.59,
"type": "debit",
"description": "Sipariş ödemesi: ORD-2026-0042 (KDV dahil)",
"balance_after": 1234.41,
"created_at": "2026-03-21 10:31:00"
},
{
"id": 44,
"amount": 500.00,
"type": "credit",
"description": "Kredi yükleme",
"balance_after": 1250.00,
"created_at": "2026-03-20 09:00:00"
}
],
"pagination": { "total": 45, "limit": 50, "offset": 0 }
}
Ödenmemiş Siparişi Bakiyeden Öde
POST /credits
{ "order_id": 12345 }
POST /orders ile oluşturulan siparişler oluşturulurken ödenir; bu siparişler için bu isteği göndermeniz gerekmez (gönderilirse 400 "Sipariş zaten ödenmiş" döner). Bu endpoint yalnızca başka bir kanaldan oluşturulmuş, ödenmemiş siparişler içindir.
Bakiye Sorgula (Kısa)
GET /balance
Bakiyeyi (credit_balance), tanımlıysa kredi limitini (credit_limit) ve son 10 işlemi (recent_transactions) döndürür.
Sertifika
Sertifika Durumu
GET /certificate/{order_id}
{
"success": true,
"certificate": {
"order_id": 12345,
"domain": "example.com",
"product": "Sectigo PositiveSSL",
"brand": "Sectigo",
"status": "active",
"valid_from": "2026-03-21",
"valid_till": "2026-10-05",
"has_certificate": true,
"has_ca_bundle": true,
"days_remaining": 198,
"is_expired": false,
"max_validity_days": 199,
"purchase_end_date": "2027-03-21",
"reissue_count": 0
}
}
Sertifika İndir
GET /certificate/{order_id}/download
{
"success": true,
"certificate": {
"domain": "example.com",
"valid_from": "2026-03-21",
"valid_till": "2026-10-05",
"certificate_pem": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----",
"ca_bundle": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----"
}
}
Sertifika henüz düzenlenmediyse 404 döner. Özel anahtar (private key) API tarafından üretilmez ve saklanmaz; CSR'ı oluştururken ürettiğiniz anahtarı kullanırsınız.
İstatistikler
GET /stats
Bayi hesabınıza ait sipariş sayılarını ve grafik verilerini döndürür. total_revenue ve monthly_revenue, ödenmiş siparişlerinizin KDV dahil toplamıdır.
{
"success": true,
"stats": {
"total_orders": 156,
"active_orders": 89,
"pending_orders": 3,
"total_revenue": 15420.00,
"monthly_revenue": 2340.00,
"credit_balance": 1250.00
},
"charts": {
"daily_sales": [
{ "date": "2026-02-13", "orders": 5, "revenue": 245.50 },
{ "date": "2026-02-14", "orders": 3, "revenue": 189.97 }
],
"brand_distribution": [
{ "brand": "Sectigo", "count": 78 },
{ "brand": "DigiCert", "count": 45 }
],
"status_distribution": {
"completed": 89,
"pending": 3,
"processing": 5,
"cancelled": 12
}
}
}
Hesap Bilgileri
GET /account
GET /me aynı yanıtı döndürür.
{
"success": true,
"id": 42,
"name": "Bayi Adı",
"email": "bayi@example.com",
"company": "Örnek Şirket Ltd.",
"phone": "+90 212 000 00 00",
"discount_rate": 0,
"credit_balance": 1234.41,
"credit_limit": 0,
"currency": "USD",
"tax_rate": 20,
"status": "active",
"api_status": "active",
"stats": { "total_orders": 156 },
"created_at": "2025-01-15 09:00:00"
}
Hata Kodları
| Kod |
Anlam |
Açıklama |
| 400 |
Bad Request |
Geçersiz veya eksik parametreler |
| 401 |
Unauthorized |
Geçersiz API anahtarı veya API erişimi kapalı |
| 402 |
Payment Required |
Bakiye / kredi limiti yetersiz veya sipariş ödenmemiş |
| 403 |
Forbidden |
Bayi grubu tanımsız veya ürüne erişim yok |
| 404 |
Not Found |
Kaynak bulunamadı (sipariş, sertifika) |
| 405 |
Method Not Allowed |
HTTP metodu bu endpoint için desteklenmiyor |
| 409 |
Conflict |
İşlem siparişin mevcut durumunda yapılamaz (ör. yayınlanmış sertifikanın iptali, zaten yapılandırılmış sipariş, aynı sipariş için süren başka bir işlem) |
| 429 |
Too Many Requests |
İstek sınırı aşıldı (dakikada 60 istek); Retry-After başlığına bakın |
| 500 |
Server Error |
Sunucu hatası |
Hata Yanıtı
{
"success": false,
"error": "Yetersiz bakiye. Sipariş tutarı: USD 15.59. Mevcut bakiye: USD 10.00. Lütfen kredi yükleyin."
}
Kod Örnekleri
<?php
class SslApiClient {
private $apiKey;
private $baseUrl = 'https://www.sslsertifikasi.com.tr/api/reseller';
public function __construct($apiKey) {
$this->apiKey = $apiKey;
}
private function request($method, $endpoint, $data = null) {
$ch = curl_init($this->baseUrl . $endpoint);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'X-API-Key: ' . $this->apiKey
]
]);
if ($method === 'POST') {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
}
if ($method === 'PUT') {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
}
if ($method === 'DELETE') {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
}
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return json_decode($response, true);
}
// Ürünler
public function getProducts($filters = []) {
$query = $filters ? '?' . http_build_query($filters) : '';
return $this->request('GET', '/products' . $query);
}
public function getProduct($id) {
return $this->request('GET', '/products/' . $id);
}
// Siparişler
public function getOrders($filters = []) {
$query = $filters ? '?' . http_build_query($filters) : '';
return $this->request('GET', '/orders' . $query);
}
public function createOrder($data) {
return $this->request('POST', '/orders', $data);
}
public function cancelOrder($id) {
return $this->request('PUT', '/orders/' . $id, ['action' => 'cancel']);
}
// Faturalar
public function getInvoices($status = '') {
$query = $status ? '?status=' . $status : '';
return $this->request('GET', '/invoices' . $query);
}
// Kredi
public function getCredits() {
return $this->request('GET', '/credits');
}
public function payWithCredit($orderId) {
return $this->request('POST', '/credits', ['order_id' => $orderId]);
}
// Sertifika
public function getCertificateStatus($orderId) {
return $this->request('GET', '/certificate/' . $orderId);
}
public function downloadCertificate($orderId) {
return $this->request('GET', '/certificate/' . $orderId . '/download');
}
// Hesap & İstatistik
public function getAccount() { return $this->request('GET', '/account'); }
public function getBalance() { return $this->request('GET', '/balance'); }
public function getStats() { return $this->request('GET', '/stats'); }
}
// ─── Kullanım Örnekleri ───
$client = new SslApiClient('YOUR_API_KEY');
// 1. Ürünleri listele
$products = $client->getProducts(['brand' => 'Sectigo', 'validation' => 'dv']);
// 2. Sipariş oluştur (kredi bakiyesinden otomatik kesilir)
$order = $client->createOrder([
'product_id' => 1,
'domain' => 'example.com',
'period' => 12
]);
// 3. Sipariş oluşturulurken ödenir; tutar KDV dahildir
if ($order['success']) {
echo "Sipariş: " . $order['order_number'] . "\n";
echo "Tutar: " . $order['total'] . " " . $order['currency'] . "\n";
echo "Kalan bakiye: " . $order['new_balance'] . "\n";
// Sonraki adım: kendi sunucunuzda ürettiğiniz CSR ile POST /ssl/configure
// (order_id, csr, dcv_method) — ardından GET /ssl/{order_id} ile doğrulama talimatlarını alın.
}
// 4. Sertifika indir
$cert = $client->downloadCertificate(12345);
if ($cert['success']) {
file_put_contents('certificate.pem', $cert['certificate']['certificate_pem']);
file_put_contents('ca-bundle.pem', $cert['certificate']['ca_bundle']);
}
?>
import requests
class SslApiClient:
def __init__(self, api_key):
self.api_key = api_key
self.base_url = 'https://www.sslsertifikasi.com.tr/api/reseller'
self.headers = {
'Content-Type': 'application/json',
'X-API-Key': api_key
}
def get_products(self, **filters):
return requests.get(f'{self.base_url}/products', params=filters, headers=self.headers).json()
def create_order(self, data):
return requests.post(f'{self.base_url}/orders', json=data, headers=self.headers).json()
def cancel_order(self, order_id):
return requests.put(f'{self.base_url}/orders/{order_id}', json={'action': 'cancel'}, headers=self.headers).json()
def get_invoices(self, status=''):
params = {'status': status} if status else {}
return requests.get(f'{self.base_url}/invoices', params=params, headers=self.headers).json()
def configure_ssl(self, order_id, csr, dcv_method='dns'):
data = {'order_id': order_id, 'csr': csr, 'dcv_method': dcv_method}
return requests.post(f'{self.base_url}/ssl/configure', json=data, headers=self.headers).json()
def get_ssl_status(self, order_id):
return requests.get(f'{self.base_url}/ssl/{order_id}', headers=self.headers).json()
def reissue(self, order_id, csr=None):
data = {'order_id': order_id}
if csr:
data['csr'] = csr
return requests.post(f'{self.base_url}/ssl/reissue', json=data, headers=self.headers).json()
def get_certificate(self, order_id):
return requests.get(f'{self.base_url}/certificate/{order_id}', headers=self.headers).json()
def download_certificate(self, order_id):
return requests.get(f'{self.base_url}/certificate/{order_id}/download', headers=self.headers).json()
def get_stats(self):
return requests.get(f'{self.base_url}/stats', headers=self.headers).json()
def get_balance(self):
return requests.get(f'{self.base_url}/balance', headers=self.headers).json()
# ─── Kullanım ───
client = SslApiClient('YOUR_API_KEY')
# Ürünleri listele
products = client.get_products(brand='Sectigo', validation='dv')
for p in products.get('products', []):
print(f"{p['name']} - {p['reseller_price']} {p.get('currency', '')}")
# Sipariş oluştur (tutar bakiyeden düşülür, ayrıca ödeme isteği gerekmez)
order = client.create_order({
'product_id': 1,
'domain': 'example.com'
})
if order.get('success'):
print(f"Sipariş: {order['order_number']} | Tutar: {order['total']} | Bakiye: {order['new_balance']}")
# CSR'ı kendi sunucunuzda üretin, sonra yapılandırın
csr = open('example.com.csr').read()
result = client.configure_ssl(order['order_id'], csr, dcv_method='dns')
status = client.get_ssl_status(order['order_id'])
print(status.get('validation_details'))
else:
print('Hata:', order.get('error'))
const axios = require('axios');
class SslApiClient {
constructor(apiKey) {
this.client = axios.create({
baseURL: 'https://www.sslsertifikasi.com.tr/api/reseller',
headers: { 'Content-Type': 'application/json', 'X-API-Key': apiKey },
validateStatus: () => true // 4xx yanıtlarında da { success:false, error } gövdesini oku
});
}
async getProducts(filters = {}) {
return (await this.client.get('/products', { params: filters })).data;
}
async createOrder(data) {
return (await this.client.post('/orders', data)).data;
}
async cancelOrder(id) {
return (await this.client.put(`/orders/${id}`, { action: 'cancel' })).data;
}
async getInvoices(status = '') {
return (await this.client.get('/invoices', { params: { status } })).data;
}
async configureSsl(orderId, csr, dcvMethod = 'dns') {
return (await this.client.post('/ssl/configure', { order_id: orderId, csr, dcv_method: dcvMethod })).data;
}
async getSslStatus(orderId) {
return (await this.client.get(`/ssl/${orderId}`)).data;
}
async reissue(orderId, csr) {
return (await this.client.post('/ssl/reissue', csr ? { order_id: orderId, csr } : { order_id: orderId })).data;
}
async getCertificate(orderId) {
return (await this.client.get(`/certificate/${orderId}`)).data;
}
async downloadCertificate(orderId) {
return (await this.client.get(`/certificate/${orderId}/download`)).data;
}
async getStats() { return (await this.client.get('/stats')).data; }
async getBalance() { return (await this.client.get('/balance')).data; }
async getAccount() { return (await this.client.get('/account')).data; }
}
// ─── Kullanım ───
(async () => {
const client = new SslApiClient('YOUR_API_KEY');
// Ürünler
const { products } = await client.getProducts({ brand: 'Sectigo' });
products.forEach(p => console.log(`${p.name} - ${p.reseller_price} ${p.currency || ''}`));
// Sipariş (tutar bakiyeden düşülür, ayrıca ödeme isteği gerekmez)
const order = await client.createOrder({ product_id: 1, domain: 'example.com' });
if (order.success) {
console.log(`Sipariş: ${order.order_number} | Tutar: ${order.total}`);
// CSR'ı kendi sunucunuzda üretin, sonra yapılandırın
const csr = require('fs').readFileSync('example.com.csr', 'utf8');
await client.configureSsl(order.order_id, csr, 'dns');
const status = await client.getSslStatus(order.order_id);
console.log(status.validation_details);
} else {
console.error('Hata:', order.error);
}
// İstatistik
const stats = await client.getStats();
console.log(`Toplam sipariş: ${stats.stats.total_orders}`);
})();
# ─── Ürünler ───
curl -X GET "https://www.sslsertifikasi.com.tr/api/reseller/products?brand=Sectigo&validation=dv" \
-H "X-API-Key: YOUR_API_KEY"
# ─── Sipariş Oluştur ───
curl -X POST "https://www.sslsertifikasi.com.tr/api/reseller/orders" \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"product_id": 1,
"domain": "example.com",
"period": 12
}'
# ─── SSL Yapılandır (CSR kendi sunucunuzda üretilir) ───
curl -X POST "https://www.sslsertifikasi.com.tr/api/reseller/ssl/configure" \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{ "order_id": 12345, "csr": "-----BEGIN CERTIFICATE REQUEST-----\n...", "dcv_method": "dns" }'
# ─── SSL Durumu / Doğrulama Talimatları ───
curl -X GET "https://www.sslsertifikasi.com.tr/api/reseller/ssl/12345" \
-H "X-API-Key: YOUR_API_KEY"
# ─── Yeniden Düzenle (Reissue) ───
curl -X POST "https://www.sslsertifikasi.com.tr/api/reseller/ssl/reissue" \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{ "order_id": 12345 }'
# ─── Sipariş İptal ───
curl -X PUT "https://www.sslsertifikasi.com.tr/api/reseller/orders/12345" \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{ "action": "cancel" }'
# ─── Faturalar ───
curl -X GET "https://www.sslsertifikasi.com.tr/api/reseller/invoices?status=paid" \
-H "X-API-Key: YOUR_API_KEY"
# ─── Sertifika Durumu ───
curl -X GET "https://www.sslsertifikasi.com.tr/api/reseller/certificate/12345" \
-H "X-API-Key: YOUR_API_KEY"
# ─── Sertifika İndir ───
curl -X GET "https://www.sslsertifikasi.com.tr/api/reseller/certificate/12345/download" \
-H "X-API-Key: YOUR_API_KEY"
# ─── İstatistikler ───
curl -X GET "https://www.sslsertifikasi.com.tr/api/reseller/stats" \
-H "X-API-Key: YOUR_API_KEY"
# ─── Bakiye ───
curl -X GET "https://www.sslsertifikasi.com.tr/api/reseller/balance" \
-H "X-API-Key: YOUR_API_KEY"
# ─── Hesap Bilgileri ───
curl -X GET "https://www.sslsertifikasi.com.tr/api/reseller/account" \
-H "X-API-Key: YOUR_API_KEY"
WHMCS Modülü
WHMCS üzerinden SSL Sertifikası ürünlerini kolayca satabilirsiniz. Addon + Server modül yapısı ile tam entegrasyon.
WHMCS Addon + Server Module v5.11.0
Tam yönetim paneli, ürün oluşturucu, sipariş senkronizasyonu ve otomatik provizyon.
- WHMCS 7.x / 8.x / 9.x uyumlu
- Addon Panel: Ürün oluşturucu, sipariş yönetimi, istatistikler
- Toplu ürün ekleme ve otomatik fiyatlandırma
- Cron ile otomatik sipariş senkronizasyonu
- Admin ve müşteri arayüzü
- Sunucu ekleme gerektirmez - API gömülü gelir
Kurulum
- ZIP dosyasını indirin ve açın
- İki klasörü WHMCS dizininize kopyalayın:
modules/addons/datassl → Addon paneli
modules/servers/datassl → Provizyon modülü
- WHMCS Admin → Setup → Addon Modules → "DATASSL SSL Certificates" → Activate
- Access Control'dan admin rollerini seçin
- Addons → DATASSL → Ürün Oluşturucu ile ürünleri ekleyin
Sunucu ekleme, API anahtarı girişi gerektirmez. API bilgileri modül içinde gömülü olarak gelir.
WiseCP Modülü
WiseCP / Coremio üzerinden SSL Sertifikası ürünlerini satın. Ürün modülü ile sipariş, doğrulama ve teslim otomasyonu.
WiseCP Product Module v2.2.0
Sipariş oluşturma, CSR yapılandırma, DCV doğrulama ve sertifika teslimi tek modülde.
- WiseCP / Coremio 3.x+ uyumlu
- Müşteri panelinden CSR yapılandırma ve sertifika indirme
- DCV doğrulama (E-posta / HTTP / DNS) desteği
- SAN (çoklu domain) ve çoklu yıl desteği
- Admin panelinden sipariş yönetimi ve senkronizasyon
- Sunucu ekleme gerektirmez - API gömülü gelir
Kurulum
- ZIP dosyasını indirin ve açın
DATASSL klasörünü WiseCP dizininize kopyalayın:
coremio/modules/Product/DATASSL → Ürün modülü
- WiseCP Admin → Ürünler / Hizmetler → yeni ürün eklerken DATASSL modülünü seçin
- Sunucu Ayarları → Bağlantı Testi ile modülü doğrulayın
- Ürünü kaydedin - sipariş geldiğinde otomatik provizyon başlar
Sunucu ekleme, API anahtarı girişi gerektirmez. API bilgileri modül içinde gömülü olarak gelir.