Skip to main content

Özel Bir Registrar Entegrasyonu Oluşturma

Domain Seller addon'ı bir Entegrasyon Kaydı (Integration Registry) yapısını kullanır. Her registrar, Domain_Selling_Capability arayüzünü uygulayan ve wu_domain_seller_register_capabilities action hook'u üzerinden kendini kaydeden bir PHP sınıfıdır.

Bu rehber, özel bir registrar'ı sisteme nasıl bağlayacağınızı gösteriyor.

Arayüz (The interface)

Sınıfınızın WP_Ultimo\Integrations\Capabilities\Domain_Selling_Capability arayüzünü uygulaması ve WP_Ultimo\Integrations\Base_Capability_Module sınıfından miras alması gerekir.

Gerekli metotlar:

namespace My\Plugin\Capabilities;

use WP_Ultimo\Integrations\Base_Capability_Module;
use WP_Ultimo\Integrations\Capabilities\Domain_Selling_Capability;

class My_Registrar_Selling extends Base_Capability_Module implements Domain_Selling_Capability {

// --- Gerekli kimlik metotları (Base_Capability_Module'dan) ---

public function get_capability_id(): string {
return 'domain-selling'; // her zaman 'domain-selling'
}

public function get_title(): string {
return __('Domain Selling', 'my-plugin');
}

public function get_explainer_lines(): array {
return [
'will' => [__('Domain kaydını My Registrar üzerinden etkinleştirin.', 'my-plugin')],
'will_not' => [],
];
}

// --- Temel gerekli metotlar (Domain_Selling_Capability'den) ---

/** Mevcut tüm TLD'leri ve toptan fiyatlandırmayı çekin. */
public function sync_tlds(): array { ... }

/** $domain_name'in $tlds genelindeki uygunluğunu kontrol edin. */
public function search_domains(string $domain_name, array $tlds = []): array { ... }

/** Bir TLD için N yıl coğrafi toptan fiyatını alın. */
public function get_domain_pricing(string $tld, int $years = 1): array { ... }

/** Bir domain kaydı yapın. Başarılı olursa ['success' => true, 'expiry_date' => '...'] döndürür. */
public function register_domain(string $domain_name, array $registrant_info, int $years = 1): array { ... }

/** Bir domaini N yıl için yenileyin. */
public function renew_domain(string $domain_name, int $years = 1): array { ... }

/** Kayıt durumunu, bitiş tarihini, nameserver'ları alın. */
public function get_domain_info(string $domain_name): array { ... }

/** API kimlik bilgilerini ve bağlantıyı test edin. */
public function test_connection(): array { ... }
}

Opsiyonel metotlar

Ek özellikler açmak için bunları uygulayın. Addon, desteği method_exists() ile algılar:

MetotAçılan Özellik
supports_whois_privacy(): boolÜrün ayarlarında WHOIS gizlilik seçeneği
enable_whois_privacy(string $domain_name): arrayKayıt sırasında gizliliği otomatik etkinleştirme
get_dns_records(string $domain_name): arrayMüşteri DNS görünüm sekmesi
add_dns_record(string $domain_name, array $record_data): arrayMüşterinin DNS kaydı eklemesi
update_dns_record(string $domain, string $record_id, array $record_data): arrayMüşterinin DNS kaydını düzenlemesi
delete_dns_record(string $domain, string $record_id, array $data): arrayMüşterinin DNS kaydını silmesi
update_nameservers(string $domain_name, array $nameservers): arrayNameserver yönetimi
get_epp_code(string $domain_name): arrayDomain transferi (giden)
transfer_domain(string $domain, string $auth_code, array $registrant_info, array $options): arrayDomain transferi (gelen)

Dönüş Değeri Kuralları

Tüm metotlar, en az bir success anahtarı içeren bir dizi döndürür:

// Başarı
return ['success' => true, 'data' => [...]];

