Müşteri Kayıt Ayarları

1.7k görüntülenme Markdown

Kayıt formunda nelerin sorulacağını ve hangi ek alanların bulunacağını yöneten yedi uç.

Genel Bakış

Bu yedi uç bir müşterinin kayıt olurken nelerin sorulacağını belirler. İki katman vardır: sistemin hazır alanları ve sizin eklediğiniz özel alanlar.

Hazır alanlarda her soru için ayrı ayrı üç şey ayarlanır: sorulsun mu, zorunlu mu ve müşteri sonradan değiştirebilsin mi. Bunlar bağımsız anahtarlardır; bir alanı zorunlu yapmak onu kendiliğinden sormaz.

Özel alanlar dile aittir: aynı alan her dilde ayrı bir kayıt olarak açılır ve kendi kimliğini taşır.

Referans

Kayıt Ayarlarını Getirme

get/api/v1/admin/settings/client
Settings/GetClientSettings admin hepsi sıfır ya da bir

Kayıt ve giriş akışında hangi alanların sorulduğunu ve zorunlu olduğunu döndürür.

Dönen alanlar data — 27
sign_in_statusintGirişin açık olup olmadığı.
sign_up_statusintKaydın açık olup olmadığı.
sign_up_email_verifyintE-postanın doğrulanmasının istenip istenmediği.
smart_namingintAd ve soyadın kendiliğinden düzeltilip düzeltilmediği.
crtacwshopintSipariş sırasında hesabın kendiliğinden açılıp açılmadığı.
sign_up_gsm_statusintCep telefonunun sorulup sorulmadığı.
sign_up_gsm_requiredintCep telefonunun zorunlu olup olmadığı.
sign_up_gsm_checkerintCep telefonunun biçim denetiminden geçip geçmediği.
sign_up_gsm_verifyintCep telefonunun doğrulanmasının istenip istenmediği.
sign_up_landline_phone_statusintSabit telefonun sorulup sorulmadığı.
sign_up_landline_phone_requiredintSabit telefonun zorunlu olup olmadığı.
sign_up_landline_phone_checkerintSabit telefonun biçim denetiminden geçip geçmediği.
sign_up_kind_statusintBireysel ya da kurumsal seçiminin sorulup sorulmadığı.
sign_up_identity_statusintKimlik numarasının sorulup sorulmadığı.
sign_up_identity_requiredintKimlik numarasının zorunlu olup olmadığı.
sign_birthday_statusintDoğum tarihinin sorulup sorulmadığı.
sign_birthday_requiredintDoğum tarihinin zorunlu olup olmadığı.
sign_birthday_adult_verifyintYaş sınırının denetlenip denetlenmediği.
security_question_statusintGüvenlik sorusunun sorulup sorulmadığı.
security_question_requiredintGüvenlik sorusunun zorunlu olup olmadığı.
sign_editable_full_nameintMüşterinin adını sonradan değiştirebilip değiştiremeyeceği.
sign_editable_emailintMüşterinin e-postasını değiştirebilip değiştiremeyeceği.
sign_editable_gsmintMüşterinin cep telefonunu değiştirebilip değiştiremeyeceği.
sign_editable_landline_phoneintMüşterinin sabit telefonunu değiştirebilip değiştiremeyeceği.
sign_editable_identityintMüşterinin kimlik numarasını değiştirebilip değiştiremeyeceği.
sign_editable_kindintMüşterinin hesap türünü değiştirebilip değiştiremeyeceği.
sign_editable_birthdayintMüşterinin doğum tarihini değiştirebilip değiştiremeyeceği.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/settings/client' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/settings/client', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/settings/client');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Bir alanin sorulmasi ve ZORUNLU olmasi ayri anahtarlardir: ikisini birlikte okuyun.
$cfg     = Api::Settings()->GetClientSettings()['data'];
$asksGsm = $cfg['sign_up_gsm_status'] === 1;
$needsIt = $asksGsm && $cfg['sign_up_gsm_required'] === 1;

Kayıt Ayarlarını Yazma

put/api/v1/admin/settings/client
Settings/UpdateClientSettings admin vitrini etkiler

Gönderdiğiniz anahtarları uygular; kalanlar olduğu gibi durur.

