Skip to content

Lead - Başvuru Oluşturma

Ödeal'da bir üye işyeri oluşturmak ve oluşturulan üye iş yerine bir terminal tanımlayabilmek için kullanılan, POST metoduyla çalışan servistir.

Servise iletilen isteğin başarılı olması durumunda, servis registerRefCode değeri döndürür. registerRefCode değeri Ödeal üzerinde oluşan Başvuru ID'sini temsil etmektedir. POST isteği başarısız olduğunda hata kodu ve mesajı response çıktısında görüntülenecektir.

API Reference: Create Lead

Kanal Bazlı Zorunluluk: mobile alanı tüm kanallar için zorunludur. Diğer alanların zorunluluk durumu, optionalFields içindeki hangi key'lerin tanımlı olduğu ve validasyon kuralları iş ortağı özelinde kanal bazlı DB konfigürasyonuyla belirlenir. Kendi kanalınıza ait kurallara ulaşmak için Ödeal entegrasyon ekibiyle koordine edin.

Register servisinden farklı olarak bir başvuru için bir terminal talebine karşılık gelmektedir. Bir üye iş yeri için birden fazla terminal talebinde bulunmak istendiğinde Register servisi kullanılmalıdır.


Alan Listesi

Üst Seviye Alanlar

AlanTürZorunlulukFormat / ValidasyonAçıklamaÖrnek
firstNamestringKanala göre*Maks. 100 karakterYetkili adı"Ahmet"
lastNamestringKanala göre*Maks. 100 karakterYetkili soyadı"Yılmaz"
tcNumberstringKanala göre*Tam olarak 11 rakamTC Kimlik Numarası"11111111111"
taxNumberstringKanala göre*10 veya 11 rakamVergi numarası"2222222222"
mobilestringZorunlu10 rakam, 5XXXXXXXXX formatı (başında 0 yok)Cep telefonu numarası"5321234567"
ownerstringOpsiyonelBaşvuruyu oluşturan temsilci tanımlayıcısı"satis-rep-01"
optionalFieldsobjectOpsiyonelKey-value çiftleri (tüm değerler string)Kanala özel ek bilgiler(aşağıya bakın)

* Kanal Bazlı Zorunluluk: firstName, lastName, tcNumber, taxNumber alanlarının zorunlu/opsiyonel olması kanal konfigürasyonunda belirlenir. Bazı kanallarda bu alanlardan biri veya birkaçı zorunlu olabilir.


optionalFields Alanları

optionalFields nesnesi, iş ortağına özel alanları içeren bir key-value haritasıdır. Tüm değerler string tipindedir. Hangi key'lerin tanımlı olduğu ve bunların zorunlu/opsiyonel olduğu kanal bazlı yapılandırılmaktadır.

KeyTürAlabileceği DeğerlerValidasyonAçıklamaÖrnek
companyTitlestringSerbest metinFirma / tabela adı"ABC Ticaret Ltd."
businessTypestring"INDIVIDUAL", "CORPORATE"Yalnızca bu iki değerİşyeri türü (INDIVIDUAL = şahıs, CORPORATE = tüzel)"CORPORATE"
mccCodestring4 haneli sayısal kodMerchant Category Code"5411"
posInstallmentTypestring"Tek Çekim", "Taksitli"POS taksit yapılandırması"Tek Çekim"
ibanstringTR + 24 rakam (toplam 26 karakter)TR ile başlamalı, 26 haneİşyeri IBAN numarası"TR200058307462136019246697"
setupCitystringBüyük/küçük harf duyarlı il adıÖdeal il kaydında olmalıCihaz kurulum ili"İstanbul"
setupTownstringBüyük/küçük harf duyarlı ilçe adıİl ile tutarlı olmalıCihaz kurulum ilçesi"Kadıköy"
setupAddressstringSerbest metinCihaz kurulum adresi"Moda Cad. No:5 Kadıköy/İstanbul"
terminalSerialNumberstringSerbest metinTerminal mali seri numarası (POS tanımı için)"PAX721000018"
routingModelstring"MODEL0", "MODEL1", "MODEL2"Kanal kısıtlaması geçerliİşlem yönlendirme modeli"MODEL1"
salesTypestring"EDOC_POS", "PHY_POS", "SanalPOS", "CeptePOS"Satış / hizmet türü"EDOC_POS"
cashRegisterTypestringKanal konfigürasyonuna bağlıKanal kısıtlaması geçerliCihaz modeli"A910"
refundTypestring"Iban", "Odeal Kart"İade / geri ödeme türü. Seçime göre ek alanlar zorunlu olur"Iban"
campaignstringSerbest metinrefundType = "Iban" ise zorunluKampanya kodu"2.99"
cardTypestringSerbest metinrefundType = "Odeal Kart" ise zorunluKart türü
cardDeliveryCitystringBüyük/küçük harf duyarlı il adırefundType = "Odeal Kart" ise zorunluKart teslimat ili"İstanbul"
cardDeliveryTownstringBüyük/küçük harf duyarlı ilçe adırefundType = "Odeal Kart" ise zorunluKart teslimat ilçesi"Kadıköy"
cardDeliveryAddressstringSerbest metinrefundType = "Odeal Kart" ise zorunluKart teslimat adresi"Moda Cad. No:5"
personReceivingDevicestringSerbest metinCihazı teslim alacak kişi"Ahmet Yılmaz"
tcknOnCardstring11 rakamrefundType = "Odeal Kart" ise zorunluKart üzerindeki TCKN"11111111111"
nameOnCardstringSerbest metinrefundType = "Odeal Kart" ise zorunluKart üzerindeki ad"Ahmet"
lastNameOnCardstringSerbest metinrefundType = "Odeal Kart" ise zorunluKart üzerindeki soyad"Yılmaz"
birthDateOnCardstringISO 8601 tarih-saatrefundType = "Odeal Kart" ise zorunluKart sahibi doğum tarihi"1990-05-15"
phoneNumberOnCardstringSerbest metinrefundType = "Odeal Kart" ise zorunluKart sahibi telefon numarası"5321234567"

