Finansz
  1. PosService API
Finansz
  • PosService API
    • POS API Overview
    • Bin
      • /api/pos/bins
    • Installment
      • /api/pos/installments
    • InstallmentRouting
      • /api/pos/installment-routing
      • /api/pos/installment-routing
    • Link
      • /api/pos/links
      • /api/pos/links
      • /api/pos/links/{id}
      • /api/pos/links/{id}
      • /api/pos/links/{id}
      • /api/pos/links/token
      • /api/pos/links/{id}/payment/non-secure
      • /api/pos/links/{id}/bin
      • /api/pos/links/{id}/installments
      • /api/pos/links/{id}/payment/3d/init
      • /api/pos/links/{id}/payment/3d/complete
    • Merchant
      • /api/pos/merchants
      • /api/pos/merchants
      • /api/pos/merchants/current-tenant-merchant
      • /api/pos/merchants/{id}
      • /api/pos/merchants/{id}
      • /api/pos/merchants/{id}
      • /api/pos/merchants/{merchantId}/documents/{merchantApplicationDocumentId}
      • /api/pos/merchants/{merchantId}/documents/{documentId}
      • /api/pos/merchants/{merchantId}/documents/{documentId}/status
      • /api/pos/merchants/{merchantId}/submit-for-review
      • /api/pos/merchants/{merchantId}/status
    • MerchantApplicationDocument
      • /api/pos/merchant-application-documents
      • /api/pos/merchant-application-documents
      • /api/pos/merchant-application-documents/{id}
      • /api/pos/merchant-application-documents/{id}
      • /api/pos/merchant-application-documents/{id}
    • MerchantCategoryCode
      • /api/pos/merchant-category-codes
      • /api/pos/merchant-category-codes
      • /api/pos/merchant-category-codes/{id}
      • /api/pos/merchant-category-codes/{id}
      • /api/pos/merchant-category-codes/{id}
    • Payment
      • Ödeme İşlemlerini Listeler
      • Yeni Ödeme İşlemi Oluşturur
      • Ödeme İşlemi Detayını Getirir
      • Siparişe Ait Ödeme İşlemlerini Listeler
      • 2D Ödeme İşlemi Oluşturur
      • Ödeme İşlemi İçin İptal Başlatır
      • Ödeme İşlemi İçin İade Başlatır
      • POS Gün Sonu İşlemini Başlatır
      • Ödeme İşlemini Sorgular
    • PosSettings
      • /api/pos/settings/terminals/provider-configuration
      • /api/pos/settings/terminals/provider-configuration
    • Terminal
      • /api/pos/terminals
      • /api/pos/terminals
      • /api/pos/terminals/{id}
      • /api/pos/terminals/{id}
      • /api/pos/terminals/{id}
    • ThreeDInit
      • 3D Secure Ödeme İşlemini Başlatır
      • 3D Secure Ödeme İşlemlerini Listeler
      • 3D Secure Ödeme İşlem Detayını Getirir
    • ThreeDInitIntegration
      • /integration-api/pos/three-dInit/complete
    • Schemas
      • FinansZ.PosService.Entities.InstallmentRouting.InstallmentRoutingType
      • FinansZ.PosService.Entities.Links.CommissionBy
      • FinansZ.PosService.Entities.Links.LinkStatus
      • FinansZ.PosService.Entities.Links.LinkType
      • FinansZ.PosService.Entities.Merchants.CompanyType
      • FinansZ.PosService.Entities.Merchants.MerchantDocumentStatus
      • FinansZ.PosService.Entities.Merchants.MerchantStatus
      • FinansZ.PosService.Entities.Payments.CardType
      • FinansZ.PosService.Entities.Payments.PaymentAction
      • FinansZ.PosService.Entities.Payments.PaymentSource
      • FinansZ.PosService.Entities.Payments.PaymentStatus
      • FinansZ.PosService.Entities.Payments.PaymentType
      • FinansZ.PosService.Entities.Payments.RefundActionType
      • FinansZ.PosService.Entities.Payments.RefundDestinationType
      • FinansZ.PosService.Entities.Payments.RefundStatus
      • FinansZ.PosService.Entities.Payments.ReverseReason
      • FinansZ.PosService.Entities.Payments.ReverseStatus
      • FinansZ.PosService.Entities.Terminals.TerminalProvider
      • FinansZ.PosService.Entities.Terminals.TerminalStatus
      • FinansZ.PosService.Entities.ThreeDInits.ThreeDInitStatus
      • FinansZ.PosService.Providers.Models.BinInformationOutputModel
      • FinansZ.PosService.Providers.Models.CardInstallmentInfo
      • FinansZ.PosService.Providers.Models.GetInstallmentOutputModel
      • FinansZ.PosService.Providers.Models.InstallmentInfo
      • FinansZ.PosService.Services.InstallmentRouting.Dtos.InstallmentRoutingProfileDto
      • FinansZ.PosService.Services.InstallmentRouting.Dtos.InstallmentRoutingRuleDto
      • FinansZ.PosService.Services.InstallmentRouting.Dtos.UpdateInstallmentRoutingProfileDto
      • FinansZ.PosService.Services.InstallmentRouting.Dtos.UpdateInstallmentRoutingRuleDto
      • FinansZ.PosService.Services.Links.Dtos.CompletePublicLinkPaymentDto
      • FinansZ.PosService.Services.Links.Dtos.InitPublicLink3DDto
      • FinansZ.PosService.Services.Links.Dtos.LinkBinRequestDto
      • FinansZ.PosService.Services.Links.Dtos.LinkCreateDto
      • FinansZ.PosService.Services.Links.Dtos.LinkDto
      • FinansZ.PosService.Services.Links.Dtos.LinkInstallmentRequestDto
      • FinansZ.PosService.Services.Links.Dtos.LinkUpdateDto
      • FinansZ.PosService.Services.Links.Dtos.PublicLinkDto
      • FinansZ.PosService.Services.MerchantApplicationDocuments.Dtos.MerchantApplicationDocumentCreateDto
      • FinansZ.PosService.Services.MerchantApplicationDocuments.Dtos.MerchantApplicationDocumentDto
      • FinansZ.PosService.Services.MerchantApplicationDocuments.Dtos.MerchantApplicationDocumentUpdateDto
      • FinansZ.PosService.Services.MerchantCategoryCodes.Dtos.MerchantCategoryCodeCreateDto
      • FinansZ.PosService.Services.MerchantCategoryCodes.Dtos.MerchantCategoryCodeDto
      • FinansZ.PosService.Services.MerchantCategoryCodes.Dtos.MerchantCategoryCodeUpdateDto
      • FinansZ.PosService.Services.Merchants.Dtos.AddressDto
      • FinansZ.PosService.Services.Merchants.Dtos.AuthorizedPersonCreateDto
      • FinansZ.PosService.Services.Merchants.Dtos.AuthorizedPersonDto
      • FinansZ.PosService.Services.Merchants.Dtos.AuthorizedPersonUpsertDto
      • FinansZ.PosService.Services.Merchants.Dtos.MerchantCreateDto
      • FinansZ.PosService.Services.Merchants.Dtos.MerchantDocumentDto
      • FinansZ.PosService.Services.Merchants.Dtos.MerchantDto
      • FinansZ.PosService.Services.Merchants.Dtos.MerchantUpdateDto
      • FinansZ.PosService.Services.Merchants.Dtos.UpdateMerchantDocumentStatusInput
      • FinansZ.PosService.Services.Merchants.Dtos.UpdateMerchantStatusInput
      • FinansZ.PosService.Services.Payments.Dtos.BatchCloseDto
      • FinansZ.PosService.Services.Payments.Dtos.BatchClosePaymentDto
      • FinansZ.PosService.Services.Payments.Dtos.CreateNonSecurePaymentDto
      • FinansZ.PosService.Services.Payments.Dtos.CreatePaymentDto
      • FinansZ.PosService.Services.Payments.Dtos.InquiryDto
      • FinansZ.PosService.Services.Payments.Dtos.PaymentDto
      • FinansZ.PosService.Services.Payments.Dtos.ProvisionList
      • FinansZ.PosService.Services.Payments.Dtos.RefundDto
      • FinansZ.PosService.Services.Payments.Dtos.RefundPaymentDto
      • FinansZ.PosService.Services.Payments.Dtos.ReverseDto
      • FinansZ.PosService.Services.Payments.Dtos.ReversePaymentDto
      • FinansZ.PosService.Services.Settings.TerminalProviderSettingsDto
      • FinansZ.PosService.Services.Terminals.Dtos.TerminalCreateDto
      • FinansZ.PosService.Services.Terminals.Dtos.TerminalDto
      • FinansZ.PosService.Services.Terminals.Dtos.TerminalSettingsDto
      • FinansZ.PosService.Services.Terminals.Dtos.TerminalUpdateDto
      • FinansZ.PosService.Services.ThreeDInits.Dtos.CompleteThreeDInitDto
      • FinansZ.PosService.Services.ThreeDInits.Dtos.CreateThreeDInitDto
      • FinansZ.PosService.Services.ThreeDInits.Dtos.ThreeDInitDto
      • FinansZ.PosService.Services.ThreeDInits.Dtos.ThreeDInitSessionDto
      • Volo.Abp.Application.Dtos.PagedResultDto`1[[FinansZ.PosService.Services.Links.Dtos.LinkDto, FinansZ.PosService.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
      • Volo.Abp.Application.Dtos.PagedResultDto`1[[FinansZ.PosService.Services.MerchantApplicationDocuments.Dtos.MerchantApplicationDocumentDto, FinansZ.PosService.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
      • Volo.Abp.Application.Dtos.PagedResultDto`1[[FinansZ.PosService.Services.MerchantCategoryCodes.Dtos.MerchantCategoryCodeDto, FinansZ.PosService.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
      • Volo.Abp.Application.Dtos.PagedResultDto`1[[FinansZ.PosService.Services.Merchants.Dtos.MerchantDto, FinansZ.PosService.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
      • Volo.Abp.Application.Dtos.PagedResultDto`1[[FinansZ.PosService.Services.Payments.Dtos.PaymentDto, FinansZ.PosService.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
      • Volo.Abp.Application.Dtos.PagedResultDto`1[[FinansZ.PosService.Services.Terminals.Dtos.TerminalDto, FinansZ.PosService.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
      • Volo.Abp.Application.Dtos.PagedResultDto`1[[FinansZ.PosService.Services.ThreeDInits.Dtos.ThreeDInitDto, FinansZ.PosService.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationAuthConfigurationDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationFeatureConfigurationDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationGlobalFeatureConfigurationDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationConfigurationDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationResourceDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationSettingConfigurationDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClockDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentCultureDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentUserDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.DateTimeFormatDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IanaTimeZone
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.EntityExtensionDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumFieldDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiCreateDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiGetDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiUpdateDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyAttributeDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyFeaturePolicyDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyGlobalFeaturePolicyDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyPermissionPolicyDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyPolicyDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiLookupDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiTableDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.LocalizableStringDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ModuleExtensionDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ObjectExtensionsDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimeZone
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimingDto
      • Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.WindowsTimeZone
      • Volo.Abp.AspNetCore.Mvc.MultiTenancy.CurrentTenantDto
      • Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto
      • Volo.Abp.AspNetCore.Mvc.MultiTenancy.MultiTenancyInfoDto
      • Volo.Abp.Http.Modeling.ActionApiDescriptionModel
      • Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel
      • Volo.Abp.Http.Modeling.ControllerApiDescriptionModel
      • Volo.Abp.Http.Modeling.ControllerInterfaceApiDescriptionModel
      • Volo.Abp.Http.Modeling.InterfaceMethodApiDescriptionModel
      • Volo.Abp.Http.Modeling.MethodParameterApiDescriptionModel
      • Volo.Abp.Http.Modeling.ModuleApiDescriptionModel
      • Volo.Abp.Http.Modeling.ParameterApiDescriptionModel
      • Volo.Abp.Http.Modeling.PropertyApiDescriptionModel
      • Volo.Abp.Http.Modeling.ReturnValueApiDescriptionModel
      • Volo.Abp.Http.Modeling.TypeApiDescriptionModel
      • Volo.Abp.Http.RemoteServiceErrorInfo
      • Volo.Abp.Http.RemoteServiceErrorResponse
      • Volo.Abp.Http.RemoteServiceValidationErrorInfo
      • Volo.Abp.Localization.LanguageInfo
      • Volo.Abp.NameValue
  1. PosService API

POS API Overview

Genel Bakış#

FinansZ POS API, ödeme terminal yönetimi, dijital POS ödeme akışları ve taksit bazlı terminal yönlendirme işlemlerini kapsar.
Bu servis, tenant bazlı ödeme altyapısını yönetir ve aşağıdaki temel alanlardan oluşur:
Terminal yönetimi
2D (non-secure) ödeme işlemleri
3D ödeme başlatma işlemleri
BIN sorgulama
Taksit sorgulama
Taksit bazlı terminal yönlendirme
Sağlayıcı ve terminal yetenek yönetimi

Temel Kapsam#

POS API aşağıdaki iş ihtiyaçlarını karşılar:

Terminal Yönetimi#

Sanal POS terminallerinin oluşturulması, güncellenmesi, aktif/pasif hale getirilmesi ve sağlayıcı bazlı ayarlarının yönetilmesini sağlar.

Ödeme İşlemleri#

2D ve 3D ödeme akışlarını başlatır, ödeme kayıtlarını oluşturur ve seçilen terminal üzerinden provider tarafına işlemi iletir.

BIN ve Taksit Sorgulama#

Kartın ilk 6 hanesine göre kart bilgisi alınmasını ve uygun terminaller üzerinden taksit seçeneklerinin sorgulanmasını sağlar.

Taksit Bazlı Terminal Yönlendirme#

Tenant bazında tanımlanan kurallara göre, taksit sayısına bağlı olarak uygun terminalin otomatik seçilmesini sağlar.

Önemli Kurallar#

Swagger/OpenAPI bu servis için teknik source-of-truth kaynağıdır.
Controller üzerinde route olarak expose edilmeyen backend method'ları dokümantasyonda görünmez.
Otomatik terminal seçimi, ödeme anında backend tarafında resolver ile yapılır.
useAutomaticRouting = true gönderildiğinde son terminal seçimini backend yapar.
Manuel terminal seçildiğinde mevcut akış doğrudan seçilen terminal üzerinden ilerler.

Sağlayıcı Davranışları#

Rubikpara#

Rubikpara terminali BIN sorgulama ve taksit sorgulama desteği sağlayabilir.
Kullanım alanları:
BIN inquiry
installment inquiry
2D / 3D ödeme akışları
otomatik routing içinde uygun aday terminal

Nurol#

Nurol tarafında bazı yetenekler sınırlıdır.
Önemli kısıtlar:
BIN inquiry desteği yoktur
taksit inquiry desteği yoktur
tek çekim komisyonu terminal ayarından manuel tanımlanır
çok taksitli akışlarda aday terminal olarak değerlendirilmemelidir

Authentication#

Korumalı endpoint'lerde Bearer token kullanılır.

Header#

Authorization: Bearer {{access_token}}
Accept-Language: {{culture}}
Gerekli senaryolarda tenant bağlamı ayrıca sağlanmalıdır.

Ana Endpoint Grupları#

Terminals#

Terminal oluşturma, güncelleme, listeleme ve terminal ayarlarını yönetir.
Örnek kullanım:
yeni terminal tanımlama
terminal sağlayıcı ayarlarını güncelleme
manuel banka etiketi tanımlama
Nurol için tek çekim komisyon oranı tanımlama

Payments#

2D (non-secure) ödeme oluşturma işlemlerini yönetir.
Bu grup, ödeme oluşturma ve ödeme kaydının provider ile senkron yürütülmesini kapsar.

ThreeD#

3D ödeme başlatma akışlarını yönetir.
Bu grup, kullanıcıyı 3D doğrulama akışına sokan başlangıç kayıtlarını oluşturur.

Installments#

Kart ve tutar bilgisine göre taksit seçeneklerini döner.
Not:
Inquiry için kullanılan terminal, otomatik modda gerçek ödeme terminalinden farklı olabilir.
Provider uygun veri döndürmezse sonuç tek çekim ile sınırlı kalabilir.

Bin Inquiry#

Kartın ilk 6 hanesine göre kart tipi / banka bilgisi üretir.

Installment Routing#

Taksit sayısına göre hangi terminalin kullanılacağını belirleyen tenant bazlı yönlendirme profilini yönetir.
Desteklenen yönlendirme tipleri:
sabit terminal
en düşük komisyon
kendi kartının bankası
varsayılan terminal fallback

Provider Settings#

Sağlayıcı bazlı capability ve varsayılan destek bilgilerini yönetir.

Kritik İş Akışları#

1. Terminal Oluşturma#

İlk olarak uygun provider seçilir, ardından terminal oluşturulur.
Terminal tanımlarken aşağıdaki bilgiler kritik olabilir:
provider türü
güvenlik yetenekleri
BIN inquiry desteği
installment inquiry desteği
manuel banka etiketi
Nurol için tek çekim komisyon oranı

2. Taksit Bazlı Terminal Yönlendirme Tanımlama#

Tenant tarafında varsayılan terminal ve taksit bazlı kurallar kaydedilir.
Örnek kural tipleri:
1 taksit -> sabit terminal
2 taksit -> kendi kartının bankası
3 taksit -> sabit Rubikpara terminali
4+ taksit -> en düşük komisyon

3. Digital POS ile Otomatik Ödeme#

Frontend tarafında kullanıcı terminal olarak Otomatik seçebilir.
Bu durumda:
1.
UI gerekli inquiry işlemlerini uygun terminal üzerinden yapar
2.
ödeme submit edildiğinde useAutomaticRouting = true gönderilir
3.
backend resolver gerçek terminali belirler
4.
ödeme seçilen gerçek terminal üzerinden işlenir

4. Kart Bankasına Göre Yönlendirme#

Routing tipi Kendi kartının bankası seçildiğinde:
1.
BIN sorgusu ile kart bankası belirlenir
2.
ManualBankLabel ile eşleşen terminal aranır
3.
eşleşme bulunamazsa varsayılan terminal kullanılır

Bilinen Kısıtlar#

Inquiry için kullanılan terminal ile gerçek ödeme terminali aynı olmak zorunda değildir.
Provider capability ile routing kuralı çelişirse fallback veya hata oluşabilir.
Nurol taksit inquiry desteklemediği için çok taksitli akışlarda uygun aday olmayabilir.
Contract'ta tanımlı olup controller'da expose edilmeyen method'lar Swagger ve Apidog tarafında görünmez.

Hata Yönetimi#

Karşılaşılabilecek hata türleri:
validation hataları
yetkilendirme hataları
uygun terminal bulunamaması
terminal capability uyumsuzluğu
provider kaynaklı işlem hataları

Test Önerileri#

Aşağıdaki akışlar özellikle doğrulanmalıdır:
1.
Terminal oluşturma ve güncelleme
2.
Manuel banka etiketi kaydetme
3.
Nurol tek çekim komisyon oranı doğrulama
4.
Installment routing get/save
5.
2D ödeme oluşturma
6.
3D init oluşturma
7.
Otomatik terminal seçimi
8.
Tek çekim ve çoklu taksit senaryoları
9.
Kart bankasına göre yönlendirme
10.
Varsayılan terminal fallback davranışı

Operasyonel Kural#

Yeni bir POS endpoint'i eklendiğinde şu sıra izlenmelidir:
1.
Controller route'u kontrol edilir
2.
Swagger'da göründüğü doğrulanır
3.
Gerekirse proxy yeniden üretilir
4.
Apidog re-import yapılır
5.
Gerekliyse ilgili rehber dokümanı güncellenir
Modified at 2026-03-05 07:06:53
Next
/api/pos/bins
Built with