Gövde 27
sign_in_statusintGirişin açık olup olmadığı.
sign_up_statusintKaydın açık olup olmadığı.
sign_up_email_verifyintE-postanın doğrulanmasının istenip istenmediği.
smart_namingintAd ve soyadın kendiliğinden düzeltilip düzeltilmediği.
crtacwshopintSipariş sırasında hesabın kendiliğinden açılıp açılmadığı.
sign_up_gsm_statusintCep telefonunun sorulup sorulmadığı.
sign_up_gsm_requiredintCep telefonunun zorunlu olup olmadığı.
sign_up_gsm_checkerintCep telefonunun biçim denetiminden geçip geçmediği.
sign_up_gsm_verifyintCep telefonunun doğrulanmasının istenip istenmediği.
sign_up_landline_phone_statusintSabit telefonun sorulup sorulmadığı.
sign_up_landline_phone_requiredintSabit telefonun zorunlu olup olmadığı.
sign_up_landline_phone_checkerintSabit telefonun biçim denetiminden geçip geçmediği.
sign_up_kind_statusintBireysel ya da kurumsal seçiminin sorulup sorulmadığı.
sign_up_identity_statusintKimlik numarasının sorulup sorulmadığı.
sign_up_identity_requiredintKimlik numarasının zorunlu olup olmadığı.
sign_birthday_statusintDoğum tarihinin sorulup sorulmadığı.
sign_birthday_requiredintDoğum tarihinin zorunlu olup olmadığı.
sign_birthday_adult_verifyintYaş sınırının denetlenip denetlenmediği.
security_question_statusintGüvenlik sorusunun sorulup sorulmadığı.
security_question_requiredintGüvenlik sorusunun zorunlu olup olmadığı.
sign_editable_full_nameintMüşterinin adını sonradan değiştirebilip değiştiremeyeceği.
sign_editable_emailintMüşterinin e-postasını değiştirebilip değiştiremeyeceği.
sign_editable_gsmintMüşterinin cep telefonunu değiştirebilip değiştiremeyeceği.
sign_editable_landline_phoneintMüşterinin sabit telefonunu değiştirebilip değiştiremeyeceği.
sign_editable_identityintMüşterinin kimlik numarasını değiştirebilip değiştiremeyeceği.
sign_editable_kindintMüşterinin hesap türünü değiştirebilip değiştiremeyeceği.
sign_editable_birthdayintMüşterinin doğum tarihini değiştirebilip değiştiremeyeceği.
Dönen alanlar data — 27
*intYazma sonrası anahtar kümesinin tamamı; ayarları okuma ucuyla aynı şema. Her biri 0 ya da 1 olarak döner.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/settings/client' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"sign_up_status":1,"sign_up_email_verify":1,"security_question_status":0}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/settings/client', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    sign_up_status: 1,
    sign_up_email_verify: 1,
    security_question_status: 0,
  }),
});

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

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Bir alani zorunlu yapmak SORULUYOR olmasini gerektirir; ikisini birlikte acin.
Api::Settings()->UpdateClientSettings([
    'sign_up_gsm_status'   => 1,
    'sign_up_gsm_required' => 1,
]);

Özel Alanları Listeleme

get/api/v1/admin/settings/client-fields
Settings/GetClientFields admin dil başına ayrı

Kayıt formuna eklenmiş ek alanları döndürür. Alanlar dile göre tutulur.

Sorgu parametreleri 1
langstringHangi dilin alanları. Vermezseniz geçerli dil kullanılır.
Dönen alanlar data[] — 12
idintAlanın kimliği.
langstringAlanın ait olduğu dil.
typestringAlan tipi.
namestringMüşteriye gösterilen ad.
statusstringactive ya da inactive.
requiredboolDoldurulması zorunlu mu.
uneditableboolMüşteri sonradan değiştirebiliyor mu.
client_hiddenboolMüşteriden gizli mi. Gizliyken hesapta, kayıt formunda, faturada ve müşteri API'sinde görünmez.
invoiceboolFaturada gösteriliyor mu.
sign_formboolKayıt formunda soruluyor mu.
optionsstringSeçim tiplerinde sunulan değerler.
rankintFormdaki sırası.
Hatalar 2
invalid_lang422Dil kodu geçerli değil.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -G 'https://panel.ornek.com/api/v1/admin/settings/client-fields' \
  -H "Authorization: Bearer $API_KEY" \
  -d lang=en
