PHP sumber terbuka
Registrar API
Satu pustaka PHP untuk mengelola domain di NameSilo, GoDaddy, Namecheap, dan Dynadot — plus adaptor Cloudflare untuk zona, DNS, dan cache. Cek ketersediaan, registrasi, perpanjangan, transfer, catatan DNS, dan nameserver, semuanya lewat satu antarmuka yang konsisten.
composer require josuamarcelc/registrar-api
Adaptor
Registrar yang didukung
Pilih adaptor berdasarkan nama brand. Semua adaptor memakai tanda tangan metode yang sama, jadi Anda bisa berganti registrar tanpa menulis ulang kode.
Demo Langsung
Cek ketersediaan domain
Menjalankan panggilan checkAvailability() sungguhan lewat adaptor NameSilo di sisi server. Masukkan hingga 10 domain dipisah dengan koma, spasi, atau baris baru. Dibatasi 10 pengecekan per 5 menit.
Mulai cepat
Tiga baris untuk panggilan yang bekerja
<?php
require __DIR__ . '/vendor/autoload.php';
use RegistrarAPI\RegistrarAPI;
$api = RegistrarAPI::make('namesilo', [
'api_key' => 'YOUR_NAMESILO_API_KEY'
]);
$result = $api->checkAvailability(['example.com', 'mybrand.io']);
print_r($result);
Kredensial
Konfigurasi per adaptor
Setiap adaptor menerima sebuah array konfigurasi. Di bawah ini kebutuhan minimum yang biasanya diperlukan.
NameSilo
RegistrarAPI::make('namesilo', [
'api_key' => 'YOUR_KEY',
]); GoDaddy
RegistrarAPI::make('godaddy', [
'api_key' => 'KEY',
'api_secret' => 'SECRET',
// optional: 'base' => 'https://api.godaddy.com/v1'
]); Namecheap
RegistrarAPI::make('namecheap', [
'api_user' => 'USERNAME',
'api_key' => 'KEY',
'client_ip' => 'SERVER_PUBLIC_IP',
// optional: 'base' => 'https://api.namecheap.com/xml.response'
]); Dynadot
RegistrarAPI::make('dynadot', [
'api_key' => 'KEY',
]); Metode
Operasi umum
Setiap adaptor menerapkan tanda tangan metode yang sama. Nilai kembalian berupa array asosiatif yang dinormalisasi.
// Availability
$api->checkAvailability(['example.com']);
// Lifecycle
$api->registerDomain('example.com', [
'years' => 1,
'privacy' => true,
'auto_renew' => true,
'registrant' => [ /* contact fields */ ],
]);
$api->renewDomain('example.com', 1);
$api->transferDomain('example.com', ['auth_code' => 'EPP']);
$api->getDomain('example.com');
// DNS records
$api->getDNS('example.com');
$api->setDNS('example.com', [
['type'=>'A', 'host'=>'@', 'value'=>'203.0.113.10', 'ttl'=>600],
['type'=>'CNAME','host'=>'www', 'value'=>'@', 'ttl'=>600],
]);
$api->addDNS('example.com', ['type'=>'TXT','host'=>'@','value'=>'v=spf1 -all','ttl'=>300]);
$api->delDNS('example.com', ['type'=>'TXT','host'=>'@']);
// Nameservers
$api->setNameServers('example.com', ['ns1.host.com','ns2.host.com']);
// Escape hatch — call any raw endpoint the adapter doesn't wrap
$api->raw('domains/suggestions?query=mybrand&limit=5');
Bentuk respons
Apa yang Anda dapatkan
bool — pengecekan sukses cepatcheckAvailability(){type,host,value,ttl,prio?} yang dikembalikan oleh getDNS()Bonus
Adaptor Cloudflare
Pustaka yang sama, bentuk yang sama, tetapi untuk zona, catatan DNS, purge cache, dan sakelar gratis (Always HTTPS, Auto HTTPS Rewrites, Brotli, Minify, Rocket Loader, Dev Mode).
$cf = RegistrarAPI::make('cloudflare', ['api_token' => 'CF_TOKEN']);
$cf->createZone('example.com');
$cf->setDNS('example.com', [
['type'=>'A','host'=>'@','value'=>'198.51.100.10','ttl'=>300,'proxied'=>true],
]);
$cf->purgeEverything('example.com'); Berkontribusi
Tambahkan registrar baru dalam satu file
Buat sebuah kelas di src/adapters/ yang meng-extend BaseAdapter lalu implementasikan metode abstraknya. Composer akan memuatnya secara otomatis.
namespace RegistrarAPI\Adapters;
use RegistrarAPI\Core\BaseAdapter;
class MyRegistrar extends BaseAdapter {
protected string $brand = 'myregistrar';
public function checkAvailability(array $domains): array { /* ... */ }
public function registerDomain(string $domain, array $opts): array { /* ... */ }
public function renewDomain(string $domain, int $years=1, array $opts=[]): array { /* ... */ }
public function transferDomain(string $domain, array $opts): array { /* ... */ }
public function getDomain(string $domain): array { /* ... */ }
public function getDNS(string $domain): array { /* ... */ }
public function setDNS(string $domain, array $records): array { /* ... */ }
public function addDNS(string $domain, array $record): array { /* ... */ }
public function delDNS(string $domain, array $selector): array { /* ... */ }
public function setNameServers(string $domain, array $nameservers): array { /* ... */ }
public function raw(string $op, array $params=[]): array { /* ... */ }
}