KANAL KISITLAMALARI

routingModel ve cashRegisterType alanları için izin verilen değerler iş ortağı kanalına göre kısıtlanmaktadır. Kanal dışı bir değer gönderildiğinde validasyon hatası döner.

Örneğin, kanalınız yalnızca A910 ve A920Pro modellerini destekliyorsa D230 gönderildiğinde şu hata alınır:

"Girmiş olduğunuz cashRegisterType alan değeri geçersiz. İzin verilen değerler: [A910, A920Pro]."

Edge Case'ler ve Özel Davranışlar

refundType Koşullu Alanlar

refundType değerine göre ek alanlar zorunlu hale gelir:

refundType değeriZorunlu olan ek alanlar
"Iban"campaign
"Odeal Kart"cardType, cardDeliveryCity, cardDeliveryTown, cardDeliveryAddress, tcknOnCard, nameOnCard, lastNameOnCard, birthDateOnCard, phoneNumberOnCard

optionalFields Alanı Gönderilmezse Ne Olur?

Kanal konfigürasyonunda tanımlı olan bir optionalFields key'i, request payload'ında hiç gönderilmezse, bu alanın kaydı Kiva sisteminde "İş Ortağı Özel Değer" sayfasında boş/tanımsız olarak görünür.

ÖNEMLİ DAVRANIM

Bir alanı optionalFields içine yazmamak, Kiva'da o alanın tamamen gizlenmesi anlamına gelmez. Kanalda tanımlı alanlar, değer gönderilmese dahi Kiva "İş Ortağı Özel Değer" sayfasında listelenir.

DurumKiva "İş Ortağı Özel Değer" Sayfası
Alan gönderildi (optionalFields içinde değer mevcut)Alan adı ve değeri görünür
Alan gönderilmedi (ama kanalda tanımlı)Alan adı görünür, değer boş
Alan kanal konfigürasyonunda tanımlı değilAlan hiç görünmez

Payload Örnekleri

Minimal Payload — Yalnızca Zorunlu Alan

json
{
  "mobile": "5555555555"
}

Full Payload — Tüm Alanlar

json
{
  "firstName": "Ahmet",
  "lastName": "Yılmaz",
  "tcNumber": "11111111111",
  "mobile": "5555555555",
  "taxNumber": "2222222222",
  "owner": "satis-temsilcisi-01",
  "optionalFields": {
    "companyTitle": "Yılmaz Ticaret Ltd.",
    "businessType": "CORPORATE",
    "mccCode": "5411",
    "posInstallmentType": "Tek Çekim",
    "iban": "TR200058307462136019246697",
    "setupCity": "İstanbul",
    "setupTown": "Kadıköy",
    "setupAddress": "Moda Cad. No:5 Kadıköy/İstanbul",
    "terminalSerialNumber": "PAX721000018",
    "routingModel": "MODEL1",
    "salesType": "EDOC_POS",
    "cashRegisterType": "A910"
  }
}

Hatalı Payload — Geçersiz cashRegisterType

json
{
  "mobile": "5555555555",
  "optionalFields": {
    "cashRegisterType": "D230"
  }
}

Response (400):

json
{
  "status": false,
  "message": "Alan ön kontrolleri başarısız",
  "errors": [
    "Girmiş olduğunuz cashRegisterType alan değeri geçersiz. İzin verilen değerler: [A910, A920Pro]."
  ]
}

Hatalı Payload — Zorunlu Alan Eksik (mobile yok)

json
{
  "firstName": "Ahmet",
  "lastName": "Yılmaz",
  "tcNumber": "11111111111"
}

Response (400):

json
{
  "status": false,
  "message": "Alan ön kontrolleri başarısız",
  "errors": [
    "mobile alanı boş bırakılamaz"
  ]
}

Response Örnekleri

Başarılı (200)

Request

json
{
  "firstName": "Test",
  "lastName": "Test",
  "tcNumber": "11111111111",
  "mobile": "5555555555",
  "taxNumber": "2222222222",
  "optionalFields": {
    "companyTitle": "Tabela İsmi",
    "businessType": "CORPORATE",
    "mccCode": "3000",
    "posInstallmentType": "Tek Çekim",
    "iban": "TR200058307462136019246697",
    "setupCity": "İstanbul",
    "setupTown": "Kadıköy",
    "setupAddress": "Kadıköy/İstanbul",
    "terminalSerialNumber": "PAX721000018",
    "routingModel": "MODEL1",
    "salesType": "EDOC_POS",
    "cashRegisterType": "A910S"
  }
}

Response

json
{
  "status": true,
  "data": {
    "registerRefCode": "22820cf7-40f4-4a14-9845-46f94bd5082c"
  }
}

Başarısız (400)

Request

json
{
  "firstName": "Test",
  "lastName": "Test",
  "tcNumber": "11111111111",
  "mobile": "5555555555",
  "taxNumber": "2222222222",
  "optionalFields": {
    "cashRegisterType": "D230"
  }
}

Response

json
{
  "status": false,
  "message": "Alan ön kontrolleri başarısız",
  "errors": [
    "Girmiş olduğunuz cashRegisterType alan değeri geçersiz. İzin verilen değerler: [A910, A920Pro]."
  ]
}

Ödeal A.Ş.