const url = new URL('https://panel.ornek.com/api/v1/admin/settings/client-fields');
url.searchParams.set('lang', 'en');

const res  = await fetch(url, { headers: { Authorization: `Bearer ${apiKey}` } });
const body = await res.json();
$url = 'https://panel.ornek.com/api/v1/admin/settings/client-fields?' . http_build_query(['lang' => 'en']);

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Alanlar dile BAGLIDIR: her dil icin ayri liste, ayri kimlikler.
$en = Api::Settings()->GetClientFields([], ['lang' => 'en'])['data'];
$tr = Api::Settings()->GetClientFields([], ['lang' => 'tr'])['data'];
Yanıt
{
  "data": [
    {
      "id": 5,
      "lang": "en",
      "type": "text",
      "name": "VAT Number",
      "status": "active",
      "required": false,
      "uneditable": false,
      "client_hidden": false,
      "invoice": true,
      "sign_form": true,
      "options": "",
      "rank": 0
    }
  ],
  "meta": { "lang": "en", "total": 1 }
}

Özel Alan Ekleme

post/api/v1/admin/settings/client-fields
Settings/CreateClientField admin 201

Kayıt formuna yeni bir alan ekler.

Gövde 10
namestringzorunluMüşteriye gösterilecek ad.
langstringAlanın açılacağı dil.
typestringAlan tipi. Varsayılan metin.
statusintAlanı açar ya da kapatır. Varsayılan açık.
requiredintAlanı zorunlu kılar.
uneditableintMüşterinin sonradan değiştirmesini engeller.
client_hiddenintAlanı müşteriden gizler. Yalnız yöneticiler görür.
invoiceintAlanı faturada gösterir.
sign_formintAlanı kayıt formunda sorar.
optionsstringSeçim tiplerinde sunulacak değerler.
Dönen alanlar data — 12
*objectOluşturulan alan; liste öğesiyle aynı şema. Yanıt 201 taşır.
Hatalar 4
invalid_lang422Dil kodu geçerli değil.
name_required422Alan adı boş.
create_failed422Alan eklenemedi.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/settings/client-fields' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"lang":"en","name":"VAT Number","type":"text","required":1,"invoice":1,"sign_form":1}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/settings/client-fields', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    lang: 'en',
    name: 'VAT Number',
    type: 'text',
    required: 1,
    invoice: 1,
    sign_form: 1,
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/settings/client-fields');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'lang'      => 'en',
        'name'      => 'VAT Number',
        'required'  => 1,
        'sign_form' => 1,
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Alan YALNIZ verdiginiz dilde acilir; her dil icin ayri ayri eklemeniz gerekir.
foreach (['en', 'tr'] as $lang) {
    Api::Settings()->CreateClientField([
        'lang'      => $lang,
        'name'      => $lang === 'tr' ? 'Vergi No' : 'VAT Number',
        'required'  => 1,
        'sign_form' => 1,
    ]);
}

Alanları Sıralama

put/api/v1/admin/settings/client-fields/order
Settings/ReorderClientFields admin

Bir dildeki alanların formda görünme sırasını yazar.

Gövde 2
langstringzorunluHangi dilin alanları sıralanacak.
orderint[]zorunluAlan kimlikleri, istediğiniz sırada.
Dönen alanlar data[] — 12
*objectYeniden sıralanmış liste; alanları listeleme ucuyla aynı şema.
rankintGönderdiğiniz sırayı yeniden yazar. Listeye koymadığınız bir kimlik eski sırasını korur, arada boşluk kalabilir; temiz bir sıra için tüm listeyi gönderin.
Hatalar 2
invalid_lang422Dil kodu geçerli değil.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/settings/client-fields/order' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"lang":"en","order":[7,5,9]}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/settings/client-fields/order', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ lang: 'en', order: [7, 5, 9] }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/settings/client-fields/order');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['lang' => 'en', 'order' => [7, 5, 9]]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Siralama DILE ozeldir: her dilde kendi kimlikleriyle ayrica sıralamaniz gerekir.
$ids = array_column(
    Api::Settings()->GetClientFields([], ['lang' => 'en'])['data'],
    'id',
);

