Ana içeriğe geç

B2B / CRM Entegrasyonu

Bu döküman, InsurUp API'lerini kendi CRM veya B2B sistemlerine entegre etmek isteyen partnerler için hazırlanmıştır. Web Satış Platformu kullanmadan, doğrudan API üzerinden teklif alma ve poliçeleştirme işlemleri yapılabilir.

Temel API akışları için InsurUp Web Satış Platformu Self-servis Entegrasyon Rehberi ve ürün bazlı detaylar için Kasko Entegrasyon Rehberi dökümanlarını incelemeniz önerilir. Bu döküman, söz konusu dökümanlardan farklılaşan B2B-spesifik konuları kapsar.

API Referansı: Tüm endpoint'lerin detaylı teknik dokümantasyonu için api.insurup.com/scalar adresini ziyaret edin.

1. Web Satış Platformu ile B2B entegrasyon farkları

ÖzellikWeb Satış PlatformuB2B / CRM Entegrasyonu
Kimlik doğrulamaMüşteri login (OTP)Agent User login (email/password)
Kullanıcı etkileşimiMüşteri web arayüzü kullanırPartner backend sistemi API çağrısı yapar
Ödeme yöntemi3D Secure veya Sigorta Şirketi RedirectDoğrudan kredi kartı (sync)
Müşteri verisiInsurUp müşteri portalıPartner kendi CRM'inde tutar
Teklif/Poliçe görüntülemeWeb arayüzüGraphQL veya REST API

2. Kimlik doğrulama (Authentication)

B2B entegrasyonlarında müşteri login akışı yerine Agent User kimlik doğrulaması kullanılır. Partner sisteminiz, InsurUp tarafından oluşturulan agent user hesabı ile API'ye erişir.

2.1 Login

Partner sisteminiz aşağıdaki endpoint ile access token alır:

Endpoint: POST /api/authentication:agent-user/login

İstek gövdesi:

AlanTipZorunluAçıklama
emailStringEvetAgent user e-posta adresi
passwordStringEvetAgent user şifresi

Yanıt:

AlanTipAçıklama
accessTokenStringAPI çağrılarında kullanılacak JWT token
refreshTokenStringToken yenilemek için kullanılacak token
expiresInIntegerAccess token geçerlilik süresi (saniye, yaklaşık 600 saniye / 10 dakika)
requiresTwoFactorBoolean2FA gerekli ise true döner
userIdStringKimliği doğrulanan kullanıcı ID'si

2.2 İki faktörlü doğrulama (2FA)

Eğer login yanıtında requiresTwoFactor: true dönerse, kullanıcının iki faktörlü doğrulamayı tamamlaması gerekir.

Endpoint: POST /api/authentication:agent-user/verify-mfa

İstek gövdesi:

AlanTipZorunluAçıklama
userIdStringEvetLogin yanıtından alınan kullanıcı ID'si
codeStringEvetKullanıcının cihazına gönderilen doğrulama kodu

2FA doğrulaması başarılı olduğunda, geçerli accessToken ve refreshToken döner.

2.3 Token kullanımı

Alınan accessToken, tüm API çağrılarında Authorization header'ında kullanılır:

Authorization: Bearer {accessToken}

2.4 Token yenileme

Access token süresi dolmadan önce refresh token ile yenileme yapılabilir:

Endpoint: POST /api/authentication:agent-user/refresh

İstek gövdesi:

AlanTipZorunluAçıklama
refreshTokenStringEvetLogin yanıtından alınan refresh token

Yanıt:

AlanTipAçıklama
accessTokenStringYeni API çağrılarında kullanılacak JWT token
refreshTokenStringYeni refresh token (eski token geçersiz olur)
expiresInIntegerYeni access token geçerlilik süresi (saniye)

Öneriler:

  • Token süresinin %80'i dolduğunda (yaklaşık 8 dakika sonra) yenileme başlatın
  • Her API çağrısından önce kalan süreyi kontrol edin
  • Refresh token da geçersiz olduğunda kullanıcıyı login ekranına yönlendirin
  • Yenileme yapıldığında eski refresh token geçersiz olur; yeni değeri saklayın

2.5 Agent User hesabı temini

B2B entegrasyonu için agent user hesabı InsurUp tarafından oluşturulur. Hesap bilgilerinizi almak için InsurUp teknik ekibiyle iletişime geçin.

3. Temel API akışları

