Modül Kataloğu

10 görüntülenme Markdown

Hangi modüllerin bulunduğunu, hangilerinin çalıştığını yöneten beş uç.

Genel Bakış

WISECP'nin dış dünyayla konuştuğu her yer bir modüldür: ödeme alma, alan adı kaydı, posta gönderme, kısa mesaj, dolandırıcılık denetimi ve ürün türleri. Bu makale hangi modüller var, hangileri çalışıyor sorusunu yanıtlar.

Altı grup vardır ve seçim biçimleri aynı değildir. Ödeme ve ürün grupları aynı anda birden çok modül kullanır; posta, alan adı ve kısa mesaj grupları tek bir modül seçer. Dolandırıcılık grubu ise her modülü tek tek açar.

Bu ayrım uçlara da yansır: grup seçimi bir uçta, tek tek açma başka bir uçta durur. Hangisinin geçerli olduğunu grup belirler.

Referans

Bir Grubun Modüllerini Listeleme

get/api/v1/admin/modules/{group}
Modules/GetModules admin

Bir gruptaki modülleri ve grubun etkin seçimlerini döndürür.

Sorgu 2
statusstringSüzgeç: active ya da passive.
searchstringModül adında ve anahtarında arar.
Dönen alanlar data[] — 8 + meta — 6
keystringModülün anahtarı. Adres yollarında bu değer geçer.
namestringModülün adı.
descriptionstringKısa açıklaması.
authorstringYazarı.
versionstringSürümü.
activeboolKurulumda kullanılıyor mu.
premiumboolÜcretli bir modül mü.
logostringLogosunun tam adresi.
countintDönen modül sayısı. Meta altında döner.
groupstringGrubun anahtarı.
activestring[]Kurulumun kullandığı modül anahtarları.
card_storage_modulestringKart saklayan ödeme modülü. Yalnız ödeme grubunda gelir.
default_modulestringGrubun tek seçimi. Posta, kısa mesaj ve alan adı gruplarında gelir.
intl_modulestringYurt dışı kısa mesaj modülü. Yalnız kısa mesaj grubunda gelir.
Hatalar 2
unknown_group404Böyle bir modül grubu yok.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/modules/payment?status=active' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch('https://panel.ornek.com/api/v1/admin/modules/payment?status=active', {
  headers: { Authorization: `Bearer ${apiKey}` },
});

const { data, meta } = await res.json();
console.log(meta.active, meta.card_storage_module);
$ch = curl_init('https://panel.ornek.com/api/v1/admin/modules/payment?status=active');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Alti grup vardir: payment, registrars, mail, sms, fraud, product. Baskasi 404 verir.
foreach (['payment', 'registrars', 'mail', 'sms', 'fraud', 'product'] as $g)
    $all[$g] = Api::Modules()->GetModules(['group' => $g])['meta']['active'];

Tek Modülü Okuma

get/api/v1/admin/modules/{group}/{module}
Modules/GetModule admin

Modülün özetini, alanlarını ve yeteneklerini döndürür.

Dönen alanlar data — 11
keystringModülün anahtarı. Adres yollarında bu değer geçer.
namestringModülün adı.
descriptionstringKısa açıklaması.
authorstringYazarı.
versionstringSürümü.
activeboolKurulumda kullanılıyor mu.
premiumboolÜcretli bir modül mü.
logostringLogosunun tam adresi.
fieldsobjectYapılandırma alanları. Parola tipindekilerin değeri maskelenir.
typestringAlanın türü.
namestringAlanın etiketi.
descriptionstringAlanın açıklaması.
valuestringGeçerli değeri.
optionsarraySeçenekli alanlarda seçenek listesi.
checkedboolİşaretli alanlarda seçili mi.
capabilitiesobjectModülün destekledikleri: yapılandırma alanı, bağlantı testi ve kayıt tutma.
payment_optionsobjectÖdeme ayarları. Yalnız ödeme grubunda gelir.
Hatalar 3
unknown_group404Böyle bir modül grubu yok.
module_not_found404Modül bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/modules/payment/Stripe' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch(`https://panel.ornek.com/api/v1/admin/modules/${group}/${key}`, {
  headers: { Authorization: `Bearer ${apiKey}` },
});

const { data } = await res.json();
if (data.capabilities.has_test_connection) showTestButton();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/modules/' . $group . '/' . $key);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Bir formu once yeteneklere gore kurun: her modulde alan da baglanti testi de yoktur.
$m = Api::Modules()->GetModule(['group' => $group, 'module' => $key])['data'];
if (! $m['capabilities']['has_config_fields']) $form = null;

Grubun Etkin Modüllerini Seçme

put/api/v1/admin/modules/{group}/activation
Modules/UpdateModuleActivation admin küme yerine geçer

Bir gruptaki etkin modül seçimini yazar.

Gövde 8
modulesstring[]Etkin olacak modül anahtarları. Ödeme ve ürün gruplarında; gönderilen liste mevcudun yerine geçer.
card_storage_modulestringKart saklayacak ödeme modülü. Etkin listede değilse oraya eklenir.
modulestringTek seçim. Posta, alan adı ve kısa mesaj gruplarında; boş göndermek seçimi kaldırır.
module_intlstringYurt dışı kısa mesaj modülü.
intl_sms_serviceintYurt dışı kısa mesaj kanalı.
sms_api_serviceintKısa mesaj arayüzü kanalı.
turkey_sms_serviceintTürkiye kısa mesaj kanalı. Kurulumun varsayılan dili Türkçe ise geçerlidir.
Dönen alanlar data — 6
groupstringGrubun anahtarı.
activestring[]Şimdi etkin olan anahtarlar.
activatedstring[]Bu çağrıyla açılanlar.
deactivatedstring[]Bu çağrıyla kapananlar.
card_storage_modulestringKart saklayan ödeme modülü.
modulestringSeçilen tek modül.
Hatalar 5
unknown_group404Böyle bir modül grubu yok.
module_not_found422Gönderilen anahtarlardan biri o grupta yok.
activation_not_supported422Grup toplu seçimi desteklemiyor.
blocked_by_gate422Bir kanca açmayı reddetti.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/modules/payment/activation' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"modules":["Free","Stripe"],"card_storage_module":"Stripe"}'
const now = await fetch('https://panel.ornek.com/api/v1/admin/modules/payment', {
  headers: { Authorization: `Bearer ${apiKey}` },
}).then((r) => r.json());

