Sipariş Verme
Sepeti hazırlayan ve siparişi kuran beş uç: ürün, alan adı, kupon ve oluşturma.
Genel Bakış
Sipariş kurmak tek bir çağrı değildir. Sepetteki her satır ürünün fiyatına, ek hizmetlerine ve sorularına dayanır; alan adı satırı ayrıca kayıt kuruluşuna sorulmuş olmalıdır. Bu makale o hazırlığı ve sonundaki oluşturmayı kapsar.
Sıra şudur: ürün bilgisi ile satırı kurun, alan adı varsa müsaitliğini sorun, kupon seçecekseniz doğrulayın, sonra siparişi oluşturun. Her adım bir sonrakinin girdisini üretir.
Oluşturma çağrısı yalnız bir kayıt açmaz: hizmetleri de doğurur ve istenirse faturayı keser. Bu yüzden geri alması pahalıdır; hazırlığı atlamayın.
Referans
Sipariş Formu İçin Ürün Bilgisi
Bir ürünün fiyatlarını, ek hizmetlerini, ölçümlerini ve sorularını döndürür.
curl 'https://panel.ornek.com/api/v1/admin/orders/product-info?product_id=12&client_id=94' \
-H "Authorization: Bearer $API_KEY"const url = new URL('https://panel.ornek.com/api/v1/admin/orders/product-info');
url.searchParams.set('product_id', productId);
url.searchParams.set('client_id', clientId);
const res = await fetch(url, { headers: { Authorization: `Bearer ${apiKey}` } });
const { data } = await res.json();
const required = data.requirements.filter((r) => r.properties.compulsory);$qs = http_build_query(['product_id' => $productId, 'client_id' => $clientId]);
$ch = curl_init('https://panel.ornek.com/api/v1/admin/orders/product-info?' . $qs);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Zorunlu sorular BURADA yazar; siparisi kurmadan once bu listeyi doldurun.
$info = Api::Orders()->GetProductInfo([], ['product_id' => $pid, 'client_id' => $cid])['data'];
$must = array_filter($info['requirements'], fn ($r) => $r['properties']['compulsory'] ?? false);Alan Adı Müsaitliğini Sorma
Alan adının alınabilirliğini ve uzantının fiyatlarını döndürür.
curl -X POST 'https://panel.ornek.com/api/v1/admin/orders/check-domain' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"domain":"example.com","client_id":94}'const res = await fetch('https://panel.ornek.com/api/v1/admin/orders/check-domain', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ domain, client_id: clientId }),
});
const { data } = await res.json();
if (! data.available) suggestAlternatives();$ch = curl_init('https://panel.ornek.com/api/v1/admin/orders/check-domain');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['domain' => $domain, 'client_id' => $cid]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Transferde kod gerekip gerekmedigi uzantiya baglidir; siparisten ONCE burada ogrenin.
$d = Api::Orders()->CheckDomain(['domain' => $domain, 'client_id' => $cid])['data'];
$needsCode = (int) $d['tld_info']['epp_code'] === 1;Kuponları Listeleme
Siparişe uygulanabilecek kuponları kurallarıyla döndürür.
curl 'https://panel.ornek.com/api/v1/admin/orders/coupons?client_id=94' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/orders/coupons?client_id=' + clientId, {
headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();
const usable = data.filter((c) => ! c.disabled);$ch = curl_init('https://panel.ornek.com/api/v1/admin/orders/coupons?client_id=' . $cid);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Musteri numarasi GECMEZSENIZ 'disabled' alani eksik kalir ve kullanilamaz kupon acik gorunur.
$rows = Api::Orders()->GetCoupons([], ['client_id' => $cid])['data'];
$usable = array_filter($rows, fn ($c) => ! $c['disabled']);Kuponları Doğrulama
Seçilen kuponların bu sepette geçerli olup olmadığını söyler.
curl -X POST 'https://panel.ornek.com/api/v1/admin/orders/validate-coupons' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"coupon_ids":[19],"client_id":94,"cart":{"subtotal":100,"user_currency":4}}'const res = await fetch('https://panel.ornek.com/api/v1/admin/orders/validate-coupons', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
coupon_ids: picked,
client_id: clientId,
cart: { items, subtotal, user_currency: currencyId, is_dealer: false },
}),
});
const { data } = await res.json();
data.invalid.forEach((c) => showReason(c.code, c.reason));$ch = curl_init('https://panel.ornek.com/api/v1/admin/orders/validate-coupons');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'coupon_ids' => $picked, 'client_id' => $cid, 'cart' => $cart,
]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Sepeti GECMEZSENIZ asgari tutar ve urun kosullari denetlenemez; kupon burada gecer, siparista dusar.
$out = Api::Orders()->ValidateCoupons([
'coupon_ids' => $picked, 'client_id' => $cid, 'cart' => $cart,
])['data'];
$use = $out['kept'];Sipariş Oluşturma
Sepet kalemlerinden siparişi kurar ve hizmetleri doğurur.
none gönderilse de siparişe eklenir. İlk dönem tutarı 0 olur, yenilemeler ek hizmet fiyatından faturalanır.default ya da custom. Liste olmadan hiç gönderilmezse varsayılan zincir uygulanır: aynı alan adı için sipariş edilen hosting hizmeti, sonra müşterinin varsayılan ad sunucuları, sonra sizinkiler, sonra servis sağlayıcının kendi ad sunucuları. Onsuz gönderilen bir liste custom sayılır.default ile yok sayılır.details.codes içindedir; hiçbir kayıt oluşmaz.details.products içindedir; sipariş sıfır tutarla kesilmek yerine reddedilir.details.index ile details.domain kalemi, details.host reddedilen sunucu adını gösterir. Hiçbir kayıt oluşmaz.curl -X POST 'https://panel.ornek.com/api/v1/admin/orders' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"client_id":94,"generate_invoice":true,"products":[{"group":"hosting","product_id":12,"billing_cycle":"monthly","quantity":1}]}'const res = await fetch('https://panel.ornek.com/api/v1/admin/orders', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
client_id: clientId,
status: 'waiting',
generate_invoice: true,
invoice_status: 'unpaid',
products: [{
group: 'hosting',
product_id: 12,
billing_cycle: 'monthly',
quantity: 1,
requirements: answers,
}],
}),
});
const { data } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/orders');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'client_id' => $cid,
'generate_invoice' => true,
'products' => $lines,
]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Gonderdiginiz durum KORUNMAZ: olusan hizmetlere gore yeniden hesaplanir, yaniti okuyun.
$order = Api::Orders()->CreateOrder([
'client_id' => $cid, 'status' => 'waiting', 'products' => $lines,
])['data'];
$real = $order['status'];Tuzaklar
Sipariş durumunu gövdede belirtseniz bile oluşturma, doğan hizmetlere göre durumu yeniden hesaplar. Bekliyor diye gönderdiğiniz bir sipariş etkin dönebilir. Ne olduğunu yanıttaki durumdan okuyun, gönderdiğinizi varsaymayın.
Kupon listesindeki kullanılamama gerekçeleri ancak müşteri numarası gönderildiğinde dolar. Müşterisiz çağrıda yalnız temel durum görünür ve o müşteriye kapalı bir kupon açık sanılır. Sepet koşulları için ayrıca doğrulama ucuna sepeti de geçin.
Doğrulama ucu asgari tutar, gerekli ürünler ve döngü uyumunu sepetten okur. Sepeti geçmezseniz bu üç kural denetlenmez: kupon burada geçerli görünür, sipariş kurulurken düşer. Doğruladığınız sepetle sipariş verdiğiniz sepet aynı olmalıdır.
Alan adı transferinde kod gerekip gerekmediği uzantının ayarında yazar ve müsaitlik yanıtında gelir. Gereken yerde kodu göndermemek siparişi kurar ama transferi başlatmaz. Satırı hazırlamadan önce uzantı bilgisini okuyun.
Bir ürünün hangi soruları zorunlu kıldığı ürün bilgisi ucundaki kurallar altında yazar. Oluşturma çağrısı eksik yanıtı kendiliğinden yakalamayabilir ve hizmet sağlayıcıya eksik veriyle gider. Satırı kurarken zorunlu listesini süzün.
Alan adı sorgusu kayıt kuruluşuna canlı gider ve yanıt o anın durumudur. Sorgu ile sipariş arasında geçen sürede ad başkasınca alınabilir; o durumda sipariş kurulur ama kayıt başarısız olur. Uzun süren sepetlerde siparişten hemen önce yeniden sorun.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.