B2B entegrasyonunda teklif alma ve poliçeleştirme akışları Web Satış Platformu ile aynıdır. Detaylar için ilgili dökümanları inceleyin:

Temel akış özeti:

  1. Müşteri oluşturma/güncelleme: POST /api/customers
  2. Araç/varlık ekleme: POST /api/customers/{CustomerId}/vehicles
  3. Teklif oluşturma: POST /api/proposals
  4. Teklif detayı alma: GET /api/proposals/{ProposalId}
  5. Poliçeleştirme: POST /api/proposals/{ProposalId}/products/{ProposalProductId}/purchase/sync

4. Poliçeleştirme (Sync vs Async)

B2B entegrasyonlarında poliçeleştirme için sync endpoint kullanılır. Bu endpoint, 3D Secure gerektirmeden doğrudan kredi kartı ile ödeme yapılmasına olanak tanır.

4.1 Sync poliçeleştirme (B2B için önerilen)

Endpoint: POST /api/proposals/{ProposalId}/products/{ProposalProductId}/purchase/sync

Bu yöntemde:

  • 3D Secure doğrulaması gerekmez
  • Ödeme anında işlenir
  • Poliçe bilgisi yanıtta döner
  • Kullanıcı yönlendirmesi yoktur

Desteklenen ödeme yöntemleri:

YöntemAçıklama
CreditCardDoğrudan kredi kartı ile ödeme
OpenAccountAçık hesap (kurumsal müşteriler için)

Kredi kartı ile ödeme isteği:

AlanTipZorunluAçıklama
installmentNumberIntegerEvetTaksit sayısı (1 = peşin)
card.numberStringEvetKart numarası
card.cvcStringEvetGüvenlik kodu
card.expiryMonthStringEvetSon kullanma ayı (MM)
card.expiryYearStringEvetSon kullanma yılı (YYYY)
card.holderNameStringEvetKart sahibi adı
metadataObjectHayırKampanya bilgisi, özel etiketler

4.2 Async poliçeleştirme (Web Satış için)

Endpoint: POST /api/proposals/{ProposalId}/products/{ProposalProductId}/purchase/async

Bu yöntem Web Satış Platformu için tasarlanmıştır ve kullanıcı yönlendirmesi gerektirir:

  • 3D Secure doğrulaması
  • Sigorta şirketi ödeme sayfasına yönlendirme

B2B entegrasyonlarında async endpoint kullanımı önerilmez.

4.3 Poliçeleştirme yanıtı

Başarılı bir sync poliçeleştirme sonucunda:

AlanAçıklama
policyIdOluşturulan poliçe ID'si
policyNumberSigorta şirketi poliçe numarası
statusPURCHASED

5. GraphQL ile veri sorgulama

Partner sistemler, müşteri, teklif ve poliçe verilerini GraphQL API üzerinden sorgulayabilir. GraphQL, karmaşık sorguları tek bir istekte yapmanıza ve sadece ihtiyacınız olan alanları almanıza olanak tanır.

GraphQL Endpoint: POST /graphql

GraphQL Schema: GET /graphql/schema (public, authentication gerektirmez)

5.1 Müşteri sorgulama

Acentenize ait müşterileri listelemek için getCustomersNew sorgusu kullanılır.

query GetCustomers($first: Int, $after: String) {
getCustomersNew(first: $first, after: $after) {
totalCount
pageInfo {
hasNextPage
endCursor
}
edges {
node {
id
name
identityNumber
primaryEmail
primaryPhoneNumber
city
district
birthDate
type
agentBranch {
id
name
}
}
}
}
}

Örnek Koddur: Bu sorgu örnek amaçlıdır. Entegrasyon aşamasında güncel GraphQL şeması için InsurUp teknik ekibiyle iletişime geçin veya /graphql/schema endpoint'inden şemayı alın.

5.2 Teklif sorgulama

Oluşturulan teklifleri listelemek için getProposalsNew sorgusu kullanılır.

query GetProposals($first: Int, $filter: ProposalFilterInput) {
getProposalsNew(first: $first, filter: $filter) {
totalCount
edges {
node {
id
state
productBranch
channel
createdAt
insuredCustomerName
insuredCustomerIdentityNumber
lowestPremium
highestPremium
successRate
productsCount
succeedProductsCount
vehiclePlate
vehicleModelName
agentBranch {
id
name
}
}
}
}
}

Örnek Koddur: Sorgu alanları ve filtre seçenekleri değişiklik gösterebilir. Güncel şema için /graphql/schema endpoint'ini kontrol edin.