const res = await fetch('https://panel.ornek.com/api/v1/admin/modules/payment/activation', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ modules: [...now.meta.active, 'Stripe'] }),
});
$ch = curl_init('https://panel.ornek.com/api/v1/admin/modules/payment/activation');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['modules' => $keys]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Liste YERINE GECER: tek anahtar gondermek diger butun odeme modullerini kapatir.
$live = Api::Modules()->GetModules(['group' => 'payment'])['meta']['active'];
Api::Modules()->UpdateModuleActivation([
    'group' => 'payment', 'modules' => array_values(array_unique([...$live, 'Stripe'])),
]);

Tek Modülü Açma ve Kapatma

put/api/v1/admin/modules/{group}/{module}/status
Modules/SetModuleStatus admin iki grup

Dolandırıcılık ve ürün modüllerini tek tek açar ya da kapatır.

Gövde 1
enabledintreqYeni durum: 1 açık, 0 kapalı.
Dönen alanlar data — 11
dataobjectModülün taze detayı. Okuma ucuyla aynı şekildedir.
Hatalar 6
unknown_group404Böyle bir modül grubu yok.
enabled_required422Durum alanı verilmedi.
not_supported422Grup tek tek açmayı desteklemiyor.
module_error422Modül açılmayı reddetti. Genelde eksik kimlik bilgisi.
blocked_by_gate422Bir kanca açmayı reddetti.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/modules/fraud/MaxMind/status' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"enabled":1}'
const res = await fetch(`https://panel.ornek.com/api/v1/admin/modules/${group}/${key}/status`, {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ enabled: 1 }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/modules/' . $group . '/' . $key . '/status');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['enabled' => 1]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Dolandiricilik modulunde ACMA once kimlik bilgilerini dogrular; ayarlari ONCE yazin.
Api::Modules()->UpdateModuleSettings([
    'group' => 'fraud', 'module' => $key, 'settings' => ['license_key' => $lic],
]);
Api::Modules()->SetModuleStatus(['group' => 'fraud', 'module' => $key, 'enabled' => 1]);

Modülü Kaldırma

delete/api/v1/admin/modules/{group}/{module}
Modules/DeleteModule admin dosyaları siler

Modülün dosyalarını sunucudan kaldırır.

Dönen alanlar data — 3
deletedboolSilme çalıştı mı.
groupstringGrubun anahtarı.
keystringSilinen modülün anahtarı.
Hatalar 5
unknown_group404Böyle bir modül grubu yok.
module_not_found404Modül bulunamadı.
blocked_by_gate422Bir kanca silmeyi reddetti.
removal_failed422Dosyalar kaldırılamadı. Kalanlar elle temizlenir.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/modules/payment/Stripe' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch(`https://panel.ornek.com/api/v1/admin/modules/${group}/${key}`, {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/modules/' . $group . '/' . $key);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'DELETE',
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Ayarlari ve kimlik bilgilerini de goturur; once yapilandirmayi disa aktarip saklayin.
$cfg = Api::Modules()->GetModuleConfig(['group' => $group, 'module' => $key])['data'];
file_put_contents("$key.json", json_encode($cfg));

Api::Modules()->DeleteModule(['group' => $group, 'module' => $key]);

Tuzaklar

Grup seçimi mevcut kümenin yerine geçer

Ödeme ve ürün gruplarında gönderdiğiniz liste eskisinin yerine geçer. Tek bir modül eklemek isterken yalnız onu göndermek diğerlerini kapatır ve müşteri o ödeme yöntemlerini bir daha göremez. Önce listeyi okuyup üzerine ekleyin.

Her grup aynı uçtan açılmaz

Dolandırıcılık modülleri grup seçimi ucunu kabul etmez ve activation_not_supported döner; onlar tek tek açılır. Ürün grubu ise her iki yolu da kabul eder. Genel bir yönetim aracı yazıyorsanız grubu önce sınıflandırın.

Kart saklama seçimi modülü de açar

Kart saklayacak ödeme modülünü belirtmek, o modül etkin listede olmasa bile listeye eklenmesine yol açar. Yani tek bir alanı yazmak bir ödeme yöntemini müşteriye açabilir. Yanıttaki etkin listeyi okuyup beklediğiniz kümeyle karşılaştırın.

Açmak kimlik bilgisi ister

Dolandırıcılık modülünü açmak kimlik bilgilerini doğrular; eksikse çağrı module_error ile döner. Kurulum sırasında sıra bu yüzden önemlidir: önce ayarları yazın, sonra açın. Ters sıra çalışmaz ve hata modülün kendisinden gelir.

Silme dosyaları sunucudan kaldırır

Silme ucu modülün dizinini siler; ayarları ve kimlik bilgileri de gider. Dosyalar kısmen kaldırılabilirse removal_failed döner ve geriye yarım bir dizin kalır. Silmeden önce yapılandırmayı dışa aktarın.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.