Servisler
SDK Initialization
SDK initialization entegrasyonun başlangıç noktasıdır. Ortak kullanılan alanlar burada bir kez tanımlanır.
Request Parametereleri| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| token | string | Required | Merchant backend tarafından üretilen bearer token. |
| merchantId | string | Required | bex tarafından üretilen merchant unique değeri. (bu bilgi bex ekibi tarafından oluşturulup üye işyeri ile paylaşılacaktır). |
| gsmNo | string | Required | Son kullanıcı telefon numarası. |
| merchantUserId | string | Required | Merchant tarafından üretilen son kullanıcıya ait tekil değer. |
| environment | string | Required | Entegrasyonun gerçekleştireleceği ortam bilgisi. |
| transactionType | string | Required | Ödeme işleminin tipini belirler. Gönderilmediğinde default SALE tipinde iletilir. (SALE-Standart ödeme akışı, PRE_AUTH-Ön otorizasyon ile ödeme akışı) |
| installmentCount | string | Required | Taksit bilgisi. Gönderilmediğinde default 1 iletilir. |
| currency | string | Required | Ödeme para birimi kodu. Default "TRY". |
Bu alanlar init sonrası SDK içinde saklanır ve Check Status, Link Account, Store Card, Start Payment ve Start Payment with Card Registration tüm client servislerinde otomatik taşınır.
Lifecycle Kuralları
- SDK initialize edilmeden hiçbir client servisi çağrılamaz.
- Token süresi dolarsa yeni token ile SDK yeniden init edilmelidir.
- Kullanıcı değişirse yeni merchantUserId ve gsmNo ile tekrar init yapılmalıdır.
- Complete Payment, Cancel, Refund ve Unlink servisleri client değil merchant backend tarafından çağrılır.
CheckStatus
Bu servis son kullanıcının bex sisteminde güncel hesap durumunu sorgulamak, üye işyeri ile hesap eşleştirme ve kart listeleme gibi entegrasyonları sağlamak amacıyla kullanılacaktır.
Akış Yönlendirme Notları- Kullanıcının son kayıtlı kartının silinmiş olması durumunda ilgili bex hesabı da kaldırılmış olabilir. Bu durumda Check Status sonucu hesap bulunamadı senaryosuna dönebilir.
- Check Status servisi USER_HAS_NOT_VALID_CARD_FOR_ECOMMERCE hatası ile bilrlikte kart eklenmesi gerektiğini belirten bir hata mesajı dönerse Merchant kullanıcıyı Kart ekleme veya Kart kaydederek ödeme akışına yönlendirmelidir.
Aşağıdaki alanlar SDK init sırasında bir kez tanımlanır ve Check Status çağrısında otomatik olarak kullanılır.
- token
- merchantId
- merchantUserId
- gsmNo
Servis özelinde gönderilen alanlarRequest detaylarını incelemek için SDK Initialization sayfasını inceleyebilirsiniz.
Bu servis ek request parametresine ihtiyaç duymaz.
Response Parametereleri| Parametre | Açıklama |
|---|---|
| data(object) | Başarılı response durumunda doldurulan nesne. |
| token | Bearer olarak kullanılacak token değeri. |
| posResponseMessage | İşlem cevap açıklaması. |
| successAmount | İşlem tutarı. |
| merchantName | İşyeri ismi. |
| resultCode | Hata kodu. |
| resultMessage | Hatanın son kullanıcıya gösterilecek açıklaması. |
| errorTitle | Hata başlığı. |
| error(object) | Hatalı response durumunda doldurulan nesne. |
| title | Hata başlığı. |
| code | Hata kodu. |
| message | Hatanın son kullanıcıya gösterilecek açıklaması. |
| technicalMessage | Hatanın teknik açıklaması. |
| priority | Hata öncelik sırası. |
| screen | Bir sonraki önerilen akış. |
| cards(object) | Başarılı response durumunda doldurulan nesne. |
| cardId | İlgili kartın sistemdeki benzersiz referans değeri. |
| maskCardNumber | Maskeli kart numarası. |
| cardAlias | İlgili kartın sistemdeki takma adı. |
| binValue | Kartın ilk 6 veya ilk 8 hanesi. |
| imageUrl | İlgili kartın resmi. |
| createdTime | Oluşturulma tarihi. |
| bankInformation(object) | Kartın banka bilgileri nesnesi. |
| cardType | Kart tipi (Debit/Credit). |
| cardBrandType | Marka tipi. |
| cardBrand | Kartın markası(TROY/VISA/MASTERCARD). |
| bankShortName | Banka kısa açıklaması. |
| bankCode | Banka kodu (EFT kod). |
- Token Yönetimi: Check Status response’unda dönen token, sonraki servislerde kullanılmak üzere SDK tarafından otomatik olarak yönetilir. Client’ın bu değeri manuel olarak saklaması veya request’e eklemesi gerekmez.
- Ekran Yönlendirme: Response içinde yer alan screen alanı, kullanıcıya gösterilmesi gereken bir sonraki ekranı belirtir. Bu alan bex tarafından önerilen akış yönlendirmesini temsil eder.
Response içerisinde “screen” alanı
"PartialRegisterScreen"olarak döndüğünde akış kart ekleme ekranına yönlendirilmelidir. Servis detaylarına StoreCard sayfasından erişebilirsiniz.
Örnek Olası Sonuç Durumları:Response içerisinde “screen” alanı
"LinkScreen"olarak döndüğünde akış hesap bağlama ekranına yönlendirilmelidir. Servis detaylarına LinkAccount sayfasından erişebilirsiniz.
Hesap yok
{
"data": {
"token": "eyJhbGciOiJIUzI1NiJ9…",
"resultCode": 1001,
"resultMessage": "Kullanıcı Bulunamadı.",
"errorTitle": "USER_NOT_FOUND",
"screen": "PartialRegisterScreen"
}
}
Hesap var, kart var, link yok
{
"data": {
"token": "eyJhbGciOiJIUzI1NiJ9…",
"merchantName": "Odeme Gecidi",
"resultCode": 1002,
"resultMessage": "İşleminizi şu anda gerçekleştiremiyoruz.",
"errorTitle": "USER_NOT_LINKED",
"screen": "LinkScreen"
}
}
Hesap var, kart var, link olan kullanıcı
{
"data": {
"cards": [
{
"cardId": "019c2df9-1eef-7d66-9a38-c060f516b04f",
"maskCardNumber": "650173******1396",
"cardAlias": "test",
"binValue": "65017385",
"imageUrl": "https://img-bkmexpress.mncdn.com/BexpLogos/banks/mobil/3/65026800_ZiraatBankkartTroy_540x336.png",
"createdTime": "2026-02-05 16:23:47.05353",
"bankInformation": {
"cardType": "CreditCard",
"cardBrandType": "Marka Yok",
"cardBrand": "Troy",
"bankShortName": "İŞBANK",
"bankCode": "0064"
},
"active": true
},
{
"cardId": "019cd2a9-8dda-7474-bd33-532ca70d2d78",
"maskCardNumber": "650083******6850",
"cardAlias": "test",
"binValue": "65008307",
"imageUrl": "https://img-bkmexpress.mncdn.com/BexpLogos/banks/mobil/3/65026800_ZiraatBankkartTroy_540x336.png",
"createdTime": "2026-03-09 15:54:13.203414",
"bankInformation": {
"cardType": "Debit",
"cardBrandType": "Bankart Combo",
"cardBrand": "Troy",
"bankShortName": "ZİRAATBANK",
"bankCode": "0010"
},
"active": true
}
],
"screen": "DashboardScreen"
}
}
{
"error": {
"title": "MERCHANT_USER_ID_MISMATCH",
"code": 1012,
"message": "İşleminizi şu anda gerçekleştiremiyoruz.",
"technicalMessage": "Token ve request merchantUserId uyuşmuyor.",
"priority": 0
}
}
LinkAccount
Son kullanıcının hesabı ve kayıtlı kartlarını ilgili işyerinde kullanabilmesi için merchant ile bex hesabını ilişkilendirir. Tek seferlik çalışır ve kartın bankasından kart sahibine iletilen issuer OTP ile doğrulanır.
SDK Davranışı- SDK checkStatus servisinden dönen token bilgisini otomatik olarak request’e ekler.
Aşağıdaki alanlar SDK init sırasında bir kez tanımlanır ve Link Account çağrısında otomatik olarak kullanılır.
- token
- merchantId
- merchantUserId
- gsmNo
Servis özelinde gönderilen alanlarRequest detaylarını incelemek için SDK Initialization sayfasını inceleyebilirsiniz.
Bu servis ek request parametresine ihtiyaç duymaz.
Response Parametereleri| Parametre | Açıklama |
|---|---|
| data(object) | Başarılı response durumunda doldurulan nesne. |
| transactionId | İşleme özel üretilen tekil değer. |
| sender | OTP’yi ileten issuer banka adı. |
| durationTimeInSeconds | OTP’nin aktif olma süresi. |
| otpLength | OTP uzunluğu |
| gsmNo | OTP’nin iletildiği telefon numarası. |
| otpRefNo | Banka tarafından üretilen ve kart sahibine ekranda gösterilen, her SMS’de değişecek random bilgidir. |
| screen | Bir sonraki önerilen akış. |
| countryCode | Ülke kodu. |
| emailAddress | Son kullanıcının mail adresi. |
| channel | OTP doğrulamanın yapıldığı kanal bilgisi. I-Issuer |
| timestamp | İşlem tarih-saat bilgisi. |
| error(object) | Hatalı response durumunda doldurulan nesne. |
| title | Hata başlığı. |
| code | Hata kodu. |
| message | Hatanın son kullanıcıya gösterilecek açıklaması. |
| technicalMessage | Hatanın teknik açıklaması. |
- Ekran yönlendirme: Response içinde yer alan screen alanı, kullanıcıya gösterilmesi gereken bir sonraki ekranı belirtir. Bu alan bex tarafından önerilen akış yönlendirmesini temsil eder.
{
"data": {
"transactionId": "e55937bd-a2c8-4532-bd42-882a51d74f4c",
"sender": "ZİRAAT BANKASI",
"durationTimeInSeconds": 60,
"otpLength": 6,
"gsmNo": "5555555555",
"otpRefNo": "XI010GO6L3",
"screen": "EnterOtpScreen",
"countryCode": "90",
"channel": "I",
"timestamp": 20260405-23:23:48
}
}
Örnek Hatalı ResponseResponse içerisinde “screen” alanı
"EnterOtpScreen"olarak döndüğünde akış OTP doğrulama ekranına yönlendirilmelidir. Yine aynı response içerisinde yer alan “transactionId” ve “refNo” değerleri bir sonraki adımda çağırılacak VerifyOTP servisi için kullanılacaktır. Servis detaylarına VerifyOTP sayfasından erişebilirsiniz.
{
"error": {
"title": "MERCHANT_USER_ID_MISMATCH",
"code": 1012,
"message": "İşleminizi şu anda gerçekleştiremiyoruz.",
"technicalMessage": "Token ve request merchantUserId uyuşmuyor.",
"priority": 0
}
}
StoreCard
Kullanıcının yeni kartını bex hesabına güvenli şekilde kaydetmek için kullanılır. Kart verisi yalnızca SDK tarafından sağlanan güvenli alanlardan alınır, SDK içinde şifrelenir ve servis çağrısında otomatik olarak eklenir.
İş Kuralları- Kart bilgileri yalnızca SDK’nın sağladığı güvenli alanlar üzerinden alınmalıdır.
- Merchant kart numarası, son kullanma tarihi veya diğer hassas kart verilerini plaintext olarak okumamalı, loglamamalı, saklamamalı veya üçüncü taraf sistemlere aktarmamalıdır.
- Hassas kart verisi SDK içinde şifrelenir ve Kart Ekle (Store Card) servisine yalnızca şifrelenmiş payload otomatik olarak iletilir.
- Merchant uygulaması kart datasını manuel olarak request body içinde oluşturmamalı veya SDK dışında şifreleme süreci yürütmemelidir.
- Kart kaydı issuer doğrulama kurallarına bağlı olarak OTP doğrulaması yapılarak eklenebilir. OTP doğrulama tamamlanmadan kart kaydı başarılı sayılmaz.
- SDK initialize edilmeden veya SDK oturumu geçersizken Kart Ekle (Store Card) servisi çağrılamaz.
SDK Davranışıbex platformu hassas verilerin işlenmesi ve saklanması süreçlerinde PCI DSS (Payment Card Industry Data Secureity Standart) gereksinimlerine uygun şekilde tasarlanmıştır.
- SDK checkStatus servisinden dönen token bilgisini otomatik olarak request’e ekler.
Aşağıdaki alanlar SDK init sırasında bir kez tanımlanır ve Store Card çağrısında otomatik olarak kullanılır.
- token
- merchantId
- merchantUserId
- gsmNo
Sözleşmeler ve Kullanıcı OnayıRequest detaylarını incelemek için SDK Initialization sayfasını inceleyebilirsiniz.
Kart ekleme akışında kullanıcıya gösterilmesi gereken sözleşme ve onay bilgileri bex tarafından döndürülür. SDK Initialization yapıldıktan sonra onay bekleyen sözleşmeler response içerisinde pendingAgreements ve ilgili açıklama alanları ile iletilir. Bu sözleşmeler için kullanıcı onayı SDK tarafından sağlanan checkbox komponenti ile alınmalıdır.
Merchant sözleşme onayı gereken senaryolarda SDK’nın sağladığı checkbox bileşenini UI akışına dahil etmelidir. Gerekli onay alınmadan kart ekleme akışı tamamlanamaz.
Response içerisinde
typealanı "AGREEMENT" olarak döndüğünde UI’da checkbox gösterilmelidir.
pendingAgreements Response ParametereleriResponse içerisinde
typealanı “INFO” olarak döndüğünde (örneğin KVKK) içerik kullanıcıya bilgilendirme metni olarak gösterilmeli checkbox onayının bir parçası olmamalıdır.
| Parametre | Açıklama |
|---|---|
| id | Sözleşme Id'si |
| code | Sözleşme Kodu KVKK → KVKK TERMS_OF_USE → Kullanıcı Sözleşmesi MARKETING → Ticari Elektronik İleti İzni |
| type | Sözleşme Tipi (checkbox çıkmasını belirler) AGREEMENT → checkbox yer alır. (Örn: Kullanıcı Sözleşmesi, Ticari Elektronik İleti İzni) INFO → checkbox yer almaz. (Örn: KVKK) |
| contentType | Gösterim için içerik tipi HTML URL |
| title | Sözleşmenin gösterileceği sayfada kullanılacak olan başlık bilgisi |
| content | Sözleşme Metinleri (URL ise URL bilgisi, raw html ise raw html değeri) |
| labelHighlight | Sözleşme onayı için gösterilen metinde highlight edilmesi beklenen kelime veya kelime grubunu iletir. Örn: "Kullanıcı Sözleşmesini okudum, onaylıyorum." cümlesi için labelHighlight parametre değeri olarak "Kullanıcı Sözleşmesi" iletilebilir. |
| label | Sözleşme onayı için gösterilen metin. Örn: "Kullanıcı Sözleşmesini okudum, onaylıyorum." |
| mandatory | Onay ve gösterim zorunlu mu? true / false Kullanıcı sözleşmesi ve KVKK için true Ticari Elektronik İleti İzni için false |
| consentType | Onay tipi Tek bir onay ve gösterim mi gerekmekte yoksa her bir aksiyonda onay ve gösterim yapılmalı mı? ONCE PER_ACTION |
{
"pendingAgreements": [
{
"id": 1000,
"code": "TERMS_OF_USE",
"title": "BKM Express Çerçeve Ödeme Hizmetleri Kullanım Sözleşmesi",
"type": "AGREEMENT",
"label": "Sonraki ödemelerimde kullanmak için Kartımı bex’e kaydederek Kullanıcı Sözleşmesini okudum, onaylıyorum.",
"labelHighlight": "Kullanıcı Sözleşmesi",
"contentType": "URL",
"content": "https://bkmexpress.com.tr/TERMS_OF_USE",
"consentType": "ONCE",
"mandatory": true
},
{
"id": 2000,
"code": "KVKK",
"title": "BKM Express KVKK Aydınlatma Metni",
"type": "INFO",
"label": "Kart bilgilerin bex KVKK Aydınlatma Metni kapsamında Bankalararası Kart Merkezi A.Ş. (BKM) tarafından işlenmektedir.",
"labelHighlight": "KVKK Aydınlatma Metni",
"contentType": "URL",
"content": "https://bkmexpress.com.tr/KVKK",
"consentType": "PER_ACTION",
"mandatory": true
}
]
}
Request ParametereleriZorunlu sözleşmeler onaylanmadığı takdirde MISSED_MANDATORY_AGREEMENT hatası alınacaktır.
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| aliasName | string | Required | Karta verilen takma ad. Örn: Kredi Kartım |
| tokenizedPan | string | Required | SDK tarafında Güvenli alanlardan alınan ve şifrelenen kart verisi payload’ı. |
| agreementConsents | string | Required | Kullanıcı tarafından kabul edilen sözleşmelere ait id ve status bilgileri agreementConsents alanı altında iletilmelidir. |
| id | integer | Required | checkStatus servis response’undan dönen sözleşmeye ID’si. |
| status | string | Required | Kullanıcının ilgili sözleşmeyi kabul ettiğini belirten parametre. |
| Parametre | Açıklama |
|---|---|
| data(object) | Başarılı response durumunda doldurulan nesne. |
| transactionId | İşleme özel üretilen tekil değer. |
| sender | OTP’yi ileten issuer banka adı. |
- Ekran Yönlendirme : Response içinde yer alan screen alanı, kullanıcıya gösterilmesi gereken bir sonraki ekranı belirtir. Bu alan bex tarafından önerilen akış yönlendirmesini temsil eder.
{
"data": {
"transactionId": "e55937bd-a2c8-4532-bd42-882a51d74f4c",
"sender": "ZİRAAT BANKASI",
"durationTimeInSeconds": 60,
"otpLength": 6,
"gsmNo": "5555555555",
"otpRefNo": "XI010GO6L3",
"screen": "EnterOtpScreen",
"countryCode": "90",
"channel": "I",
"timestamp": 20260405-23:23:48
}
}
Örnek Başarılı ResponseResponse içerisinde “screen” alanı
"EnterOtpScreen"olarak döndüğünde akış OTP doğrulama ekranına yönlendirilmelidir. Yine aynı response içerisinde yer alan “transactionId” ve “refNo” değerleri bir sonraki adımda çağırılacak VerifyOTP servisi için kullanılacaktır. Servis detaylarına VerifyOTP sayfasından erişebilirsiniz.
{
"error": {
"title": "GSM_NO_LENGTH_MUST_BE_10_DIGITS",
"code": 1008,
"message": "İşleminizi şu anda gerçekleştiremiyoruz.",
"technicalMessage": "gsmNo 10 haneli olmalıdır.",
"priority": 0
}
}
VerifyOTP
OTP doğrulama gerektiren akışlarda kullanılır. OTP süresi, deneme limiti ve tekrar gönderim davranışı ürün kurallarına göre yönetilir.
İş Kuralları- OTP yalnızca bir kez kullanılabilir.
- OTP süresi 180 saniyedir.
- OTP süresi dolduğunda doğrulama yapılamaz, yeni OTP akışı başlatılmalıdır.
- OTP doğrulaması yalnızca oluşturulduğu işlem (transactionId/refNo) için geçerlidir. Farklı bir işlemde kullanılamaz.
- Aynı transactionId ve refNo ile maksimum 3 OTP doğrulama denemesi yapılabilir.
- OTP doğrulama işlemi banka tarafından yapılmaktadır.
SDK Init üzerinden alınan alanlarOTP doğrulama süreci, bankacılık güvenlik standartlarına uygun olarak yönetilir ve fraud önleme mekanizmaları ile korunur.
Aşağıdaki alanlar SDK init sırasında bir kez tanımlanır ve Verify OTP çağrısında otomatik olarak kullanılır.
- token
Request ParametereleriRequest detaylarını incelemek için SDK Initialization sayfasını inceleyebilirsiniz.
| Parametre | Tip | Zorunlu | Kısıtlar | Açıklama |
|---|---|---|---|---|
| otpValue | string | Required | Max:10 | Son kullanıcının girdiği OTP değeri. |
| transactionId | string | Required | Max:36 | İşleme özel üretilen tekil değer. |
| otpRefNo | string | Required | Max:20 | Banka tarafından üretilen ve kart sahibine ekranda gösterilen, her SMS’de değişecek random bilgidir. |
{
"otpValue": "123456",
"otpRefNo": "5EABN0K9DW",
"transactionId": "c95d8b53-3916-4d25-b3fe-64b02c741be1"
}
| Parametre | Açıklama |
|---|---|
| data(object) | Başarılı response durumunda doldurulan nesne. |
| token | Bearer olarak kullanılacak token değeri. |
| screen | Bir sonraki önerilen akış. |
| error(object) | Hatalı response durumunda doldurulan nesne. |
| title | Hata başlığı. |
| code | Hata kodu. |
| message | Hatanın son kullanıcıya gösterilecek açıklaması. |
| technicalMessage | Hatanın teknik açıklaması. |
| priority | Hata öncelik sırası. |
- Token Yönetimi : Verify OTP response’unda dönen token, sonraki servislerde kullanılmak üzere SDK tarafından otomatik olarak yönetilir. Client’ın bu değeri manuel olarak saklaması veya request’e eklemesi gerekmez.
- Ekran Yönlendirme : Response içinde yer alan screen alanı, kullanıcıya gösterilmesi gereken bir sonraki ekranı belirtir. Bu alan bex tarafından önerilen akış yönlendirmesini temsil eder.
{
"data": {
"token": "eyJhbGciOiJIUzI1NiJ9",
"screen": "WalletScreen",
"success": true
}
}
Örnek Hatalı ResponseResponse içerisinde “screen” alanı
"WalletScreen"olarak döndüğünde akış bir sonraki adımda Check Status servisine yönlendirilmelidir. Yine aynı response içerisinde yer alan “token” değeri SDK tarafından otomatik olarak saklanır ve yönetilir.
{
"error": {
"title": "OTP_CODE_WRONG",
"code": 9,
"message": "Doğrulama Kodunu yanlış girdiniz. Lütfen tekrar deneyiniz.",
"technicalMessage": "Doğrulama Kodunu yanlış girdiniz. Lütfen tekrar deneyiniz.",
"priority": 0
}
}
ResendOTP
OTP süresi dolduğunda veya son kullanıcı SMS’i alamadığında, mevcut doğrulama işlemini bozmadan aynı işlem için yeni OTP üretilmesini sağlar.
İş Kuralları- Resend OTP işlemi yalnızca mevcut doğrulama işlemi (transactionId/refNo) için çalışır.
- Resend OTP yeni bir işlem oluşturmaz; mevcut OTP doğrulama akışını devam ettiir.
- Yeni OTP üretildiğinde önceki OTP geçersiz hale gelir ve tekrar kullanılamaz.
- Her resend sonrası OTP geçerlilik süresi yeniden başlatılır.
Aşağıdaki alanlar SDK init sırasında bir kez tanımlanır ve Resend OTP çağrısında otomatik olarak kullanılır.
- token
Request ParametereleriRequest detaylarını incelemek için SDK Initialization sayfasını inceleyebilirsiniz.
| Parametre | Tip | Zorunlu | Kısıtlar | Açıklama |
|---|---|---|---|---|
| otpValue | string | Required | Max:10 | Son kullanıcının girdiği OTP değeri. |
| transactionId | string | Required | Max:36 | İşleme özel üretilen tekil değer. |
| otpRefNo | string | Required | Max:20 | Banka tarafından üretilen ve kart sahibine ekranda gösterilen, her SMS’de değişecek random bilgidir. |
{
"otpRefNo": "5EABN0K9DW",
"transactionId": "c95d8b53-3916-4d25-b3fe-64b02c741be1"
}
| Parametre | Açıklama |
|---|---|
| data(object) | Başarılı response durumunda doldurulan nesne. |
| token | Bearer olarak kullanılacak token değeri. |
| screen | Bir sonraki önerilen akış. |
| error(object) | Hatalı response durumunda doldurulan nesne. |
| title | Hata başlığı. |
| code | Hata kodu. |
| message | Hatanın son kullanıcıya gösterilecek açıklaması. |
| technicalMessage | Hatanın teknik açıklaması. |
| priority | Hata öncelik sırası. |
- Token Yönetimi : Verify OTP response’unda dönen token, sonraki servislerde kullanılmak üzere SDK tarafından otomatik olarak yönetilir. Client’ın bu değeri manuel olarak saklaması veya request’e eklemesi gerekmez.
- Ekran Yönlendirme : Response içinde yer alan screen alanı, kullanıcıya gösterilmesi gereken bir sonraki ekranı belirtir. Bu alan bex tarafından önerilen akış yönlendirmesini temsil eder.
{
"data": {
"transactionId": "6178942a-0ce3-448d-9444-bdebe03043f4",
"sender": "HALKBANK",
"durationTimeInSeconds": 180,
"resendTimeInSeconds": 30,
"otpLength": 6,
"gsmNo": "5555555555",
"otpRefNo": "DYLA073P6B",
"screen": "EnterOtpScreen",
"countryCode": "90",
"channel": "I",
"timestamp": "20260901-11:58:08"
}
}
Örnek Hatalı ResponseResponse içerisinde “screen” alanı
"WalletScreen"olarak döndüğünde akış bir sonraki adımda Check Status servisine yönlendirilmelidir. Yine aynı response içerisinde yer alan “token” değeri SDK tarafından otomatik olarak saklanır ve yönetilir.
{
"error": {
"title": "OTP_EXPIRED",
"code": 8,
"message": "İşleminizi şu anda gerçekleştiremiyoruz.",
"technicalMessage": "OTP süresi dolmuş.",
"priority": 0
}
}
CardDelete
Son kullanıcının bex hesabında kayıtlı kartını silmek için kullanılır.
İş Kuralları- Kart silme işlemi yalnızca kayıtlı kartlar için yapılabilir.
- Silinen kart kayıtlı kart listesinde tekrar gösterilmez.
- Kart silme işlemi geri alınamaz, kartın tekrar kullanılabilmesi için yeniden kart ekleme akışı çalıştırılmalıdır.
- Kart silme işlemi başarılı olduğunda güncel kayıtlı kart listesi response içeriğinde iletilir.
- bex hesabı en az bir kayıtlı kart varlığına bağlı olarak tutulur. Bu nedenle kullanıcıya ait son kart silindiğinde, ilgili bex hesabı da aktif kayıtlı kart kalmadığı için sistemden kaldırılır.
- Sonraki işlemlerde kullanıcı Merchant iş akış modeline göre yeniden kart ekleme veya kart kaydederek ödeme senaryosuna yönlendirilmelidir.
Aşağıdaki alanlar SDK init sırasında bir kez tanımlanır ve Card Delete çağrısında otomatik olarak kullanılır.
- token
- merchantId
Request ParametereleriRequest detaylarını incelemek için SDK Initialization sayfasını inceleyebilirsiniz.
| Parametre | Tip | Zorunlu | Kısıtlar | Açıklama |
|---|---|---|---|---|
| cardId | string | Required | UUID | İlgili kartın sistemdeki benzersiz referans değeri. |
{
"cardId": "019d2a26-88f9-7621-84b9-e7882569a3bd"
}
| Parametre | Açıklama |
|---|---|
| data(object) | Başarılı response durumunda doldurulan nesne. |
| cards(object) | Başarılı response durumunda doldurulan nesne. |
| cardId | İlgili kartın sistemdeki benzersiz referans değeri. |
| maskCardNumber | Maskeli kart numarası. |
| cardAlias | İlgili kartın sistemdeki takma adı. |
| binValue | Kartın ilk 6 veya ilk 8 hanesi. |
| imageUrl | İlgili kartın resmi. |
| createdTime | Oluşturulma tarihi. |
| bankInformation(object) | Kartın banka bilgileri nesnesi. |
| cardType | Kart tipi (Debit/Credit). |
| cardBrandType | Marka tipi. |
| cardBrand | Kartın markası(TROY/VISA/MASTERCARD). |
| bankShortName | Banka kısa açıklaması. |
| bankCode | Banka kodu (EFT kod). |
{
"data": {
"cards": [
{
"cardId": "019c2df9-1eef-7d66-9a38-c060f516b04f",
"maskCardNumber": "650173******1396",
"cardAlias": "test",
"binValue": "65017385",
"imageUrl": "https://img-bkmexpress.mncdn.com/BexpLogos/banks/mobil/3/65026800_ZiraatBankkartTroy_540x336.png",
"createdTime": "2026-02-05 16:23:47.05353",
"bankInformation": {
"cardType": "CreditCard",
"cardBrandType": "Marka Yok",
"cardBrand": "Troy",
"bankShortName": "İŞBANK",
"bankCode": "0064"
},
"active": true
},
{
"cardId": "019cd2a9-8dda-7474-bd33-532ca70d2d78",
"maskCardNumber": "650083******6850",
"cardAlias": "test",
"binValue": "65008307",
"imageUrl": "https://img-bkmexpress.mncdn.com/BexpLogos/banks/mobil/3/65026800_ZiraatBankkartTroy_540x336.png",
"createdTime": "2026-03-09 15:54:13.203414",
"bankInformation": {
"cardType": "Debit",
"cardBrandType": "Bankart Combo",
"cardBrand": "Troy",
"bankShortName": "ZİRAATBANK",
"bankCode": "0010"
},
"active": true
}
]
}
}
{
"error": {
"title": "CARD_NOT_FOUND",
"code": 6,
"message": "Kart bulunamadı.",
"technicalMessage": "Kart bulunamadı.",
"priority": 0
}
}
Start Payment
Kayıtlı kart ile ödeme akışını başlatır. Güvenlik modeli OTP / 3D olarak başlatılabilir. Finansal işlem bu aşamada tamamlanmaz ve doğrulama Complete Payment finansallaştırılır.
Güvenlik Modeli
bex güvenlik tipi seçiminde hem sistem varsayılanlarını hem de merchant istek bazlı yönlendirme davranışını destekler.
Varsayılan Davranış
- paymentSecurity gönderilmezse sistem kuralı uygulanır.
- Merchant sistem parametrelerine threshold tanımı yapılabilir. Örneğin 0–1000 TL arası OTP, 1000 TL ve üzeri 3D.
- Merchant için tanımlı güvenlik profili varsayılan akışı belirler.
İstek Bazlı Yönlendirme
- paymentSecurity gönderilirse sistem kuralı override edilir.
- Override yalnızca merchant için izinli güvenlik tipleri ile sınırlıdır.
- Merchant isterse her işlemi paymentSecurity ile yönlendirebilir.
Yönlendirme Stratejisi
bex ödeme routing davranışında hem sistem varsayılanlarını hem de merchant istek bazlı yönlendirme davranışını destekler.Varsayılan Yönlendirme
- On-us eşleşmesi varsa işlem öncelikle ilgili POS’a yönlendirilir.
- On-us eşleşmesi yoksa merchant için tanımlı default POS kullanılır.
İstek Bazlı Yönlendirme
- bankCode veya posCode alanları ile routing override edilebilir.
- Override yalnızca merchant için tanımlı ve izinli POS seti içinde çalışır.
Sipariş Yönetimi
bex orderId alanında hem merchant-controlled hem system-managed modları destekler.Otomatik Mod
- Merchant orderId göndermezse bex tüm sanal pos bankaların kurallarına uygun orderId üretir.
- Üretilen orderId ödeme tamamlama response'unda merchant’a döner.
Manuel Mod
- Merchant orderId gönderirse bex bu alanı değiştirmeden bankaya iletir.
- Bankadan format hatası dönerse hata merchant’a aynı şekilde iletilir.
Hash Yönetimi
3D ödeme akışlarında bankadan dönen hash, hashParams ve benzeri doğrulama alanları normalde merchant tarafından kontrol edilir. bex bu kontrolü merchant adına gerçekleştirebilir ve ek entegrasyon yükünü azaltır.Varsayılan Davranış
- 3D doğrulama sonucunda bankadan gelen hash ve hashParams alanları bex backend tarafından alınır.
- bex merchant adına gerekli hash doğrulamasını gerçekleştirir.
- Bu sayede merchant tarafında ek hash hesaplama zorunlu olmaz.
- Doğrulama başarılı ise merchant backend doğrudan Ödemeyi Tamamla (Complete Payment) çağrısına geçebilir.
İsteğe Bağlı Doğrulama
- Merchant isterse bankadan gelen hash, hashParams ve ilgili form alanlarını yine response veya callback içinde alabilir.
- Merchant her bankanın belirlemiş olduğu standartta hash hesaplamasını kendi tarafında gerçekleştirir.
- bex tarafından yapılan doğrulama ile merchant tarafındaki doğrulama birlikte kullanılabilir.
bex'in sunduğu varsayılan modelde hash doğrulama yükü merchant üzerinden alınır. Ancak merchant isterse kendi kontrolünü sürdürebilir.
İşlem Tipi Yönetimi
Merchant, ödeme davranışını “transactionType” parametresi ile işlem bazında değiştirebilir.
SALE(Standart Satış)
- transactionType=SALE gönderildiğinde veya parametre belirtilmediğinde işlem standart satış akışında ilerler.
- Tutar başarılı işlem sonunda finansallaşır.
- Complete Payment akışı kullanılır.
- Standart ödeme senaryoları için kullanılan işlem tipidir.
Pre Auth(Ön Provizyon)
- transactionType=PRE_AUTH gönderildiğinde işlem ön provizyon olarak başlatılır.
- Başarılı işlem sonunda tutar yalnızca kart üzerinde bloke edilir.
- Bu aşamada finansal tahsilat gerçekleşmez.
- İşlemin finansallaşması için daha sonra Merchant Backend üzerinden Post Auth(Capture) servisi çağırılmalıdır.
- paymentSecurity parametresi kullanılarak OTP veya 3D doğrulama tercih edilebilir.
- Pre Auth / Post Auth akışında taksit desteği bulunmamaktadır.
- Pre Auth / Post Auth desteği, kart tipi ve kartı sağlayan bankanın uyguladığı kuralara bağlıdır. Bazı bankalar debit kartlar için ön provizyon(Pre Auth) işlemlerine izin vermemektedir. Bu nedenle debit kartlarla yapılan Pre Auth talepleri banka tarafından reddedilebilir.
- Start Payment servisi yalnızca ödeme doğrulama akışını başlatır; finansal işlem bu aşamada tamamlanmaz.
- Güvenlik akışı paymentSecurity parametresine göre belirlenir.
- TDS: 3D secure doğrulama
- OTP: OTP doğrulama
- NONE: Herhangi bir doğrulama yapılmaz
- Merchant request içinde paymentSecurity gönderirse işlem bu değere göre yönlendirilir.
- Merchant request içinde paymentSecurity göndermezse sistem, işyeri için tanımlı güvenlik kuralına göre akışı belirler. Örneğin 0–1000 TL arası işlemler OTP, 1000 TL ve üzeri işlemler 3D olarak başlatılabilir.
- Request içinde gönderilen paymentSecurity değeri, mevcut sistem threshold kuralının üzerine yazabilir ve ödeme akışı gönderilen değere göre başlatılır.
- On-us yönlendirme yapısında, ödeme kartına ait eşleşen sanal POS bilgisi bulunduğunda işlem öncelikle ilgili POS’a yönlendirilir.
- On-us eşleşmesi bulunmazsa işlem merchant için tanımlı default POS üzerinden devam eder.
- Merchant request içinde bankCode veya benzeri bir routing parametresi gönderirse, ödeme sistemde tanımlı ilgili merchant POS üzerinden geçirilebilir.
- Aynı bankadan birden fazla pos olması durumunda bankCode ile beraber posCode iletilmesi beklenir. İletilen posCode değerine tanımlı pos üzerinden ödeme geçirilebilir.
- OrderId merchant tarafından gönderilirse bex bu alanı format kontrolü yapmadan bankaya iletir. OrderId kaynaklı hata oluşursa hata merchant’a aynı şekilde iletilir.
- Önerilen akışta orderId merchant tarafından gönderilmezse bex ilgili bankanın uzunluk ve karakter kurallarına uygun bir orderId üretir, bankaya iletir ve response içinde kullanılan orderId bilgisini merchant’a döner.
- Hash doğrulama işlemi bankadan dönen verinin bütünlüğünü sağlamak adına zorunludur. bex önerilen akışta bu doğrulamayı Merchant adına gerçekleştirir ve banka bazlı farklılıkları merkezi olarak yönetir.
- Merchant banka bazlı farklılaşan hash doğrulama işlemini gerçekleştirmek isterse bex bankadan gelen hash hesaplama parametrelerini merchant’a iletir.
- 3D Secure akışlarında bankadan dönen mdSuccess, hash, hashParams ve ilgili doğrulama alanlarının Merchant tarafına iletilebilmesi için successUrl ve failUrl parametreleri sağlanmalıdır.
- SuccessUrl ve failUrl alanları yalnızca HTTPS formatında olmalı ve POST methodu ile veri kabul edecek şekilde tasarlanmalıdır.
- Merchant successUrl ve failUrl alanlarını her işlem için dinamik belirleyebilir. Sipariş bazlı callback URL kullanımı desteklenir.
- TransactionId alanı bex tarafında aynı işlemin başlatma ve tamamlanma adımlarını eşleştirmek ve işlem bütünlüğünü sağlamak için kullanır.
- TransactionId alanı işlem özelinde tekil olmalıdır ve UUID benzeri benzersiz bir formatta kullanılması önerilir.
- Aynı transactionId alanı ödeme başlatma ve ödeme tamamlama adımlarında birlikte kullanılmalıdır.
- Tekrar eden, çakışan veya işlem bağlamı ile uyumsuz transactionId alanı hata ile sonuçlanabilir.
Aşağıdaki alanlar SDK init sırasında bir kez tanımlanır ve Start Payment çağrısında otomatik olarak kullanılır.
- token
- merchantId
- merchantUserId
- gsmNo
Request ParametereleriRequest detaylarını incelemek için SDK Initialization sayfasını inceleyebilirsiniz.
| Parametre | Tip | Zorunlu | Kısıtlar | Açıklama |
|---|---|---|---|---|
| cardId | string | Required | Max: 36 | İlgili kartın sistemdeki benzersiz referans değeri. |
| orderId | string | Optional | Max: 255 | Ödeme işlemine ait sipariş numarası. |
| amount | double | Required | Ödemenin tutar bilgisi Format: 12.00 12.54 122345.34 | |
| installmentCount | number | Required | Max: 2 | Taksit bilgisi. Tek çekim işlemlerde “1” gönderilmelidir. |
| transactionId | string | Required | Max: 36 | Her işlem özelinde üretilmesi beklenen benzersiz değer. |
| transactionDate | string | Required | Tarih-saat bilgisi. ISO 8601 Format: YYYY-MM-DDTHH:mm:ss.sss | |
| currency | string | Required | Max:3 | Ödemenin tahsil edileceği para birimi 949 -TRY |
| paymentSecurity | enum | Optional | Ödeme güvenlik yöntemi TDS OTP NONE | |
| successUrl | string | Required | Ödeme işlemi başarılı olursa yönlenecek sayfa adresi. | |
| failUrl | string | Required | Ödeme işlemi başarısız olursa yönlenecek sayfa adresi. |
{
"merchantId": "019df2fb-bdaf-71f9-8150-3cedeaf7fa48",
"gsmNo": "5374407074",
"merchantUserId": "YBX_5374407074",
"cardId": "019e44f2-639a-7532-bc0d-7e62504fd83a",
"amount": 222.41,
"transactionDate": "2026-07-23T07:43:42.205",
"currency": "TRY",
"installmentCount": "1",
"transactionId": "48e43cb1-16d7-42a7-a742-4f04c1354512",
"secureType": "TDS",
"successUrl": https://trcuzdan-dev.bkmtest.com.tr/sdk/demo/success,
"failUrl": https://trcuzdan-dev.bkmtest.com.tr/sdk/demo/fail
}
| Parametre | Açıklama |
|---|---|
| data(object) | Başarılı response durumunda doldurulan nesne. |
| tdsUrl | Banka 3DS url bilgisi. |
| success | Banka 3D acs işlem sonuç bilgisi. |
| message | İşlem cevap açıklaması. |
| code | İşlem cevap kodu. |
| bankTransactionId | Banka Transaction ID değeri. |
| orderId | Ödemeye ait sipariş numarası. |
| paymentToken | Ödemenin kontrolü için bex tarafından işlem bazlı tekil üretilen değer. |
| htmlForm | Banka acs form bilgisi. |
| transactionId | İşleme özel üretilen tekil değer. |
| sender | OTP’yi ileten issuer banka adı. |
| durationTimeInSeconds | OTP’nin aktif olma süresi. |
| otpLength | OTP uzunluğu |
| gsmNo | OTP’nin iletildiği telefon numarası. |
| otpRefNo | Banka tarafından üretilen ve kart sahibine ekranda gösterilen, her SMS’de değişecek random bilgidir. |
| screen | Bir sonraki önerilen akış. |
| countryCode | Ülke kodu. |
| emailAddress | Son kullanıcının mail adresi. |
| channel | OTP doğrulamanın yapıldığı kanal bilgisi. I-Issuer |
| timestamp | İşlem tarih-saat bilgisi. |
| error(object) | Hatalı response durumunda doldurulan nesne. |
| title | Hata başlığı. |
| code | Hata kodu. |
| message | Hatanın son kullanıcıya gösterilecek açıklaması. |
| technicalMessage | Hatanın teknik açıklaması. |
- Ekran Yönlendirme : Response içinde yer alan screen alanı, kullanıcıya gösterilmesi gereken bir sonraki ekranı belirtir. Bu alan bex tarafından önerilen akış yönlendirmesini temsil eder.
{
"data": {
"transactionId": "e55937bd-a2c8-4532-bd42-882a51d74f4c",
"sender": "ZİRAAT BANKASI",
"durationTimeInSeconds": 60,
"otpLength": 6,
"gsmNo": "5555555555",
"otpRefNo": "XI010GO6L3",
"screen": "EnterOtpScreen",
"countryCode": "90",
"channel": "I",
"timestamp": 20260405-23:23:48
}
}
Örnek Başarılı 3D ResponseResponse içerisinde “screen” alanı
"EnterOtpScreen"olarak döndüğünde akış OTP doğrulama ekranına yönlendirilmelidir. Yine aynı response içerisinde yer alan “transactionId” ve “refNo” değerleri bir sonraki adımda çağırılacak VerifyOTP servisi için kullanılacaktır. Servis detaylarına VerifyOTP sayfasından erişebilirsiniz.
{
"data": {
"tdsUrl": "https://sanalposprovtest.garantibbva.com.tr/servlet/gt3dengine",
"success": true,
"message": "VposPaymentTDSFormSuccess",
"code": "8000",
"bankTransactionId": null,
"orderId": "BKM_00000000000012106217",
"htmlForm": "<form name=\"bkmForm\" action=\"https://bexmerchant-dev.bkmtest.com.tr/sdk/transaction/tds/MDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4LTFkNTA1MDU2LTNiMDUtNDE2Ni1iOGIwLTY1Mzc5Y2FmMGVlNg==\" method=\"POST\"></form><script>document.bkmForm.submit();</script>",
"paymentToken": "MDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4LTFkNTA1MDU2LTNiMDUtNDE2Ni1iOGIwLTY1Mzc5Y2FmMGVlNg==",
"screen": "TDSScreen"
}
}
Transaction Control servisi ödeme sonucunun SDK tarafında görüntülenmesini sağlayan senkronizasyon servisidir. Verify OTP veya 3D Secure doğrulaması başarılı olduktan sonra işlemin finansallaşması için Merchant backend bex backend’e ödemeyi tamamlama (Complete Payment) sürecini yürütür. Ödeme işlem sonucu backend to backend olarak Merchant backend’e iletilir. Transanction Control servisi bu sonucun SDK tarafında da görüntülenmesini sağlar.
{
"data": {
"paymentToken": "MTextve3TW54CFDWDsc…",
"screen": "TransactionControlScreen"
}
}
OTP doğrulama başarılı olduğunda response içerisinde “screen” alanı
"TransactionControlScreen"olarak döndüğünde akış bir sonraki adımda Transaction Control servisine yönlendirilmelidir. Yine aynı response içerisinde yer alan“paymentToken”değeri ile ilgili servis çağırılmalıdır.
- Test
- Preprod
- Prod
GET https://bexmerchant-test.bkmtest.com.tr/sdk/transaction/control/MDE5ZmVmOGItNzU2OC03MzlkLTg0ZDEtMDczNDJiN2ZlM2Y1LTU4ZjA1M2I1LWI1OTQtNGVkZi05NjE5LWU0YzYyMzg3ZTZhYw==
curl --request GET \
--url https://bexmerchant-test.bkmtest.com.tr/sdk/transaction/control/MDE5ZmVmOGItNzU2OC03MzlkLTg0ZDEtMDczNDJiN2ZlM2Y1LTU4ZjA1M2I1LWI1OTQtNGVkZi05NjE5LWU0YzYyMzg3ZTZhYw== \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJVSUQiOiIwMTlmZWY4Yi03NTY4LTczOWQtODRkMS0wNzM0MmI3ZmUzZjUiLCJpZGVudGlmaWVyIjoiNTM1NjY4NDk3NyIsInByb2Nlc3NJZCI6ImU5NmI3MWJhLTJiNjQtNDRiMS04N2MwLWE0ZGJmNWMwMzM3ZiIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xNjQiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDFhMDViYjktYmNlYi03ZGMxLTk2ZTMtYTUxYzRiZjMyMjAxIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNTY2ODQ5NzciLCJleHAiOjE3ODg0Mjc3NjcsImlhdCI6MTc4ODQyNjg2NywidXNlcklkIjoiMDE5ZjVmMzktN2M0NC03OWY5LWJjMjUtMTE4ZTE5MDBlOTUyIiwibWVyY2hhbnROYW1lIjoiR29raGFuIn0.KaOKy5pmJgi8QLIJMg1IFtnmIfYMjAc2Fnegf7mBmzs'
GET https://bexmerchant-preprod.bkmtest.com.tr/sdk/transaction/control/MDE5ZmVmOGItNzU2OC03MzlkLTg0ZDEtMDczNDJiN2ZlM2Y1LTU4ZjA1M2I1LWI1OTQtNGVkZi05NjE5LWU0YzYyMzg3ZTZhYw==
curl --request GET \
--url https://bexmerchant-preprod.bkmtest.com.tr/sdk/transaction/control/MDE5ZmVmOGItNzU2OC03MzlkLTg0ZDEtMDczNDJiN2ZlM2Y1LTU4ZjA1M2I1LWI1OTQtNGVkZi05NjE5LWU0YzYyMzg3ZTZhYw== \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJVSUQiOiIwMTlmZWY4Yi03NTY4LTczOWQtODRkMS0wNzM0MmI3ZmUzZjUiLCJpZGVudGlmaWVyIjoiNTM1NjY4NDk3NyIsInByb2Nlc3NJZCI6ImU5NmI3MWJhLTJiNjQtNDRiMS04N2MwLWE0ZGJmNWMwMzM3ZiIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xNjQiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDFhMDViYjktYmNlYi03ZGMxLTk2ZTMtYTUxYzRiZjMyMjAxIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNTY2ODQ5NzciLCJleHAiOjE3ODg0Mjc3NjcsImlhdCI6MTc4ODQyNjg2NywidXNlcklkIjoiMDE5ZjVmMzktN2M0NC03OWY5LWJjMjUtMTE4ZTE5MDBlOTUyIiwibWVyY2hhbnROYW1lIjoiR29raGFuIn0.KaOKy5pmJgi8QLIJMg1IFtnmIfYMjAc2Fnegf7mBmzs'
GET https://sdk.bkmexpress.com.tr/sdk/transaction/control/MDE5ZmVmOGItNzU2OC03MzlkLTg0ZDEtMDczNDJiN2ZlM2Y1LTU4ZjA1M2I1LWI1OTQtNGVkZi05NjE5LWU0YzYyMzg3ZTZhYw==
curl --request GET \
--url https://sdk.bkmexpress.com.tr /sdk/transaction/control/MDE5ZmVmOGItNzU2OC03MzlkLTg0ZDEtMDczNDJiN2ZlM2Y1LTU4ZjA1M2I1LWI1OTQtNGVkZi05NjE5LWU0YzYyMzg3ZTZhYw== \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJVSUQiOiIwMTlmZWY4Yi03NTY4LTczOWQtODRkMS0wNzM0MmI3ZmUzZjUiLCJpZGVudGlmaWVyIjoiNTM1NjY4NDk3NyIsInByb2Nlc3NJZCI6ImU5NmI3MWJhLTJiNjQtNDRiMS04N2MwLWE0ZGJmNWMwMzM3ZiIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xNjQiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDFhMDViYjktYmNlYi03ZGMxLTk2ZTMtYTUxYzRiZjMyMjAxIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNTY2ODQ5NzciLCJleHAiOjE3ODg0Mjc3NjcsImlhdCI6MTc4ODQyNjg2NywidXNlcklkIjoiMDE5ZjVmMzktN2M0NC03OWY5LWJjMjUtMTE4ZTE5MDBlOTUyIiwibWVyY2hhbnROYW1lIjoiR29raGFuIn0.KaOKy5pmJgi8QLIJMg1IFtnmIfYMjAc2Fnegf7mBmzs'
{
"data": {
"posResponseMessage": "VposPaymentSuccess",
"successAmount": 105,
"authCode": "153984",
"hostRefCode": "624611256919",
"procReturnCode": "00",
"secureType": "Tds",
"transactionType": "Auth",
"installment": 1,
"terminalInformation": null,
"cardBrand": "Troy",
"cardType": "None",
"cardNumber": "658783******4995",
"bankTransactionDate": "2026-09-03T11:31:07.5140269+03:00",
"transactionDate": "2026-09-03T11:30:02.181",
"paymentId": 0,
"hostRefNum": null,
"success": true,
"message": "VposPaymentSuccess",
"code": "7000",
"bankTransactionId": "26246LfGC00120058",
"orderId": "281848b9-9c08-449d-aa2a-e574601c597a",
"bankName": "HALKBANK",
"alias": "Halk1"
}
}
Start Payment with Registered Card
Kullanıcının yeni kart girerek ödeme başlatmasını sağlar. Kart doğrulama sonrası bex havuzuna kaydedilir; güvenlik tipi, 3D callback, POS yönlendirme, hash kuralları ve orderId kuralları Start Payment ile aynı mantıkta çalışır.
Bu Akışın Farkı- Kart datası SDK içinde PCI-DSS kurallarına uyumlu şekilde şifrelenir. Şifrelenmiş veri tokenizedPan alanı ile ödeme servisine iletilir.
- Ödeme akışı sırasında 3D Secure veya OTP doğrulaması gerçekleşirse, kart otomatik olarak bex hesabına kaydedilir.
- Başarılı ödeme sonrası kart ilgili bex hesabı ile ilişkilendirilir ve sonraki işlemlerde kayıtlı kart olarak kullanılabilir.
Sözleşmeler ve Kullanıcı OnayıBu servis ödeme akışı, doğrulama adımları, response yönetimi ve finansallaştırma süreçleri açısından Start Payment servisi ile birebir aynıdır. Servis detayları ve iş kuralları için Start Payment sayfasını referans alabilirsiniz.
Kart kaydederek ödeme akışında kullanıcıya gösterilmesi gereken sözleşme ve onay bilgileri bex tarafından döndürülür. SDK Initialization yapıldıktan sonra onay bekleyen sözleşmeler response içerisinde pendingAgreements ve ilgili açıklama alanları ile iletilir. Bu sözleşmeler için kullanıcı onayı SDK tarafından sağlanan checkbox komponenti ile alınmalıdır.
Response içerisinde
typealanı "AGREEMENT" olarak döndüğünde UI’da checkbox gösterilmelidir.
pendingAgreements Response ParametereleriiiiResponse içerisinde
typealanı “INFO” olarak döndüğünde (örneğin KVKK) içerik kullanıcıya bilgilendirme metni olarak gösterilmeli checkbox onayının bir parçası olmamalıdır.
| Parametre | Açıklama |
|---|---|
| id | Sözleşme Id'si |
| code | Sözleşme Kodu KVKK → KVKK TERMS_OF_USE → Kullanıcı Sözleşmesi MARKETING → Ticari Elektronik İleti İzni |
| type | Sözleşme Tipi (checkbox çıkmasını belirler) AGREEMENT → checkbox yer alır. (Örn: Kullanıcı Sözleşmesi, Ticari Elektronik İleti İzni) INFO → checkbox yer almaz. (Örn: KVKK) |
| contentType | Gösterim için içerik tipi HTML URL |
| title | Sözleşmenin gösterileceği sayfada kullanılacak olan başlık bilgisi |
| content | Sözleşme Metinleri (URL ise URL bilgisi, raw html ise raw html değeri) |
| labelHighlight | Sözleşme onayı için gösterilen metinde highlight edilmesi beklenen kelime veya kelime grubunu iletir. Örn: "Kullanıcı Sözleşmesini okudum, onaylıyorum." cümlesi için labelHighlight parametre değeri olarak "Kullanıcı Sözleşmesi" iletilebilir. |
| label | Sözleşme onayı için gösterilen metin. Örn: "Kullanıcı Sözleşmesini okudum, onaylıyorum." |
| mandatory | Onay ve gösterim zorunlu mu? true / false Kullanıcı sözleşmesi ve KVKK için true Ticari Elektronik İleti İzni için false |
| consentType | Onay tipi Tek bir onay ve gösterim mi gerekmekte yoksa her bir aksiyonda onay ve gösterim yapılmalı mı? ONCE PER_ACTION |
{
"pendingAgreements": [
{
"id": 1000,
"code": "TERMS_OF_USE",
"title": "BKM Express Çerçeve Ödeme Hizmetleri Kullanım Sözleşmesi",
"type": "AGREEMENT",
"label": "Sonraki ödemelerimde kullanmak için Kartımı bex’e kaydederek Kullanıcı Sözleşmesini okudum, onaylıyorum.",
"labelHighlight": "Kullanıcı Sözleşmesi",
"contentType": "URL",
"content": "https://bkmexpress.com.tr/TERMS_OF_USE",
"consentType": "ONCE",
"mandatory": true
},
{
"id": 2000,
"code": "KVKK",
"title": "BKM Express KVKK Aydınlatma Metni",
"type": "INFO",
"label": "Kart bilgilerin bex KVKK Aydınlatma Metni kapsamında Bankalararası Kart Merkezi A.Ş. (BKM) tarafından işlenmektedir.",
"labelHighlight": "KVKK Aydınlatma Metni",
"contentType": "URL",
"content": "https://bkmexpress.com.tr/KVKK",
"consentType": "PER_ACTION",
"mandatory": true
}
]
}
Zorunlu sözleşmeler onaylanmadığı takdirde MISSED_MANDATORY_AGREEMENT hatası alınacaktır.
Pre Auth / Post Auth
Pre Auth / Post Auth akışı, ödeme tutarının önce kart üzerinde provizyon olarak bloke edilmesini ve daha sonra merchant backend üzerinden finansallaştırılmasını sağlar. Bu model, hizmetin veya siparişin daha sonra kesinleştiği senaryolarda ödeme riskini azaltmak ve tahsilat zamanını kontrollü yönetmek için kullanılır.
Pre Auth SDK üzerinden başlar
Kayıtlı kartla ödeme ve kart kaydederek ödeme servislerinde işlem, standart ödeme akışı gibi SDK üzerinden başlatılır.
Post Auth backend ile kapanır
Başarılı ön provizyonun finansallaşması SDK tarafından değil, merchant backend üzerinden çağrılan kapama servisi ile yapılır.
Taksit desteklenmez
Pre Auth / Post Auth akışında request modeli standart ödeme servisleri ile aynı yapıdadır; ancak bu işlem tipinde taksitli işlem desteklenmez.
Pre Auth Başlatma
- Pre Auth işlemi, Kayıtlı Kartla Ödeme Başlat (Start Payment) veya Kart Kaydederek Ödeme Başlat(Start Payment with Registered Card) akışları üzerinden başlatılır.
- Request içinde transactionType alanı PRE_AUTH olarak gönderildiğinde işlem ön provizyon olarak değerlendirilir.
- Doğrulama yöntemi paymentSecurity alanı ile belirlenir.
- paymentSecurity =OTP gönderilirse OTP doğrulamalı Pre Auth akışı çalışır.
- paymentSecurity =TDS gönderilirse 3D Secure doğrulamalı Pre Auth akışı çalışır.
- Başarılı doğrulama sonrası işlem tutarı kart üzerinde bloke edilir; bu aşamada tahsilat finansallaşmaz.
Post Auth Kapama
- Post Auth, daha önce başarılı tamamlanmış bir Pre Auth işlemini finansallaştırmak için kullanılır.
- Bu işlem SDK üzerinden yapılmaz; yalnızca merchant backend tarafından backend-to-backend servis olarak çağrılır.
- Kapama işleminde ilgili Pre Auth işlemine ait işlem referansı kullanılmalıdır.
- Kapama başarılı olduğunda işlem finansal olarak tamamlanır.
- Post Auth tutarı, banka kurallarının izin verdiği ölçüde ilk Pre Auth tutarından farklı gönderilebilir. Marjlı kapama desteği banka, kart ürünü ve üye işyeri tanımlarına bağlıdır.
- Bu serviste taksit desteklenmez; taksit bilgisi gönderilmemelidir.
- Kapama yapılmayan provizyonlar banka kuralları doğrultusunda belirli süre sonunda serbest bırakılabilir.
Bu servis ödeme akışı, doğrulama adımları, response yönetimi ve finansallaştırma süreçleri açısından Start Payment servisi ile birebir aynıdır. Servis detayları ve iş kuralları için Start Payment sayfasını referans alabilirsiniz.
Marjlı Kapama Örneği: Pre Auth işlemi 1.000 TRY üzerinden oluşturulmuş, Post Auth kapama talebi banka kuralının izin verdiği marj kapsamında 1.050 TRY olarak gönderilmiştir.
Marjlı Post Auth: Post Auth sırasında gönderilen kapama tutarı, bankanın izin verdiği marj oranı ve işlem kuralları dahilinde ilk Pre Auth tutarından farklı olabilir. Bankanın marjlı kapamayı desteklemediği veya talep edilen tutarın izin verilen sınırı aştığı durumlarda işlem reddedilebilir.
Debit Kart Kullanımı: Pre Auth / Post Auth işlemlerinin debit kartlarla kullanılabilirliği, kartı sağlayan bankanın ve kart ürününün kurallarına bağlıdır. Bankanın debit kartlarda ön provizyon işlemine izin vermediği durumlarda talep banka tarafından reddedilebilir.
Önemli Not: transactionType=PRE_AUTH gönderilmediğinde işlem standart ödeme akışı olarak değerlendirilir. Pre Auth işlemi finansal tahsilat değil, kart üzerinde provizyon/bloke oluşturma işlemidir.
Backend Servisleri
Generate Token
Generate Token servisi yanlızca B2B(backend-to-backend) çalışır. Client bu servise doğrudan erişemez. Tüm token üretimi Merchant backend üzerinden yapılır ve üretilen Bearer token bilgisi güvenli şekilde client SDK’ya aktarılır.
- Sadece Merchant backend çağırabilir.
- Token en fazla 15 dakika geçerlidir. 15 dakikalık token süresi dolduğunda Merchant Backend'in otomatik olarak tekrar generateToken servisine gidip yeni bir token alacak şekilde ("Token Refresh" mantığı) kurgulanması akışın sürekliliği için kritiktir.
- Token client SDK çağrılarında Authorization Bearer olarak taşınır.
- Servis IP secure çalışır; erişim izni network seviyesinde yalnızca önceden tanımlanmış sabit IP adresleri için verilir.
- Üye işyerinin Generate Token servisini çağıracak sabit IP bilgilerini önceden bex Dijital Entegrasyon ekibi ile paylaşması gerekir.
- Tanımlı IP bilgilerinde değişiklik olacaksa, erişim kesintisi yaşanmaması için değişiklik öncesi Dijital Entegrasyon ekibine bilgi vermelidir.
| Parametre | Tip | Zorunlu | Kısıtlar | Açıklama |
|---|---|---|---|---|
| merchantId | string | Required | Max Length = 36 | bex tarafından üretilen merchant unique değeri. (bu bilgi bex ekibi tarafından oluşturulup üye işyeri ile paylaşılacaktır). |
| gsmNo | string | Required | Max Length = 10 | Son kullanıcı telefon numarası. |
| merchantUserId | string | Required | Max Length = 255 | Merchant tarafından üretilen son kullanıcıya ait tekil değer. |
- Test
- Preprod
- Prod
POST https://bexmerchant-test.bkmtest.com.tr/merchant/generateToken
curl --request POST \
--url https://bexmerchant-test.bkmtest.com.tr/merchant/generateToken \
--header 'accept: */*' \
--header 'content-type: application/json' \
--data '{
"merchantId": "019df2fb-bdaf-71f9-8150-3cedeaf7fa48",
"gsmNo": "5374407074",
"merchantUserId": "YBX_5374407074"
}'
POST https://bexmerchant-preprod.bkmtest.com.tr/sdk/generateToken
curl --request POST \
--url https://bexmerchant-preprod.bkmtest.com.tr/merchant/generateToken \
--header 'accept: */*' \
--header 'content-type: application/json' \
--data '{
"merchantId": "019df2fb-bdaf-71f9-8150-3cedeaf7fa48",
"gsmNo": "5374407074",
"merchantUserId": "YBX_5374407074"
}'
POST https://merchant.bkmexpress.com.tr/merchant/generateToken
curl --request POST \
--url https://merchant.bkmexpress.com.tr/merchant/generateToken \
--header 'accept: */*' \
--header 'content-type: application/json' \
--data '{
"merchantId": "019df2fb-bdaf-71f9-8150-3cedeaf7fa48",
"gsmNo": "5374407074",
"merchantUserId": "YBX_5374407074"
}'
| Parametre | Açıklama |
|---|---|
| data(object) | Başarılı response durumunda doldurulan nesne. |
| token | Bearer olarak kullanılacak token değeri. |
| id | bex tarafında kullanılan işleme ait benzersiz değer. |
| error(object) | Hatalı response durumunda doldurulan nesne. |
| title | Hata başlığı. |
| code | Hata kodu. |
| message | Hatanın son kullanıcıya gösterilecek açıklaması. |
| technicalMessage | Hatanın Teknik açıklaması. |
| priority | Hata öncelik sırası. |
{
"data": {
"token": "eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJVSUQiOiIxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTIiLCJpZGVudGlmaWVyIjoiNTM3NDQwNzA3NCIsInByb2Nlc3NJZCI6ImJlMWMxMGE1LTY1OGMtNGRkNy1hYTRjLWUwYWFjYjI3YzdkNCIsIlJ1bGUiOiJNZXJjaGFudENvbnRyb2wiLCJtZXJjaGFudFVzZXJJZCI6IjEyMyIsImV4cCI6MTc4MDg2MjY2OSwiaWF0IjoxNzc0ODYyNzI5fQ.GS1RQFWKvozfn7itpKctKz_HWJTYRZunQD6GVbc4aC0",
"id": "be1c10a5-658c-4dd7-aa4c-e0aacb27c7d4"
}
}
{
"error": {
"title": "MERCHANT_USER_ID_IS_REQUIRED",
"code": 1013,
"message": "İşleminizi şu anda gerçekleştiremiyoruz.",
"technicalMessage": "merchantUserId parametresi eksik veya hatalı.",
"priority": 0
}
}
Complete Payment
Complete Payment, Start Payment veya Start Payment with Card Registration çağrıları sonrasında doğrulama adımı başarıyla tamamlandığında merchant backend tarafından tetiklenir. Bu servis bankaya finansal talebi iletir ve işlemin gerçek otorizasyon / finansallaşma sonucu burada alınır.
İş Kuralları- Bu servis yalnızca merchant backend tarafından çağrılmalıdır.
- Client SDK veya client uygulama Complete Payment servisini doğrudan çağırmamalıdır.
- Complete Payment çağrısı için gerekli transactionId, daha önce başlatılmış ve başarıyla doğrulanmış bir ödeme akışından gelmelidir.
- OTP veya 3D doğrulama tamamlanmadan Complete Payment çağrısı yapılmamalıdır.
- 3D challenge sonucu kullanıcı tarafında başarılı görünse bile finansal sonuç yalnızca Complete Payment response’u ile kesinleşir.
- Merchant backend, callback veya polling ile doğrulama tamamlandığını teyit ettikten sonra Complete Payment çağrısını başlatmalıdır.
- Aynı transactionToken ile tekrar eden completion çağrıları için sistem idempotent davranış gösterebilir veya duplicate completion hatası üretebilir.
- Servis IP secure çalışır; erişim izni network seviyesinde yalnızca önceden tanımlanmış sabit IP adresleri için verilir.
- Tanımlı IP bilgilerinde değişiklik olacaksa, erişim kesintisi yaşanmaması için değişiklik öncesi Dijital Entegrasyon ekibine bilgi vermelidir.
| Parametre | Tip | Zorunlu | Kısıtlar | Açıklama |
|---|---|---|---|---|
| merchantId | string | Required | Max: 36 | bex tarafından üretilen merchant unique değeri. (bu bilgi bex ekibi tarafından oluşturulup üye işyeri ile paylaşılacaktır). |
| gsmNo | string | Required | Max: 10 | Son kullanıcı telefon numarası. |
| merchantUserId | string | Required | Max: 255 | Merchant tarafından üretilen son kullanıcıya ait tekil değer. |
| transactionId | string | Required | Max: 36 | Her işlem özelinde üretilmesi beklenen benzersiz değer. |
| amount | double | Required | Ödemenin tutar bilgisi Format: 12.00 12.54 122345.34 | |
| transactionDate | string | Required | Tarih-saat bilgisi. ISO 8601 Format: YYYY-MM-DDTHH:mm:ss.sssZ | |
| orderId | string | Required | Max: 255 | Ödeme işlemine ait sipariş numarası. |
| installmentCount | number | Required | Max: 2 | Taksit bilgisi. Tek çekim işlemlerde “1” gönderilmelidir. |
- Test
- Preprod
- Prod
POST https://bexmerchant-test.bkmtest.com.tr/merchant/transaction/completePayment
curl --request POST \
--url https://bexmerchant-test.bkmtest.com.tr/merchant/transaction/completePayment \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJpZGVudGlmaWVyIjoiNTM3NDQwNzA3NCIsInBvc0RhdGEiOiJJanNQZnlPd2pFUTFrTUU4cStYZkFjNFNMcC9XaUU1dTArcWtzSTRKVm5YNkE1RkU5K2QwNUVFbVhpQkhwY2VuSjJTb3cyZkZVM3QvVHo5dmx6ZWxBZ3kyRER5VDd5VnZIVnNIWEVjNnVHNVBRa1l3K1BEZ0E3OHZWWnIxa3FaQ2JHT0xreityWldXSERUSWRsY1BXdUNUZVdCQ2NVcGdNOE5rQzc1UStTYjBCR3UrSnJwZUNGOVNTSHVYZ2ZNRnpjejBmMllFVU83bXlyc3lKd2w1OC84dWNMWXhBVk4rL0hudTYrMFRWemlZbVF5U29BNFJBOGdsMTR3RmNORDFHdGF0cFVVT3NMeE5PWVFHMVczMGRlaHVDRUNYTGRKaFhPejFrL0lJTEk0N3ZNQ0RGZW1kSVk2bG5iK0xIWFE9PSIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xMjMiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDE5ZTIxMGEtOTc5NC03NDAwLWI2YjgtZTBhMzM2MzUyMGMwIiwidXNlcklkIjoiMDE5YzJkZjktMWU3MC03OGM1LWFiMGUtY2VhZjg3NzNkNWM5IiwibWVyY2hhbnROYW1lIjoiQWhtLWV0IiwiVUlEIjoiMDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4IiwicHJvY2Vzc0lkIjoiZTQ4OTc5MTMtMGU1MS00NTA0LTg1YjYtMDE0ZmVlYWViZTIyIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNzQ0MDcwNzQiLCJleHAiOjE3ODQ3ODI3MDIsImlhdCI6MTc4NDc4MTgwMn0.vTiYiId9BObzOAU3TIT1WlwkrwfFsHisVOH3BF026kw' \
--header 'content-type: application/json' \
--data '{
"merchantId": "019df2fb-bdaf-71f9-8150-3cedeaf7fa48",
"gsmNo": "5374407074",
"merchantUserId": "YBX_5374407074",
"amount": 222.41,
"transactionDate": "2026-07-23T07:43:42.205",
"currency": "TRY",
"installmentCount": "1",
"transactionId": "48e43cb1-16d7-42a7-a742-4f04c1354512"
}'
POST https://bexmerchant-preprod.bkmtest.com.tr/merchant/transaction/completePayment
curl --request POST \
--url https://bexmerchant-preprod.bkmtest.com.tr/merchant/transaction/completePayment \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJpZGVudGlmaWVyIjoiNTM3NDQwNzA3NCIsInBvc0RhdGEiOiJJanNQZnlPd2pFUTFrTUU4cStYZkFjNFNMcC9XaUU1dTArcWtzSTRKVm5YNkE1RkU5K2QwNUVFbVhpQkhwY2VuSjJTb3cyZkZVM3QvVHo5dmx6ZWxBZ3kyRER5VDd5VnZIVnNIWEVjNnVHNVBRa1l3K1BEZ0E3OHZWWnIxa3FaQ2JHT0xreityWldXSERUSWRsY1BXdUNUZVdCQ2NVcGdNOE5rQzc1UStTYjBCR3UrSnJwZUNGOVNTSHVYZ2ZNRnpjejBmMllFVU83bXlyc3lKd2w1OC84dWNMWXhBVk4rL0hudTYrMFRWemlZbVF5U29BNFJBOGdsMTR3RmNORDFHdGF0cFVVT3NMeE5PWVFHMVczMGRlaHVDRUNYTGRKaFhPejFrL0lJTEk0N3ZNQ0RGZW1kSVk2bG5iK0xIWFE9PSIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xMjMiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDE5ZTIxMGEtOTc5NC03NDAwLWI2YjgtZTBhMzM2MzUyMGMwIiwidXNlcklkIjoiMDE5YzJkZjktMWU3MC03OGM1LWFiMGUtY2VhZjg3NzNkNWM5IiwibWVyY2hhbnROYW1lIjoiQWhtLWV0IiwiVUlEIjoiMDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4IiwicHJvY2Vzc0lkIjoiZTQ4OTc5MTMtMGU1MS00NTA0LTg1YjYtMDE0ZmVlYWViZTIyIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNzQ0MDcwNzQiLCJleHAiOjE3ODQ3ODI3MDIsImlhdCI6MTc4NDc4MTgwMn0.vTiYiId9BObzOAU3TIT1WlwkrwfFsHisVOH3BF026kw' \
--header 'content-type: application/json' \
--data '{
"merchantId": "019df2fb-bdaf-71f9-8150-3cedeaf7fa48",
"gsmNo": "5374407074",
"merchantUserId": "YBX_5374407074",
"amount": 222.41,
"transactionDate": "2026-07-23T07:43:42.205",
"currency": "TRY",
"installmentCount": "1",
"transactionId": "48e43cb1-16d7-42a7-a742-4f04c1354512"
}'
POST https://merchant.bkmexpress.com.tr/merchant/transaction/completePayment
curl --request POST \
--url https://merchant.bkmexpress.com.tr/merchant/transaction/completePayment \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJpZGVudGlmaWVyIjoiNTM3NDQwNzA3NCIsInBvc0RhdGEiOiJJanNQZnlPd2pFUTFrTUU4cStYZkFjNFNMcC9XaUU1dTArcWtzSTRKVm5YNkE1RkU5K2QwNUVFbVhpQkhwY2VuSjJTb3cyZkZVM3QvVHo5dmx6ZWxBZ3kyRER5VDd5VnZIVnNIWEVjNnVHNVBRa1l3K1BEZ0E3OHZWWnIxa3FaQ2JHT0xreityWldXSERUSWRsY1BXdUNUZVdCQ2NVcGdNOE5rQzc1UStTYjBCR3UrSnJwZUNGOVNTSHVYZ2ZNRnpjejBmMllFVU83bXlyc3lKd2w1OC84dWNMWXhBVk4rL0hudTYrMFRWemlZbVF5U29BNFJBOGdsMTR3RmNORDFHdGF0cFVVT3NMeE5PWVFHMVczMGRlaHVDRUNYTGRKaFhPejFrL0lJTEk0N3ZNQ0RGZW1kSVk2bG5iK0xIWFE9PSIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xMjMiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDE5ZTIxMGEtOTc5NC03NDAwLWI2YjgtZTBhMzM2MzUyMGMwIiwidXNlcklkIjoiMDE5YzJkZjktMWU3MC03OGM1LWFiMGUtY2VhZjg3NzNkNWM5IiwibWVyY2hhbnROYW1lIjoiQWhtLWV0IiwiVUlEIjoiMDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4IiwicHJvY2Vzc0lkIjoiZTQ4OTc5MTMtMGU1MS00NTA0LTg1YjYtMDE0ZmVlYWViZTIyIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNzQ0MDcwNzQiLCJleHAiOjE3ODQ3ODI3MDIsImlhdCI6MTc4NDc4MTgwMn0.vTiYiId9BObzOAU3TIT1WlwkrwfFsHisVOH3BF026kw' \
--header 'content-type: application/json' \
--data '{
"merchantId": "019df2fb-bdaf-71f9-8150-3cedeaf7fa48",
"gsmNo": "5374407074",
"merchantUserId": "YBX_5374407074",
"amount": 222.41,
"transactionDate": "2026-07-23T07:43:42.205",
"currency": "TRY",
"installmentCount": "1",
"transactionId": "48e43cb1-16d7-42a7-a742-4f04c1354512"
}'
| Parametre | Açıklama |
|---|---|
| data(object) | Başarılı response durumunda doldurulan nesne. |
| posResponseMessage | İşlem cevap açıklaması. |
| successAmount | İşlem tutarı. |
| merchantName | İşyeri ismi. |
| authCode | Banka Auth Code değeri. |
| hostRefCode | Banka HostMsg değeri. |
| procReturnCode | Banka Sonuç Kod değeri. |
| secureType | İşlem güvenlik tipi. |
| transactionType | İşlem tipi. |
| installment | İşlem taksit sayısı. |
| terminalInformation | İşlem terminal bilgileri. |
| cardBrand | Kartın markası(TROY/VISA/MASTERCARD) |
| cardType | Kart tipi (Debit/Credit). |
| cardNumber | Maskeli kart numarası. |
| bankTransactionDate | İşlemin banka transaction tarihi. |
| transactionDate | İşlem tarihi. |
| paymentId | İşlem bilgi numarası. |
| hostRefNum | İşlem banka referans numarası. |
| success | İşlem sonucu. |
| message | İşlem cevap açıklaması. |
| code | İşlem cevap kodu. |
| bankTransactionId | Banka Transaction ID değeri. |
| orderId | İşlem sipariş numarası. |
{
"data": {
"posResponseMessage": "VposPaymentSuccess",
"successAmount": 202.0,
"authCode": "354075",
"hostRefCode": "345235407590000261",
"procReturnCode": null,
"secureType": 10.0,
"transactionType" : "Auth",
"installment": 1.0,
"terminalInformation": null,
"cardBrand": 10.0,
"cardType": 0.0,
"cardNumber": "450634******1809",
"bankTransactionDate": "2026-04-03T16:01:13.922419+03:00",
"transactionDate": "2026-04-03T15:57:41.799",
"paymentId": 0.0,
"hostRefNum": null,
"success": true,
"message": "VposPaymentSuccess",
"code": "7000",
"bankTransactionId": "345235407590000261",
"orderId": "BKM_00000000000010387508"
}
}
Post Auth
Post Auth, Start Payment veya Start Payment with Card Registration çağrıları sonrasında Pre Auth adımı başarıyla tamamlandığında merchant backend tarafından tetiklenir. Bu servis bankaya finansal talebi iletir ve işlemin gerçek finansallaşma sonucu burada alınır.
İş Kuralları- Bu servis yalnızca merchant backend tarafından çağrılmalıdır.
- Client SDK veya client uygulama Post Auth servisini doğrudan çağırmamalıdır.
- Post Auth çağrısı için gerekli transactionId, daha önce başlatılmış ve başarıyla Pre Auth’u yapılmış bir ödeme akışından gelmelidir.
- OTP veya 3D doğrulama tamamlanmadan Post Auth çağrısı yapılmamalıdır.
- 3D challenge sonucu kullanıcı tarafında başarılı görünse bile finansal sonuç yalnızca Post Auth response’u ile kesinleşir.
- Merchant backend, callback veya polling ile doğrulama tamamlandığını teyit ettikten sonra Post Auth çağrısını başlatmalıdır.
- Aynı transactionToken ile tekrar eden completion çağrıları için sistem idempotent davranış gösterebilir veya duplicate completion hatası üretebilir.
- Servis IP secure çalışır; erişim izni network seviyesinde yalnızca önceden tanımlanmış sabit IP adresleri için verilir.
- Tanımlı IP bilgilerinde değişiklik olacaksa, erişim kesintisi yaşanmaması için değişiklik öncesi Dijital Entegrasyon ekibine bilgi vermelidir.
| Parametre | Tip | Zorunlu | Kısıtlar | Açıklama |
|---|---|---|---|---|
| merchantId | string | Required | Max: 36 | bex tarafından üretilen merchant unique değeri. (bu bilgi bex ekibi tarafından oluşturulup üye işyeri ile paylaşılacaktır). |
| gsmNo | string | Required | Max: 10 | Son kullanıcı telefon numarası. |
| merchantUserId | string | Required | Max: 255 | Merchant tarafından üretilen son kullanıcıya ait tekil değer. |
| transactionId | string | Required | Max: 36 | Her işlem özelinde üretilmesi beklenen benzersiz değer. |
| amount | double | Required | Ödemenin tutar bilgisi Format: 12.00 12.54 122345.34 | |
| transactionDate | string | Required | Tarih-saat bilgisi. ISO 8601 Format: YYYY-MM-DDTHH:mm:ss.sssZ | |
| orderId | string | Optional | Max: 255 | Ödeme işlemine ait sipariş numarası. |
- Test
- Preprod
- Prod
POST https://bexmerchant-test.bkmtest.com.tr/merchant/transaction/postAuth/completePayment
curl --request POST \
--url https://bexmerchant-test.bkmtest.com.tr/merchant/transaction/postAuth/completePayment \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJpZGVudGlmaWVyIjoiNTM3NDQwNzA3NCIsInBvc0RhdGEiOiJJanNQZnlPd2pFUTFrTUU4cStYZkFjNFNMcC9XaUU1dTArcWtzSTRKVm5YNkE1RkU5K2QwNUVFbVhpQkhwY2VuSjJTb3cyZkZVM3QvVHo5dmx6ZWxBZ3kyRER5VDd5VnZIVnNIWEVjNnVHNVBRa1l3K1BEZ0E3OHZWWnIxa3FaQ2JHT0xreityWldXSERUSWRsY1BXdUNUZVdCQ2NVcGdNOE5rQzc1UStTYjBCR3UrSnJwZUNGOVNTSHVYZ2ZNRnpjejBmMllFVU83bXlyc3lKd2w1OC84dWNMWXhBVk4rL0hudTYrMFRWemlZbVF5U29BNFJBOGdsMTR3RmNORDFHdGF0cFVVT3NMeE5PWVFHMVczMGRlaHVDRUNYTGRKaFhPejFrL0lJTEk0N3ZNQ0RGZW1kSVk2bG5iK0xIWFE9PSIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xMjMiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDE5ZTIxMGEtOTc5NC03NDAwLWI2YjgtZTBhMzM2MzUyMGMwIiwidXNlcklkIjoiMDE5YzJkZjktMWU3MC03OGM1LWFiMGUtY2VhZjg3NzNkNWM5IiwibWVyY2hhbnROYW1lIjoiQWhtLWV0IiwiVUlEIjoiMDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4IiwicHJvY2Vzc0lkIjoiZTQ4OTc5MTMtMGU1MS00NTA0LTg1YjYtMDE0ZmVlYWViZTIyIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNzQ0MDcwNzQiLCJleHAiOjE3ODQ3ODI3MDIsImlhdCI6MTc4NDc4MTgwMn0.vTiYiId9BObzOAU3TIT1WlwkrwfFsHisVOH3BF026kw' \
--header 'content-type: application/json' \
--data '{
"merchantId": "019df2fb-bdaf-71f9-8150-3cedeaf7fa48",
"gsmNo": "5374407074",
"merchantUserId": "YBX_5374407074",
"amount": 222.41,
"transactionDate": "2026-07-23T07:43:42.205",
"currency": "TRY",
"transactionId": "48e43cb1-16d7-42a7-a742-4f04c1354512"
}'
POST https://bexmerchant-preprod.bkmtest.com.tr/merchant/transaction/postAuth/completePayment
curl --request POST \
--url https://bexmerchant-preprod.bkmtest.com.tr/merchant/transaction/postAuth/completePayment \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJpZGVudGlmaWVyIjoiNTM3NDQwNzA3NCIsInBvc0RhdGEiOiJJanNQZnlPd2pFUTFrTUU4cStYZkFjNFNMcC9XaUU1dTArcWtzSTRKVm5YNkE1RkU5K2QwNUVFbVhpQkhwY2VuSjJTb3cyZkZVM3QvVHo5dmx6ZWxBZ3kyRER5VDd5VnZIVnNIWEVjNnVHNVBRa1l3K1BEZ0E3OHZWWnIxa3FaQ2JHT0xreityWldXSERUSWRsY1BXdUNUZVdCQ2NVcGdNOE5rQzc1UStTYjBCR3UrSnJwZUNGOVNTSHVYZ2ZNRnpjejBmMllFVU83bXlyc3lKd2w1OC84dWNMWXhBVk4rL0hudTYrMFRWemlZbVF5U29BNFJBOGdsMTR3RmNORDFHdGF0cFVVT3NMeE5PWVFHMVczMGRlaHVDRUNYTGRKaFhPejFrL0lJTEk0N3ZNQ0RGZW1kSVk2bG5iK0xIWFE9PSIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xMjMiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDE5ZTIxMGEtOTc5NC03NDAwLWI2YjgtZTBhMzM2MzUyMGMwIiwidXNlcklkIjoiMDE5YzJkZjktMWU3MC03OGM1LWFiMGUtY2VhZjg3NzNkNWM5IiwibWVyY2hhbnROYW1lIjoiQWhtLWV0IiwiVUlEIjoiMDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4IiwicHJvY2Vzc0lkIjoiZTQ4OTc5MTMtMGU1MS00NTA0LTg1YjYtMDE0ZmVlYWViZTIyIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNzQ0MDcwNzQiLCJleHAiOjE3ODQ3ODI3MDIsImlhdCI6MTc4NDc4MTgwMn0.vTiYiId9BObzOAU3TIT1WlwkrwfFsHisVOH3BF026kw' \
--header 'content-type: application/json' \
--data '{
"merchantId": "019df2fb-bdaf-71f9-8150-3cedeaf7fa48",
"gsmNo": "5374407074",
"merchantUserId": "YBX_5374407074",
"amount": 222.41,
"transactionDate": "2026-07-23T07:43:42.205",
"currency": "TRY",
"transactionId": "48e43cb1-16d7-42a7-a742-4f04c1354512"
}'
POST https://sdk.bkmexpress.com.tr/sdk/merchant/transaction/postAuth/completePayment
curl --request POST \
--url https://merchant.bkmexpress.com.tr/merchant/transaction/postAuth/completePayment \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJpZGVudGlmaWVyIjoiNTM3NDQwNzA3NCIsInBvc0RhdGEiOiJJanNQZnlPd2pFUTFrTUU4cStYZkFjNFNMcC9XaUU1dTArcWtzSTRKVm5YNkE1RkU5K2QwNUVFbVhpQkhwY2VuSjJTb3cyZkZVM3QvVHo5dmx6ZWxBZ3kyRER5VDd5VnZIVnNIWEVjNnVHNVBRa1l3K1BEZ0E3OHZWWnIxa3FaQ2JHT0xreityWldXSERUSWRsY1BXdUNUZVdCQ2NVcGdNOE5rQzc1UStTYjBCR3UrSnJwZUNGOVNTSHVYZ2ZNRnpjejBmMllFVU83bXlyc3lKd2w1OC84dWNMWXhBVk4rL0hudTYrMFRWemlZbVF5U29BNFJBOGdsMTR3RmNORDFHdGF0cFVVT3NMeE5PWVFHMVczMGRlaHVDRUNYTGRKaFhPejFrL0lJTEk0N3ZNQ0RGZW1kSVk2bG5iK0xIWFE9PSIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xMjMiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDE5ZTIxMGEtOTc5NC03NDAwLWI2YjgtZTBhMzM2MzUyMGMwIiwidXNlcklkIjoiMDE5YzJkZjktMWU3MC03OGM1LWFiMGUtY2VhZjg3NzNkNWM5IiwibWVyY2hhbnROYW1lIjoiQWhtLWV0IiwiVUlEIjoiMDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4IiwicHJvY2Vzc0lkIjoiZTQ4OTc5MTMtMGU1MS00NTA0LTg1YjYtMDE0ZmVlYWViZTIyIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNzQ0MDcwNzQiLCJleHAiOjE3ODQ3ODI3MDIsImlhdCI6MTc4NDc4MTgwMn0.vTiYiId9BObzOAU3TIT1WlwkrwfFsHisVOH3BF026kw' \
--header 'content-type: application/json' \
--data '{
"merchantId": "019df2fb-bdaf-71f9-8150-3cedeaf7fa48",
"gsmNo": "5374407074",
"merchantUserId": "YBX_5374407074",
"amount": 222.41,
"transactionDate": "2026-07-23T07:43:42.205",
"currency": "TRY",
"transactionId": "48e43cb1-16d7-42a7-a742-4f04c1354512"
}'
| Parametre | Açıklama |
|---|---|
| data(object) | Başarılı response durumunda doldurulan nesne. |
| posResponseMessage | İşlem cevap açıklaması. |
| successAmount | İşlem tutarı. |
| merchantName | İşyeri ismi. |
| authCode | Banka Auth Code değeri. |
| hostRefCode | Banka HostMsg değeri. |
| procReturnCode | Banka Sonuç Kod değeri. |
| secureType | İşlem güvenlik tipi. |
| transactionType | İşlem tipi. |
| installment | İşlem taksit sayısı. |
| terminalInformation | İşlem terminal bilgileri. |
| cardBrand | Kartın markası(TROY/VISA/MASTERCARD) |
| cardType | Kart tipi (Debit/Credit). |
| cardNumber | Maskeli kart numarası. |
| bankTransactionDate | İşlemin banka transaction tarihi. |
| transactionDate | İşlem tarihi. |
| paymentId | İşlem bilgi numarası. |
| hostRefNum | İşlem banka referans numarası. |
| success | İşlem sonucu. |
| message | İşlem cevap açıklaması. |
| code | İşlem cevap kodu. |
| bankTransactionId | Banka Transaction ID değeri. |
| orderId | İşlem sipariş numarası. |
{
"data": {
"posResponseMessage": "VposPaymentSuccess",
"successAmount": 400.00,
"authCode": "******",
"hostRefCode": "620107772064",
"procReturnCode": "00",
"secureType": 20,
"transactionType": "Post Auth",
"installment": 1,
"terminalInformation": null,
"cardBrand": 40,
"cardType": 10,
"cardNumber": "979207******8149",
"bankTransactionDate": "2026-07-20T10:05:46.8419872+03:00",
"transactionDate": "2026-07-20T10:05:46.3234487+03:00",
"paymentId": 0,
"hostRefNum": null,
"success": true,
"message": "VposPaymentSuccess",
"code": "7000",
"bankTransactionId": "26201HFuEAcffke0088",
"orderId": "BKM_000000******12098374",
"bankName": "AKBANK",
"alias": "akbnak troy"
}
}
Cancel
Başarılı bir satış veya desteklenen provizyon işleminin, banka ve işlem durumu kuralları çerçevesinde geri alınmasını sağlayan backend-to-backend servistir.
Servisin Amacı- Aynı gün içerisinde gerçekleştirilen hatalı veya vazgeçilen tahsilatları iptal etmek
- Henüz iade sürecine konu olmamış satış işlemini tamamen geri almak
- Banka tarafından desteklenmesi halinde Pre Auth provizyonunu serbest bırakmak
- İptal işlemi yalnızca iptal edilebilir durumdaki başarılı işlemler için yapılabilir.
- Gün sonu veya settlement sürecine dahil olmuş işlemlerde Refund servisi kullanılmalıdır.
- Daha önce tamamen iptal edilmiş ya da tamamen iade edilmiş işlemler tekrar iptal edilemez.
- Pre Auth iptal desteği banka ve kart ürünü kurallarına bağlıdır.
Request Parametereleriİşlemin iptal edilebilirliği işlem tipi, gün sonu durumu, kart ürünü ve banka kurallarına göre değişebilir. İptal edilemeyen finansallaşmış işlemler için Refund servisi kullanılmalıdır.
| Parametre | Tip | Zorunlu | Kısıtlar | Açıklama |
|---|---|---|---|---|
| merchantId | string | Required | Max: 36 | bex tarafından üretilen merchant unique değeri. (bu bilgi bex ekibi tarafından oluşturulup üye işyeri ile paylaşılacaktır). |
| transactionId | string | Required | Max: 36 | Her işlem özelinde üretilmesi beklenen benzersiz değer. |
- Test
- Preprod
- Prod
POST https://bexmerchant-test.bkmtest.com.tr/merchant/transaction/cancel
curl --request POST \
--url https://bexmerchant-test.bkmtest.com.tr/merchant/transaction/cancel \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJpZGVudGlmaWVyIjoiNTM3NDQwNzA3NCIsInBvc0RhdGEiOiI1NHcyeTZWV0Z0UUdmaUlORldrdDVmWmgzOEtMQmo1YmpQR3ZmREdvYnlocWtSTG1LYXJNQXBRSnBabWxlSnoveVRYWHVsaVFwRTBiRFZaN2NNUUV2RERHMjd6VTAzMWlzMXV0bFcwNUs4bmUvM3pUVS9hWk9pamMyR2JqancyWWp5dURoclN0WUFFcFFrbGxLd0h1ZThidEROeXllajRvWGQwdEVNY1R2UGZLSndaZjR2OGtaV0UrU1NTNDEvU1BEN016ZklPemhoNkhSb1B0RTRxWnU1cUQ1aURMODFQYVF3bWhVRXFSUnlWU21VYXJIMi9RT0ZhdStmeXR5Snh3SXArUm9leDc5bU1XQ25lVTF0WmRmYXpUUDlDWisvOCt3YnZDeGUvanhDdTA1R1dic0hLWXFmcDhpOTZzSHc9PSIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xMjMiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDE5ZTIxMGEtOTc5NC03NDAwLWI2YjgtZTBhMzM2MzUyMGMwIiwidXNlcklkIjoiMDE5YzJkZjktMWU3MC03OGM1LWFiMGUtY2VhZjg3NzNkNWM5IiwibWVyY2hhbnROYW1lIjoiQWhtLWV0IiwiVUlEIjoiMDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4IiwicHJvY2Vzc0lkIjoiMmI3NjJhZWUtMjUxNi00ZGZlLWI2YWMtYWExM2Y5MmQzYzFlIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNzQ0MDcwNzQiLCJleHAiOjE3ODQ3ODY5NTAsImlhdCI6MTc4NDc4NjA1MH0.glGDsnHW-b4gcAHxpPkiWzpUMk_AAAeILsL2W2lbono' \
--header 'content-type: application/json' \
--data '{
"merchantId": "019df2fb-bdaf-71f9-8150-3cedeaf7fa48",
"transactionId": "e98c06ec-b633-4c4a-81ab-dda7e8a71170"
}'
POST https://bexmerchant-preprod.bkmtest.com.tr/merchant/transaction/cancel
curl --request POST \
--url https://bexmerchant-preprod.bkmtest.com.tr/merchant/transaction/cancel \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJpZGVudGlmaWVyIjoiNTM3NDQwNzA3NCIsInBvc0RhdGEiOiI1NHcyeTZWV0Z0UUdmaUlORldrdDVmWmgzOEtMQmo1YmpQR3ZmREdvYnlocWtSTG1LYXJNQXBRSnBabWxlSnoveVRYWHVsaVFwRTBiRFZaN2NNUUV2RERHMjd6VTAzMWlzMXV0bFcwNUs4bmUvM3pUVS9hWk9pamMyR2JqancyWWp5dURoclN0WUFFcFFrbGxLd0h1ZThidEROeXllajRvWGQwdEVNY1R2UGZLSndaZjR2OGtaV0UrU1NTNDEvU1BEN016ZklPemhoNkhSb1B0RTRxWnU1cUQ1aURMODFQYVF3bWhVRXFSUnlWU21VYXJIMi9RT0ZhdStmeXR5Snh3SXArUm9leDc5bU1XQ25lVTF0WmRmYXpUUDlDWisvOCt3YnZDeGUvanhDdTA1R1dic0hLWXFmcDhpOTZzSHc9PSIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xMjMiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDE5ZTIxMGEtOTc5NC03NDAwLWI2YjgtZTBhMzM2MzUyMGMwIiwidXNlcklkIjoiMDE5YzJkZjktMWU3MC03OGM1LWFiMGUtY2VhZjg3NzNkNWM5IiwibWVyY2hhbnROYW1lIjoiQWhtLWV0IiwiVUlEIjoiMDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4IiwicHJvY2Vzc0lkIjoiMmI3NjJhZWUtMjUxNi00ZGZlLWI2YWMtYWExM2Y5MmQzYzFlIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNzQ0MDcwNzQiLCJleHAiOjE3ODQ3ODY5NTAsImlhdCI6MTc4NDc4NjA1MH0.glGDsnHW-b4gcAHxpPkiWzpUMk_AAAeILsL2W2lbono' \
--header 'content-type: application/json' \
--data '{
"merchantId": "019df2fb-bdaf-71f9-8150-3cedeaf7fa48",
"transactionId": "e98c06ec-b633-4c4a-81ab-dda7e8a71170"
}'
POST https://merchant.bkmexpress.com.tr/merchant/transaction/cancel
curl --request POST \
--url https://merchant.bkmexpress.com.tr/merchant/transaction/cancel \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJpZGVudGlmaWVyIjoiNTM3NDQwNzA3NCIsInBvc0RhdGEiOiI1NHcyeTZWV0Z0UUdmaUlORldrdDVmWmgzOEtMQmo1YmpQR3ZmREdvYnlocWtSTG1LYXJNQXBRSnBabWxlSnoveVRYWHVsaVFwRTBiRFZaN2NNUUV2RERHMjd6VTAzMWlzMXV0bFcwNUs4bmUvM3pUVS9hWk9pamMyR2JqancyWWp5dURoclN0WUFFcFFrbGxLd0h1ZThidEROeXllajRvWGQwdEVNY1R2UGZLSndaZjR2OGtaV0UrU1NTNDEvU1BEN016ZklPemhoNkhSb1B0RTRxWnU1cUQ1aURMODFQYVF3bWhVRXFSUnlWU21VYXJIMi9RT0ZhdStmeXR5Snh3SXArUm9leDc5bU1XQ25lVTF0WmRmYXpUUDlDWisvOCt3YnZDeGUvanhDdTA1R1dic0hLWXFmcDhpOTZzSHc9PSIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xMjMiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDE5ZTIxMGEtOTc5NC03NDAwLWI2YjgtZTBhMzM2MzUyMGMwIiwidXNlcklkIjoiMDE5YzJkZjktMWU3MC03OGM1LWFiMGUtY2VhZjg3NzNkNWM5IiwibWVyY2hhbnROYW1lIjoiQWhtLWV0IiwiVUlEIjoiMDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4IiwicHJvY2Vzc0lkIjoiMmI3NjJhZWUtMjUxNi00ZGZlLWI2YWMtYWExM2Y5MmQzYzFlIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNzQ0MDcwNzQiLCJleHAiOjE3ODQ3ODY5NTAsImlhdCI6MTc4NDc4NjA1MH0.glGDsnHW-b4gcAHxpPkiWzpUMk_AAAeILsL2W2lbono' \
--header 'content-type: application/json' \
--data '{
"merchantId": "019df2fb-bdaf-71f9-8150-3cedeaf7fa48",
"transactionId": "e98c06ec-b633-4c4a-81ab-dda7e8a71170"
}'
| Parametre | Açıklama |
|---|---|
| data(object) | Başarılı response durumunda doldurulan nesne. |
| posResponseMessage | İşlem cevap açıklaması. |
| successAmount | İşlem tutarı. |
| merchantName | İşyeri ismi. |
| authCode | Banka Auth Code değeri. |
| hostRefCode | Banka HostMsg değeri. |
| procReturnCode | Banka Sonuç Kod değeri. |
| secureType | İşlem güvenlik tipi. |
| transactionType | İşlem tipi. |
| installment | İşlem taksit sayısı. |
| terminalInformation | İşlem terminal bilgileri. |
| cardBrand | Kartın markası(TROY/VISA/MASTERCARD) |
| cardType | Kart tipi (Debit/Credit). |
| cardNumber | Maskeli kart numarası. |
| bankTransactionDate | İşlemin banka transaction tarihi. |
| transactionDate | İşlem tarihi. |
| paymentId | İşlem bilgi numarası. |
| hostRefNum | İşlem banka referans numarası. |
| success | İşlem sonucu. |
| message | İşlem cevap açıklaması. |
| code | İşlem cevap kodu. |
| bankTransactionId | Banka Transaction ID değeri. |
| orderId | İşlem sipariş numarası. |
{
"data": {
"posResponseMessage": "VposCancelSuccess",
"successAmount": 370.4,
"authCode": "000000",
"hostRefCode": "373235652890000261",
"procReturnCode": null,
"secureType": null,
"transactionType": "Cancel",
"installment": null,
"terminalInformation": null,
"cardBrand": 10,
"cardType": 10,
"cardNumber": null,
"bankTransactionDate": "2026-07-21T13:09:17.833",
"transactionDate": "2026-07-21T13:17:57.8004688+03:00",
"paymentId": 0,
"hostRefNum": "373235652890000261",
"success": true,
"message": "VposPaymentSuccess",
"code": "6000",
"bankTransactionId": "373235652890000261",
"orderId": "YKB_0000000012112541",
"bankName": "YAPI VE KREDİ BANKASI A.Ş."
}
}
{
"error": {
"title": "TRANSACTION_ALREADY_CANCELLED",
"code": 1054,
"message": "İşlem daha önce tamamlanmıştır.",
"technicalMessage": "İşlem daha önce tamamlanmıştır.",
"priority": 0
}
}
Refund
Finansallaşmış satış veya Post Auth işlemlerinin tamamının ya da belirli bir bölümünün müşteriye geri ödenmesini sağlayan backend-to-backend servistir. Tam iade, kısmi iade ve aynı işlem üzerinde birden fazla parçalı iade desteklenir.
Servisin Amacı- Satış tutarının tamamını müşteriye iade etmek
- Ürün, hizmet veya teslimat kapsamına göre kısmi iade yapmak
- Aynı işlem üzerinde kalan iade edilebilir tutar dahilinde birden fazla parçalı iade gerçekleştirmek
- Post Auth ile finansallaşmış işlemler için iade sürecini yönetmek
- İade yalnızca başarıyla finansallaşmış işlemler için yapılabilir.
- İade tutarı sıfırdan büyük olmalı ve kalan iade edilebilir tutarı aşmamalıdır.
- Birden fazla parçalı iadenin toplamı orijinal işlem tutarından büyük olamaz.
- Pre Auth aşamasındaki finansallaşmamış işlemler için Refund değil Cancel kullanılmalıdır.
- İadenin karta yansıma süresi banka süreçlerine göre değişebilir.
| Parametre | Tip | Zorunlu | Kısıtlar | Açıklama |
|---|---|---|---|---|
| merchantId | string | Required | Max: 36 | bex tarafından üretilen merchant unique değeri. (bu bilgi bex ekibi tarafından oluşturulup üye işyeri ile paylaşılacaktır). |
| transactionId | string | Required | Max: 36 | Her işlem özelinde üretilmesi beklenen benzersiz değer. |
| transactionAmount | double | Required | Max: 36 | İade edilmek istenen tutar bilgisi Format: 12.00 12.54 122345.34 |
- Test
- Preprod
- Prod
POST https://bexmerchant-test.bkmtest.com.tr/merchant/transaction/refund
curl --request POST \
--url https://bexmerchant-test.bkmtest.com.tr/merchant/transaction/refund \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJpZGVudGlmaWVyIjoiNTM3NDQwNzA3NCIsInBvc0RhdGEiOiI1NHcyeTZWV0Z0UUdmaUlORldrdDVmWmgzOEtMQmo1YmpQR3ZmREdvYnlocWtSTG1LYXJNQXBRSnBabWxlSnoveVRYWHVsaVFwRTBiRFZaN2NNUUV2RERHMjd6VTAzMWlzMXV0bFcwNUs4bmUvM3pUVS9hWk9pamMyR2JqancyWWp5dURoclN0WUFFcFFrbGxLd0h1ZThidEROeXllajRvWGQwdEVNY1R2UGZLSndaZjR2OGtaV0UrU1NTNDEvU1BEN016ZklPemhoNkhSb1B0RTRxWnU1cUQ1aURMODFQYVF3bWhVRXFSUnlWU21VYXJIMi9RT0ZhdStmeXR5Snh3SXArUm9leDc5bU1XQ25lVTF0WmRmYXpUUDlDWisvOCt3YnZDeGUvanhDdTA1R1dic0hLWXFmcDhpOTZzSHc9PSIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xMjMiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDE5ZTIxMGEtOTc5NC03NDAwLWI2YjgtZTBhMzM2MzUyMGMwIiwidXNlcklkIjoiMDE5YzJkZjktMWU3MC03OGM1LWFiMGUtY2VhZjg3NzNkNWM5IiwibWVyY2hhbnROYW1lIjoiQWhtLWV0IiwiVUlEIjoiMDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4IiwicHJvY2Vzc0lkIjoiMmI3NjJhZWUtMjUxNi00ZGZlLWI2YWMtYWExM2Y5MmQzYzFlIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNzQ0MDcwNzQiLCJleHAiOjE3ODQ3ODY5NTAsImlhdCI6MTc4NDc4NjA1MH0.glGDsnHW-b4gcAHxpPkiWzpUMk_AAAeILsL2W2lbono' \
--header 'content-type: application/json' \
--data '{
"merchantId": "019df2fb-bdaf-71f9-8150-3cedeaf7fa48",
"transactionId": "e98c06ec-b633-4c4a-81ab-dda7e8a71170",
"transactionAmount": 100.1
}'
POST https://bexmerchant-preprod.bkmtest.com.tr/merchant/transaction/refund
curl --request POST \
--url https://bexmerchant-preprod.bkmtest.com.tr/merchant/transaction/refund \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJpZGVudGlmaWVyIjoiNTM3NDQwNzA3NCIsInBvc0RhdGEiOiI1NHcyeTZWV0Z0UUdmaUlORldrdDVmWmgzOEtMQmo1YmpQR3ZmREdvYnlocWtSTG1LYXJNQXBRSnBabWxlSnoveVRYWHVsaVFwRTBiRFZaN2NNUUV2RERHMjd6VTAzMWlzMXV0bFcwNUs4bmUvM3pUVS9hWk9pamMyR2JqancyWWp5dURoclN0WUFFcFFrbGxLd0h1ZThidEROeXllajRvWGQwdEVNY1R2UGZLSndaZjR2OGtaV0UrU1NTNDEvU1BEN016ZklPemhoNkhSb1B0RTRxWnU1cUQ1aURMODFQYVF3bWhVRXFSUnlWU21VYXJIMi9RT0ZhdStmeXR5Snh3SXArUm9leDc5bU1XQ25lVTF0WmRmYXpUUDlDWisvOCt3YnZDeGUvanhDdTA1R1dic0hLWXFmcDhpOTZzSHc9PSIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xMjMiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDE5ZTIxMGEtOTc5NC03NDAwLWI2YjgtZTBhMzM2MzUyMGMwIiwidXNlcklkIjoiMDE5YzJkZjktMWU3MC03OGM1LWFiMGUtY2VhZjg3NzNkNWM5IiwibWVyY2hhbnROYW1lIjoiQWhtLWV0IiwiVUlEIjoiMDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4IiwicHJvY2Vzc0lkIjoiMmI3NjJhZWUtMjUxNi00ZGZlLWI2YWMtYWExM2Y5MmQzYzFlIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNzQ0MDcwNzQiLCJleHAiOjE3ODQ3ODY5NTAsImlhdCI6MTc4NDc4NjA1MH0.glGDsnHW-b4gcAHxpPkiWzpUMk_AAAeILsL2W2lbono' \
--header 'content-type: application/json' \
--data '{
"merchantId": "019df2fb-bdaf-71f9-8150-3cedeaf7fa48",
"transactionId": "e98c06ec-b633-4c4a-81ab-dda7e8a71170",
"transactionAmount": 100.1
}'
POST https://merchant.bkmexpress.com.tr/merchant/transaction/refund
curl --request POST \
--url https://merchant.bkmexpress.com.tr/merchant/transaction/refund \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJpZGVudGlmaWVyIjoiNTM3NDQwNzA3NCIsInBvc0RhdGEiOiI1NHcyeTZWV0Z0UUdmaUlORldrdDVmWmgzOEtMQmo1YmpQR3ZmREdvYnlocWtSTG1LYXJNQXBRSnBabWxlSnoveVRYWHVsaVFwRTBiRFZaN2NNUUV2RERHMjd6VTAzMWlzMXV0bFcwNUs4bmUvM3pUVS9hWk9pamMyR2JqancyWWp5dURoclN0WUFFcFFrbGxLd0h1ZThidEROeXllajRvWGQwdEVNY1R2UGZLSndaZjR2OGtaV0UrU1NTNDEvU1BEN016ZklPemhoNkhSb1B0RTRxWnU1cUQ1aURMODFQYVF3bWhVRXFSUnlWU21VYXJIMi9RT0ZhdStmeXR5Snh3SXArUm9leDc5bU1XQ25lVTF0WmRmYXpUUDlDWisvOCt3YnZDeGUvanhDdTA1R1dic0hLWXFmcDhpOTZzSHc9PSIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xMjMiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDE5ZTIxMGEtOTc5NC03NDAwLWI2YjgtZTBhMzM2MzUyMGMwIiwidXNlcklkIjoiMDE5YzJkZjktMWU3MC03OGM1LWFiMGUtY2VhZjg3NzNkNWM5IiwibWVyY2hhbnROYW1lIjoiQWhtLWV0IiwiVUlEIjoiMDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4IiwicHJvY2Vzc0lkIjoiMmI3NjJhZWUtMjUxNi00ZGZlLWI2YWMtYWExM2Y5MmQzYzFlIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNzQ0MDcwNzQiLCJleHAiOjE3ODQ3ODY5NTAsImlhdCI6MTc4NDc4NjA1MH0.glGDsnHW-b4gcAHxpPkiWzpUMk_AAAeILsL2W2lbono' \
--header 'content-type: application/json' \
--data '{
"merchantId": "019df2fb-bdaf-71f9-8150-3cedeaf7fa48",
"transactionId": "e98c06ec-b633-4c4a-81ab-dda7e8a71170",
"transactionAmount": 100.1
}'
| Parametre | Açıklama |
|---|---|
| data(object) | Başarılı response durumunda doldurulan nesne. |
| posResponseMessage | İşlem cevap açıklaması. |
| successAmount | İşlem tutarı. |
| merchantName | İşyeri ismi. |
| authCode | Banka Auth Code değeri. |
| hostRefCode | Banka HostMsg değeri. |
| procReturnCode | Banka Sonuç Kod değeri. |
| secureType | İşlem güvenlik tipi. |
| transactionType | İşlem tipi. |
| installment | İşlem taksit sayısı. |
| terminalInformation | İşlem terminal bilgileri. |
| cardBrand | Kartın markası(TROY/VISA/MASTERCARD) |
| cardType | Kart tipi (Debit/Credit). |
| cardNumber | Maskeli kart numarası. |
| bankTransactionDate | İşlemin banka transaction tarihi. |
| transactionDate | İşlem tarihi. |
| paymentId | İşlem bilgi numarası. |
| hostRefNum | İşlem banka referans numarası. |
| success | İşlem sonucu. |
| message | İşlem cevap açıklaması. |
| code | İşlem cevap kodu. |
| bankTransactionId | Banka Transaction ID değeri. |
| orderId | İşlem sipariş numarası. |
{
"data": {
"posResponseMessage": "VposRefundSuccess",
"successAmount": 10.1,
"authCode": "357718",
"hostRefCode": "373235767390000261",
"procReturnCode": null,
"secureType": null,
"transactionType": "null",
"installment": null,
"terminalInformation": null,
"cardBrand": 10,
"cardType": 10,
"cardNumber": null,
"bankTransactionDate": "2026-07-21T14:11:51.309",
"transactionDate": "2026-07-21T14:12:52.8195153+03:00",
"paymentId": 0,
"hostRefNum": "373235771890000261",
"success": true,
"message": "VposRefundSuccess",
"code": "5000",
"bankTransactionId": "373235771890000261",
"orderId": "YKB_0000000012112584",
"bankName": "YAPI VE KREDİ BANKASI A.Ş."
}
}
{
"error": {
"title": "AMOUNT_VALUE_MUST_BE_SAME",
"code": 1045,
"message": "Ücret değeri farklı olamaz.",
"technicalMessage": "Amount değeri mevcut değerden yüksek",
"priority": 0
}
}
Query
Daha önce oluşturulmuş bir ödeme işleminin güncel durumunu sorgulamak için kullanılan backend-to-backend servistir. Servis yalnızca bilgi döndürür; işlem üzerinde finansal veya operasyonel bir değişiklik oluşturmaz.
Servisin Amacı- Timeout veya bağlantı kesintisi sonrasında işlemin nihai durumunu doğrulamak
- Merchant tarafındaki mutabakat ve kontrol süreçlerini desteklemek
- İptal veya iade sonrasında işlem statüsünü güncel olarak görüntülemek
- Servis herhangi bir finansal hareket oluşturmaz.
- Sorgulama için bex tarafına iletilen merchantTransactionId kullanılmalıdır.
- İşlemin son durumu banka kayıtları dikkate alınarak döndürülür.
- Aynı işlem ihtiyaç halinde birden fazla kez sorgulanabilir.
| Alan Adı | Açıklama |
|---|---|
| paymentTransactionType | İşlem tipi bilgisidir. |
| paymentTransactionStatus | İşlem sonuç bilgisidir. Sorgulanan işlemin sonucunu belirler. Örn: Succeeded ise satış işleminin başarılı olduğunu belirtir. |
| Parametre | Tip | Zorunlu | Kısıtlar | Açıklama |
|---|---|---|---|---|
| merchantId | string | Required | Max: 36 | bex tarafından üretilen merchant unique değeri. (bu bilgi bex ekibi tarafından oluşturulup üye işyeri ile paylaşılacaktır). |
| merchantTransactionId | string | Required | Max: 36 | Ödeme işleminde iletilen benzersiz değer. |
- Test
- Preprod
- Prod
POST https://bexmerchant-test.bkmtest.com.tr/merchant/transaction/query
curl --request POST \
--url https://bexmerchant-test.bkmtest.com.tr/merchant/transaction/query \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJpZGVudGlmaWVyIjoiNTM3NDQwNzA3NCIsInBvc0RhdGEiOiI1NHcyeTZWV0Z0UUdmaUlORldrdDVmWmgzOEtMQmo1YmpQR3ZmREdvYnlocWtSTG1LYXJNQXBRSnBabWxlSnoveVRYWHVsaVFwRTBiRFZaN2NNUUV2RERHMjd6VTAzMWlzMXV0bFcwNUs4bmUvM3pUVS9hWk9pamMyR2JqancyWWp5dURoclN0WUFFcFFrbGxLd0h1ZThidEROeXllajRvWGQwdEVNY1R2UGZLSndaZjR2OGtaV0UrU1NTNDEvU1BEN016ZklPemhoNkhSb1B0RTRxWnU1cUQ1aURMODFQYVF3bWhVRXFSUnlWU21VYXJIMi9RT0ZhdStmeXR5Snh3SXArUm9leDc5bU1XQ25lVTF0WmRmYXpUUDlDWisvOCt3YnZDeGUvanhDdTA1R1dic0hLWXFmcDhpOTZzSHc9PSIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xMjMiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDE5ZTIxMGEtOTc5NC03NDAwLWI2YjgtZTBhMzM2MzUyMGMwIiwidXNlcklkIjoiMDE5YzJkZjktMWU3MC03OGM1LWFiMGUtY2VhZjg3NzNkNWM5IiwibWVyY2hhbnROYW1lIjoiQWhtLWV0IiwiVUlEIjoiMDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4IiwicHJvY2Vzc0lkIjoiMmI3NjJhZWUtMjUxNi00ZGZlLWI2YWMtYWExM2Y5MmQzYzFlIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNzQ0MDcwNzQiLCJleHAiOjE3ODQ3ODY5NTAsImlhdCI6MTc4NDc4NjA1MH0.glGDsnHW-b4gcAHxpPkiWzpUMk_AAAeILsL2W2lbono' \
--header 'content-type: application/json' \
--data '{
"merchantId": "019df2fb-bdaf-71f9-8150-3cedeaf7fa48",
"merchantTransactionId": "e98c06ec-b633-4c4a-81ab-dda7e8a71170"
}'
POST https://bexmerchant-preprod.bkmtest.com.tr/merchant/transaction/query
curl --request POST \
--url https://bexmerchant-preprod.bkmtest.com.tr/merchant/transaction/query \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJpZGVudGlmaWVyIjoiNTM3NDQwNzA3NCIsInBvc0RhdGEiOiI1NHcyeTZWV0Z0UUdmaUlORldrdDVmWmgzOEtMQmo1YmpQR3ZmREdvYnlocWtSTG1LYXJNQXBRSnBabWxlSnoveVRYWHVsaVFwRTBiRFZaN2NNUUV2RERHMjd6VTAzMWlzMXV0bFcwNUs4bmUvM3pUVS9hWk9pamMyR2JqancyWWp5dURoclN0WUFFcFFrbGxLd0h1ZThidEROeXllajRvWGQwdEVNY1R2UGZLSndaZjR2OGtaV0UrU1NTNDEvU1BEN016ZklPemhoNkhSb1B0RTRxWnU1cUQ1aURMODFQYVF3bWhVRXFSUnlWU21VYXJIMi9RT0ZhdStmeXR5Snh3SXArUm9leDc5bU1XQ25lVTF0WmRmYXpUUDlDWisvOCt3YnZDeGUvanhDdTA1R1dic0hLWXFmcDhpOTZzSHc9PSIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xMjMiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDE5ZTIxMGEtOTc5NC03NDAwLWI2YjgtZTBhMzM2MzUyMGMwIiwidXNlcklkIjoiMDE5YzJkZjktMWU3MC03OGM1LWFiMGUtY2VhZjg3NzNkNWM5IiwibWVyY2hhbnROYW1lIjoiQWhtLWV0IiwiVUlEIjoiMDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4IiwicHJvY2Vzc0lkIjoiMmI3NjJhZWUtMjUxNi00ZGZlLWI2YWMtYWExM2Y5MmQzYzFlIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNzQ0MDcwNzQiLCJleHAiOjE3ODQ3ODY5NTAsImlhdCI6MTc4NDc4NjA1MH0.glGDsnHW-b4gcAHxpPkiWzpUMk_AAAeILsL2W2lbono' \
--header 'content-type: application/json' \
--data '{
"merchantId": "019df2fb-bdaf-71f9-8150-3cedeaf7fa48",
"merchantTransactionId": "e98c06ec-b633-4c4a-81ab-dda7e8a71170"
}'
POST https://merchant.bkmexpress.com.tr/merchant/transaction/query
curl --request POST \
--url https://merchant.bkmexpress.com.tr/merchant/transaction/query \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJpZGVudGlmaWVyIjoiNTM3NDQwNzA3NCIsInBvc0RhdGEiOiI1NHcyeTZWV0Z0UUdmaUlORldrdDVmWmgzOEtMQmo1YmpQR3ZmREdvYnlocWtSTG1LYXJNQXBRSnBabWxlSnoveVRYWHVsaVFwRTBiRFZaN2NNUUV2RERHMjd6VTAzMWlzMXV0bFcwNUs4bmUvM3pUVS9hWk9pamMyR2JqancyWWp5dURoclN0WUFFcFFrbGxLd0h1ZThidEROeXllajRvWGQwdEVNY1R2UGZLSndaZjR2OGtaV0UrU1NTNDEvU1BEN016ZklPemhoNkhSb1B0RTRxWnU1cUQ1aURMODFQYVF3bWhVRXFSUnlWU21VYXJIMi9RT0ZhdStmeXR5Snh3SXArUm9leDc5bU1XQ25lVTF0WmRmYXpUUDlDWisvOCt3YnZDeGUvanhDdTA1R1dic0hLWXFmcDhpOTZzSHc9PSIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xMjMiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDE5ZTIxMGEtOTc5NC03NDAwLWI2YjgtZTBhMzM2MzUyMGMwIiwidXNlcklkIjoiMDE5YzJkZjktMWU3MC03OGM1LWFiMGUtY2VhZjg3NzNkNWM5IiwibWVyY2hhbnROYW1lIjoiQWhtLWV0IiwiVUlEIjoiMDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4IiwicHJvY2Vzc0lkIjoiMmI3NjJhZWUtMjUxNi00ZGZlLWI2YWMtYWExM2Y5MmQzYzFlIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNzQ0MDcwNzQiLCJleHAiOjE3ODQ3ODY5NTAsImlhdCI6MTc4NDc4NjA1MH0.glGDsnHW-b4gcAHxpPkiWzpUMk_AAAeILsL2W2lbono' \
--header 'content-type: application/json' \
--data '{
"merchantId": "019df2fb-bdaf-71f9-8150-3cedeaf7fa48",
"merchantTransactionId": "e98c06ec-b633-4c4a-81ab-dda7e8a71170"
}'
| Parametre | Açıklama |
|---|---|
| data(object) | Başarılı response durumunda doldurulan nesne. |
| posResponseMessage | İşlem cevap açıklaması. |
| successAmount | İşlem tutarı. |
| merchantName | İşyeri ismi. |
| authCode | Banka Auth Code değeri. |
| hostRefCode | Banka HostMsg değeri. |
| procReturnCode | Banka Sonuç Kod değeri. |
| secureType | İşlem güvenlik tipi. |
| transactionType | İşlem tipi. |
| installment | İşlem taksit sayısı. |
| terminalInformation | İşlem terminal bilgileri. |
| cardBrand | Kartın markası(TROY/VISA/MASTERCARD) |
| cardType | Kart tipi (Debit/Credit). |
| cardNumber | Maskeli kart numarası. |
| bankTransactionDate | İşlemin banka transaction tarihi. |
| transactionDate | İşlem tarihi. |
| paymentId | İşlem bilgi numarası. |
| hostRefNum | İşlem banka referans numarası. |
| success | İşlem sonucu. |
| message | İşlem cevap açıklaması. |
| code | İşlem cevap kodu. |
| bankTransactionId | Banka Transaction ID değeri. |
| orderId | İşlem sipariş numarası. |
{
"data": {
"success": true,
"code": "6000",
"message": "VposCancelSuccess",
"orderId": "YKB_0000000012112553",
"paymentTransactionType": “Cancel”,
"paymentTransactionStatus": “CancelSucceeded”,
"merchantTransactionId": "798aba40-0986-4bb4-a55a-ce1b4a308f8e",
"amount": 544.92,
"currency": "949",
"paymentTransactionDate": "2026-07-21T13:30:30.347",
"authTransactionDate": null,
"bankCode": "067",
"details": null,
"authCode": "000000",
"refCode": 0,
"hostRefCode": "373235674290000261",
"bankTransactionId": "373235674290000261",
"procReturnCode": null,
"cardType": “CreditCard”,
"cardBrand": “Visa”,
"clientIpAddress": "172.30.0.123",
"lastFourDigits": "9085",
"binNumber": "45063470",
"secureType": Tds ,
"rrn": null
}
}
{
"data": {
"success": true,
"code": "7001",
"message": "ISLEM ONAYLANMADI",
"orderId": "BKM_00000000000012112540",
"paymentTransactionType": “Auth”,
"paymentTransactionStatus": “Failed”,
"merchantTransactionId": "51871176-e5f9-4fe4-9a1d-644f9c54f10b",
"amount": 891.52,
"currency": "949",
"paymentTransactionDate": "2026-07-21T13:08:25.138",
"authTransactionDate": null,
"bankCode": "062",
"details": null,
"authCode": null,
"refCode": 0,
"hostRefCode": "000319",
"bankTransactionId": "620208052954",
"procReturnCode": "05",
"cardType": “CreditCard”,
"cardBrand": “Visa”,
"clientIpAddress": "172.30.0.123",
"lastFourDigits": "6011",
"binNumber": "42731491",
"secureType": “NonSecureOtp”,
"rrn": null
}
}
Unlink
Unlink servisi, bex hesabı ile üye işyeri arasındaki daha önce oluşturulmuş ilişkiyi kaldırmak amacıyla kullanılır. İşlem sonrasında ilgili kullanıcı hesabı, söz konusu üye işyeri ile ilişkilendirilmiş olmaktan çıkar ve bu kullanıcıya ait kayıtlı kartlar ilgili üye işyeri tarafından görüntülenemez.
İş Kuralları- İşlem yalnızca ilgili Merchant ile bex hesabı arasındaki ilişkiyi kaldırır.
- bex hesabı silinmez.
- bex hesabı üzerindeki kayıtlı kartlar silinmez.
- Kullanıcı bilgileri bex sisteminde saklanmaya devam eder.
- Aynı kullanıcı daha sonra Link Account servisi kullanarak yeniden hesabını ilişkilendirebilir.
| Parametre | Tip | Zorunlu | Kısıtlar | Açıklama |
|---|---|---|---|---|
| merchantId | string | Required | Max: 36 | bex tarafından üretilen merchant unique değeri. (bu bilgi bex ekibi tarafından oluşturulup üye işyeri ile paylaşılacaktır). |
| gsmNo | string | Required | Max: 10 | Son kullanıcı telefon numarası. |
- Test
- Preprod
- Prod
POST https://bexmerchant-test.bkmtest.com.tr/merchant/unlinkAccount
curl --request POST \
--url https://bexmerchant-test.bkmtest.com.tr/merchant/unlinkAccount \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJpZGVudGlmaWVyIjoiNTM3NDQwNzA3NCIsInBvc0RhdGEiOiI1NHcyeTZWV0Z0UUdmaUlORldrdDVmWmgzOEtMQmo1YmpQR3ZmREdvYnlocWtSTG1LYXJNQXBRSnBabWxlSnoveVRYWHVsaVFwRTBiRFZaN2NNUUV2RERHMjd6VTAzMWlzMXV0bFcwNUs4bmUvM3pUVS9hWk9pamMyR2JqancyWWp5dURoclN0WUFFcFFrbGxLd0h1ZThidEROeXllajRvWGQwdEVNY1R2UGZLSndaZjR2OGtaV0UrU1NTNDEvU1BEN016ZklPemhoNkhSb1B0RTRxWnU1cUQ1aURMODFQYVF3bWhVRXFSUnlWU21VYXJIMi9RT0ZhdStmeXR5Snh3SXArUm9leDc5bU1XQ25lVTF0WmRmYXpUUDlDWisvOCt3YnZDeGUvanhDdTA1R1dic0hLWXFmcDhpOTZzSHc9PSIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xMjMiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDE5ZTIxMGEtOTc5NC03NDAwLWI2YjgtZTBhMzM2MzUyMGMwIiwidXNlcklkIjoiMDE5YzJkZjktMWU3MC03OGM1LWFiMGUtY2VhZjg3NzNkNWM5IiwibWVyY2hhbnROYW1lIjoiQWhtLWV0IiwiVUlEIjoiMDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4IiwicHJvY2Vzc0lkIjoiMmI3NjJhZWUtMjUxNi00ZGZlLWI2YWMtYWExM2Y5MmQzYzFlIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNzQ0MDcwNzQiLCJleHAiOjE3ODQ3ODY5NTAsImlhdCI6MTc4NDc4NjA1MH0.glGDsnHW-b4gcAHxpPkiWzpUMk_AAAeILsL2W2lbono' \
--header 'content-type: application/json' \
--data '{
"merchantId": "11111111-1111-1111-1111-111111111112",
"gsmNo": "5374407074"
}'
POST https://bexmerchant-preprod.bkmtest.com.tr/merchant/unlinkAccount
curl --request POST \
--url https://bexmerchant-preprod.bkmtest.com.tr/merchant/unlinkAccount \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJpZGVudGlmaWVyIjoiNTM3NDQwNzA3NCIsInBvc0RhdGEiOiI1NHcyeTZWV0Z0UUdmaUlORldrdDVmWmgzOEtMQmo1YmpQR3ZmREdvYnlocWtSTG1LYXJNQXBRSnBabWxlSnoveVRYWHVsaVFwRTBiRFZaN2NNUUV2RERHMjd6VTAzMWlzMXV0bFcwNUs4bmUvM3pUVS9hWk9pamMyR2JqancyWWp5dURoclN0WUFFcFFrbGxLd0h1ZThidEROeXllajRvWGQwdEVNY1R2UGZLSndaZjR2OGtaV0UrU1NTNDEvU1BEN016ZklPemhoNkhSb1B0RTRxWnU1cUQ1aURMODFQYVF3bWhVRXFSUnlWU21VYXJIMi9RT0ZhdStmeXR5Snh3SXArUm9leDc5bU1XQ25lVTF0WmRmYXpUUDlDWisvOCt3YnZDeGUvanhDdTA1R1dic0hLWXFmcDhpOTZzSHc9PSIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xMjMiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDE5ZTIxMGEtOTc5NC03NDAwLWI2YjgtZTBhMzM2MzUyMGMwIiwidXNlcklkIjoiMDE5YzJkZjktMWU3MC03OGM1LWFiMGUtY2VhZjg3NzNkNWM5IiwibWVyY2hhbnROYW1lIjoiQWhtLWV0IiwiVUlEIjoiMDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4IiwicHJvY2Vzc0lkIjoiMmI3NjJhZWUtMjUxNi00ZGZlLWI2YWMtYWExM2Y5MmQzYzFlIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNzQ0MDcwNzQiLCJleHAiOjE3ODQ3ODY5NTAsImlhdCI6MTc4NDc4NjA1MH0.glGDsnHW-b4gcAHxpPkiWzpUMk_AAAeILsL2W2lbono' \
--header 'content-type: application/json' \
--data '{
"merchantId": "11111111-1111-1111-1111-111111111112",
"gsmNo": "5374407074"
}'
POST https://merchant.bkmexpress.com.tr/merchant/unlinkAccount
curl --request POST \
--url https://merchant.bkmexpress.com.tr/merchant/unlinkAccount \
--header 'accept: */*' \
--header 'authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJDb21pbmdUeXBlIjoiTWVyY2hhbnQiLCJpZGVudGlmaWVyIjoiNTM3NDQwNzA3NCIsInBvc0RhdGEiOiI1NHcyeTZWV0Z0UUdmaUlORldrdDVmWmgzOEtMQmo1YmpQR3ZmREdvYnlocWtSTG1LYXJNQXBRSnBabWxlSnoveVRYWHVsaVFwRTBiRFZaN2NNUUV2RERHMjd6VTAzMWlzMXV0bFcwNUs4bmUvM3pUVS9hWk9pamMyR2JqancyWWp5dURoclN0WUFFcFFrbGxLd0h1ZThidEROeXllajRvWGQwdEVNY1R2UGZLSndaZjR2OGtaV0UrU1NTNDEvU1BEN016ZklPemhoNkhSb1B0RTRxWnU1cUQ1aURMODFQYVF3bWhVRXFSUnlWU21VYXJIMi9RT0ZhdStmeXR5Snh3SXArUm9leDc5bU1XQ25lVTF0WmRmYXpUUDlDWisvOCt3YnZDeGUvanhDdTA1R1dic0hLWXFmcDhpOTZzSHc9PSIsImNsaWVudEluZm8iOnsib3NUeXBlIjoiT1RIRVIiLCJpcEFkZHJlc3MiOiIxNzIuMzAuMC4xMjMiLCJhcHBWZXJzaW9uIjpudWxsLCJkZXZpY2VNb2RlbCI6bnVsbCwib3NWZXJzaW9uIjpudWxsfSwiYmV4TGlua0lkIjoiMDE5ZTIxMGEtOTc5NC03NDAwLWI2YjgtZTBhMzM2MzUyMGMwIiwidXNlcklkIjoiMDE5YzJkZjktMWU3MC03OGM1LWFiMGUtY2VhZjg3NzNkNWM5IiwibWVyY2hhbnROYW1lIjoiQWhtLWV0IiwiVUlEIjoiMDE5ZGYyZmItYmRhZi03MWY5LTgxNTAtM2NlZGVhZjdmYTQ4IiwicHJvY2Vzc0lkIjoiMmI3NjJhZWUtMjUxNi00ZGZlLWI2YWMtYWExM2Y5MmQzYzFlIiwiUnVsZSI6IkxpbmtlZE1lcmNoYW50QWNjb3VudCIsIm1lcmNoYW50VXNlcklkIjoiWUJYXzUzNzQ0MDcwNzQiLCJleHAiOjE3ODQ3ODY5NTAsImlhdCI6MTc4NDc4NjA1MH0.glGDsnHW-b4gcAHxpPkiWzpUMk_AAAeILsL2W2lbono' \
--header 'content-type: application/json' \
--data '{
"merchantId": "11111111-1111-1111-1111-111111111112",
"gsmNo": "5374407074"
}'
| Parametre | Açıklama |
|---|---|
| data(object) | Başarılı response durumunda doldurulan nesne. |
| success | İşlemin sonuç bilgisi. |
| error(object) | Hatalı response durumunda doldurulan nesne. |
| title | Hata başlığı. |
| code | Hata kodu. |
| message | Hatanın son kullanıcıya gösterilecek açıklaması. |
| technicalMessage | Hatanın teknik açıklaması. |
| priority | Hata öncelik sırası. |
{
"data": {
"success": true
}
}