Api::Settings()->ReorderClientFields(['lang' => 'en', 'order' => array_reverse($ids)]);

Özel Alanı Güncelleme

patch/api/v1/admin/settings/client-fields/{id}
Settings/UpdateClientField admin

Var olan bir alanı değiştirir. Alan adı boş bırakılamaz.

Gövde 10
namestringzorunluMüşteriye gösterilecek ad.
langstringAlanın açılacağı dil.
typestringAlan tipi. Varsayılan metin.
statusintAlanı açar ya da kapatır. Varsayılan açık.
requiredintAlanı zorunlu kılar.
uneditableintMüşterinin sonradan değiştirmesini engeller.
client_hiddenintAlanı müşteriden gizler. Yalnız yöneticiler görür.
invoiceintAlanı faturada gösterir.
sign_formintAlanı kayıt formunda sorar.
optionsstringSeçim tiplerinde sunulacak değerler.
Dönen alanlar data — 11
*objectGüncellenen alan, kaydedildiği biçimiyle.
Hatalar 3
not_found404Alan bulunamadı.
name_required422Gönderilen ad boş.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/settings/client-fields/5' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"name":"Tax ID","required":0}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/settings/client-fields/5', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ name: 'Tax ID', required: 0 }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/settings/client-fields/5');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PATCH',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['name' => 'Tax ID', 'required' => 0]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Gizlemek ve zorunlu kilmak birbiriyle CELISIR: musteri goremedigi alani dolduramaz.
Api::Settings()->UpdateClientField([
    'id'            => 5,
    'client_hidden' => 1,
    'required'      => 0,
]);

Özel Alanı Silme

delete/api/v1/admin/settings/client-fields/{id}
Settings/DeleteClientField admin cevaplar da gider

Alanı kaldırır. Müşterilerin o alana verdiği cevaplar da gider.

Dönen alanlar data — 2
deletedboolSilme başarılı mı.
idintSilinen alanın kimliği.
Hatalar 2
not_found404Alan bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/settings/client-fields/5' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch('https://panel.ornek.com/api/v1/admin/settings/client-fields/5', {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/settings/client-fields/5');
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);
// Silmek yerine KAPATMAK cevaplari korur; alan formdan kalkar ama veri durur.
Api::Settings()->UpdateClientField(['id' => 5, 'status' => 0]);

Tuzaklar

Zorunlu yapmak sormaya başlatmaz

Her hazır alanın sorulma ve zorunluluk anahtarları ayrıdır. Yalnız zorunluluğu açmak alanı forma getirmez; müşteri onu hiç görmez ve ayar sessizce etkisiz kalır. İkisini birlikte açın.

Özel alan tek dilde açılır

Bir özel alan eklediğinizde yalnız verdiğiniz dilde oluşur. Sitede iki dil varsa ikinci dildeki müşteriler o alanı hiç görmez. Her dil için ayrı ekleme yapmanız ve sıralamayı da ayrı ayrı yazmanız gerekir.

Gizli alan zorunlu olamaz

Bir alanı müşteriden gizlemek onu hesapta, kayıt formunda, faturada ve müşteri API'sinde görünmez yapar. Aynı alanı zorunlu bırakmak kaydı imkânsız hâle getirir: müşteri göremediği bir alanı dolduramaz. Gizlerken zorunluluğu kaldırın.

Alanı silmek cevapları da siler

Özel alanı silmek yalnız formu değiştirmez: o alana verilmiş bütün müşteri cevapları gider. Alanı artık sormak istemiyorsanız silmek yerine kapatın; form temizlenir ama toplanmış veri yerinde kalır.

Kaydı kapatmak girişi kapatmaz

Kayıt ve giriş ayrı anahtarlardır. Kaydı kapatmak var olan müşterilerin girişini engellemez; bakım için sistemi kapatmak istiyorsanız ikisini de kapatmanız gerekir. Tersi de doğrudur: girişi kapatıp kaydı açık bırakmak, hesap açabilen ama giremeyen müşteriler üretir.

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.