5.3 Poliçe sorgulama

Kesilmiş poliçeleri listelemek için getPoliciesNew sorgusu kullanılır.

query GetPolicies($first: Int, $filter: PolicyFilterInput) {
getPoliciesNew(first: $first, filter: $filter) {
totalCount
edges {
node {
id
state
productBranch
insuranceCompanyName
insuranceCompanyPolicyNumber
productName
grossPremium
netPremium
commission
startDate
endDate
arrangementDate
insuredCustomerName
insuredCustomerIdentityNumber
vehiclePlate
agentBranch {
id
name
}
}
}
}
}

Örnek Koddur: Poliçe alanları sigorta branşına göre farklılık gösterebilir. Entegrasyon öncesi şema doğrulaması yapın.

5.4 GraphQL kullanım notları

  • Pagination: Cursor-based pagination desteklenir (first, after, last, before)
  • Filtering: Her sorgu için filter parametresi ile filtreleme yapılabilir
  • Sorting: orderBy parametresi ile sıralama yapılabilir
  • Authentication: GraphQL endpoint'i Bearer token ile korunur

6. Acente ve şube tanımlayıcıları

Teklif ve poliçe işlemlerinde doğru acente/şube atanması kritik öneme sahiptir. Üretim yapısına göre farklı parametreler gereklidir.

6.1 Doğrudan acenteye üretim

Eğer poliçe doğrudan ana acenteye üretilecekse, yalnızca agentId parametresi yeterlidir.

ParametreTipZorunluAçıklama
agentIdGuidEvetInsurUp tarafından sağlanan acente organizasyon kimliği

6.2 Şube veya partner üzerinden üretim

Eğer poliçe bir şube, alt acente veya partner üzerinden üretilecekse, agentId'ye ek olarak agentBranchId parametresi de gönderilmelidir.

ParametreTipZorunluAçıklama
agentIdGuidEvetAna acente organizasyon kimliği
agentBranchIdStringEvet*Şube veya partner kimliği

*Şube/partner yapısı kullanılıyorsa zorunludur.

6.3 Ne zaman hangisi kullanılır?

SenaryoagentIdagentBranchId
Tek acenteli yapı, şube yokGerekliGerekli değil
Ana acente adına üretimGerekliGerekli değil
Şube adına üretimGerekliGerekli
Partner/alt acente adına üretimGerekliGerekli

Bu parametreler; müşteri oluşturma (/api/customers) ve teklif oluşturma (/api/proposals) endpoint'lerinde kullanılır.

7. Webhook entegrasyonu

Poliçe durumu değişikliklerinden haberdar olmak için webhook entegrasyonu yapabilirsiniz. Detaylar için Webhook API Entegrasyonu dökümanına bakın.

8. Gerçek zamanlı bildirimler (SignalR)

Teklif sonuçlarını gerçek zamanlı almak için SignalR bağlantısı kurabilirsiniz. Ancak B2B entegrasyonlarında genellikle polling veya webhook yöntemi tercih edilir.

9. Hata yönetimi

API hata yanıtları standart HTTP durum kodları ile döner. detail ve suggestions alanları kullanıcıya gösterilebilir niteliktedir.

HTTP KoduAçıklamaÖnerilen Aksiyon
400İstek formatı hatalıİstek parametrelerini kontrol edin
401Token geçersiz veya süresi dolmuşYeni token alın
403Yetki yokİzinlerinizi kontrol edin
404Kaynak bulunamadıID'leri kontrol edin
422İş kuralı hatasıHata mesajını inceleyin
429Rate limit aşıldıRetry-After header'ına göre bekleyin
5xxSunucu hatasıExponential backoff ile retry

10. Güvenlik önerileri

  • Client secret değerini güvenli ortamda saklayın (environment variable, secret manager)
  • Client secret'ı kaynak kodunda veya log dosyalarında tutmayın
  • Tüm API çağrıları HTTPS üzerinden yapılmalıdır
  • Token'ları güvenli şekilde saklayın ve yönetin
  • Kart bilgilerini sisteminizde saklamayın

Bu döküman B2B entegrasyonunun temel farklılıklarını kapsar. Ortak API akışları için ilgili entegrasyon rehberlerine başvurun. API endpoint detayları için api.insurup.com/scalar adresini kullanın. Entegrasyon sırasında oluşacak sorular için InsurUp teknik ekibiyle iletişime geçebilirsiniz.