// Başarısızlık
return ['success' => false, 'message' => 'Okunabilir hata mesajı'];

Yeteneğinizi Kaydetme

Sınıfınızı wu_domain_seller_register_capabilities action'ını kullanarak kaydedin:

add_action('wu_domain_seller_register_capabilities', function(\WP_Ultimo\Integrations\Integration_Registry $registry) {
$registry->add_capability('my-registrar', new \My\Plugin\Capabilities\My_Registrar_Selling());
});

add_capability() fonksiyonunun ilk argümanı sağlayıcı kimliği (provider ID)'dir — bu, ayarlar, ürün yapılandırması ve log kanallarında registrar'ınızı tanımlamak için kullanılan küçük harfli bir slug'dır. Benzersiz bir şey kullanın (örneğin, şirketinizin slug'ı).


Sihirbaz'a Kimlik Bilgisi Alanları Ekleme

Yöneticilerin kurulum sihirbazı üzerinden kimlik bilgilerini girmesine izin vermek için entegrasyonunuzu kaydedin:

add_action('wu_domain_seller_register_integrations', function(\WP_Ultimo\Integrations\Integration_Registry $registry) {
$registry->add_integration('my-registrar', [
'name' => __('My Registrar', 'my-plugin'),
'fields' => [
[
'id' => 'my_registrar_api_key',
'label' => __('API Key', 'my-plugin'),
'type' => 'text',
],
[
'id' => 'my_registrar_api_secret',
'label' => __('API Secret', 'my-plugin'),
'type' => 'password',
],
],
]);
});

Kimlik bilgileri, alan ID'leri anahtar olarak kullanılarak ağ seçenekleri (network options) olarak depolanır. Bunları, wu_get_setting('my_registrar_api_key') ile yetenek sınıfınızda alabilirsiniz.


Kayıt Sonrası İşlemler İçin Hook'lar

Webhook'ları tetiklemek, hizmet sağlamak (provisioning), bildirimler veya CRM güncellemeleri yapmak için bu action'ları kullanın:

// Başarılı domain kaydından sonra
add_action('wu_domain_registration_completed', function($payment, $registration_data, $result) {
// $registration_data: domain_name, provider_id, years, expiry_date, customer_id
// $result: ham registrar yanıtı
my_crm_update_domain($registration_data['domain_name'], $registration_data['customer_id']);
}, 10, 3);

// Kayıt başarısız olduğunda
add_action('wu_domain_registration_failed', function($payment, $registration_data, $error_message) {
my_alert_team("Domain kaydı başarısız oldu: {$registration_data['domain_name']}{$error_message}");
}, 10, 3);

// Başarılı yenilemeden sonra
add_action('wu_domain_renewal_completed', function($payment, $renewal_data, $result) {
// Faturalandırma sisteminizi güncelleyin, makbuz gönderin vb.
}, 10, 3);

// Yenileme başarısız olduğunda
add_action('wu_domain_renewal_failed', function($payment, $renewal_data, $error_message) {
// Uyarı verin, yeniden deneme mantığı vb.
}, 10, 3);

// Domain transferi tamamlandıktan sonra
add_action('wu_domain_transfer_completed', function($domain, $transfer_data) {
// $domain bir WP_Ultimo\Models\Domain nesnesidir
}, 10, 2);

// SES DKIM doğrulaması yapıldıktan sonra (eğer SES entegrasyonu aktifse)
add_action('wu_domain_ses_verified', function($domain) {
// $domain bir WP_Ultimo\Models\Domain nesnesidir
});

Loglama

wu_log_add() kullanarak sağlayıcınıza özel log kanalına yazın:

wu_log_add('domain-seller-my-registrar', "{$domain_name} başarıyla kaydedildi", 'info');
wu_log_add('domain-seller-my-registrar', "Kayıt başarısız oldu: {$error}", 'error');

Loglar Network Admin › Ultimate Multisite › Logs › domain-seller-my-registrar altında görünür.