Kurallar
Kartla yapılan ödemelerde şüpheli işlem olup olmadığının belirlenmesi işlemi üye işyeri tarafından belirlenen kurallar çalıştırılarak yapılmaktadır. Şüpheli İşlem Kuralları Craftgate tarafından geliştirilen Fraud DSL adını verdiğimiz özel bir dil ile tanımlanmaktadır. Kural tanımlandığında kurala ait aksiyon (bkz: Şüpheli İşlem Aksiyonları) uygulanır.
Şüpheli İşlem Aksiyonları
Aksiyon | Açıklama |
---|---|
REVIEW | İncelemeye Al |
BLOCK | Engelle |
Kural Tanımlama
Kural tanımlama işlemi Şüpheli İşlem Yönetimi > Kural Yönetimi > Yeni Kural Ekle butonu yardımıyla açılan pencerede kural bilgileri girilerek tanımlama yapılabilir.
Tanımlanan kural aksiyonu 'Engelle' ise ödeme işlemi kesilerek üye işyerine FRAUD_BLOCK hata grubu ile hata dönülür.
Tanımlanan kural aksiyonu 'İncelemeye Al' ise ödemeye izin verilir. İnceleme bekleniyor statüsünde bir Şüpheli işlem
kaydı oluşturulur.
Kural Tanımı
Kural tanımı alanında bulunan kural editörü Fraud DSL kullanılarak yapılacak tanımlar için konfigüre
edilmiştir.
Aşağıda detayları bulunan değişken isimleri ve listeler için otomatik tamamlama yaparak kuralların tanımlanmasını
kolaylaştırmak amaçlı geliştirilmiştir.
Fraud DSL
Şüpheli işlemlerin tespit edebilmek için bir fraud kuralı tanımlarken Fraud DSL adı verilen özel bir söz dizimi kullanılmaktadır.
Bu söz dizimi, barındırdığı birçok ön tanımlı değişken ve kullanıcı tanımlı değer listeleri yardımıyla dilediğiniz
kriterleri içeren size özel tanımlar yapmanıza olanak sağlayan oldukça esnek bir yapıdır.
Bir kural bir ya da birden fazla koşuldan oluşabilir, bu koşullar and
operatörü kullanılarak birleştirilip tek bir
kuralı oluşturabilir.
Kural koşulları aşağıda yer alan değişken listesindeki değerler ile oluşturulabilir.
Kural formatı:
[koşul] and [koşul] and ...
Koşul formatı:
[değişken] [operatör] [değer/liste]
Not: boolean
tipindeki değişkenler doğrudan true
veya false
değerlerine sahip olacağı için operatör ve değer
olmadan yani sameCardNumberHasFraudSuspectHourly and ...
şeklinde kullanılabilir
Kural operatörleri
Operatör Adı | Açıklama | Örnek |
---|---|---|
== | Koşulda kullanılan değişkenin tanımlanan değere eşit olduğu koşulunu oluşturur | clientIp == "127.0.0.1 |
!= | Koşulda kullanılan değişkenin tanımlanan değere eşit olmadığı koşulunu oluşturur | clientIp != "127.0.0.1 |
< | Koşulda kullanılan değişkenin tanımlanan değere küçük olduğu koşulunu oluşturur. Sadece veri tipi numerik(integer ya da float) olan değişkenlerde kullanılabilir | sameClientIpIn30Minutes < 3 |
<= | Koşulda kullanılan değişkenin tanımlanan değere küçük ve eşit olduğu koşulunu oluşturur. Sadece veri tipi numerik(integer ya da float) olan değişkenlerde kullanılabilir | sameClientIpIn30Minutes <= 3 |
> | Koşulda kullanılan değişkenin tanımlanan değere büyük olduğu koşulunu oluşturur. Sadece veri tipi numerik(integer ya da float) olan değişkenlerde kullanılabilir | sameClientIpIn30Minutes > 3 |
>= | Koşulda kullanılan değişkenin tanımlanan değere büyük ve eşit olduğu koşulunu oluşturur. Sadece veri tipi numerik(integer ya da float) olan değişkenlerde kullanılabilir | sameClientIpIn30Minutes >= 3 |
in | Koşulda kullanılan değişkenin bir listede tanımlı olduğu koşulunu oluşturur | clientIp in @ipBlackList |
not in | Koşulda kullanılan değişkenin bir listede tanımlı olmadığı koşulunu oluşturur | clientIp not in @ipWhiteList |
Değişkenler
Kuralınızı tanımlarken kullanabileceğiniz tüm değişkenler aşağıda listelenmiştir.
Değişken Adı | Veri Tipi | Açıklama |
---|---|---|
cardNumber | cardFingerprint | Kart Parmak İzi |
cardHolderName | string | Kart Sahibinin Adı |
cardBrand | string | Kart Ailesi |
isThreeDS | boolean | Ödeme isteği 3D Secure olarak mı başlatıldı |
clientIp | string | Müşteri IP Adresi - Ödeme isteğinde gönderilen clientIp bilgisi |
buyerId | integer | Alıcı Üye ID - Ödeme isteğinde gönderilen buyerMemberId bilgisi |
buyerExternalId | string | Alıcı External ID - Ödeme isteğinde gönderilen fraudParams içerisindeki ya da buyerMember a ait externalId bilgisi |
buyerPhoneNumber | string | Alıcı Telefon Numarası - Ödeme isteğinde gönderilen fraudParams içerisindeki ya da buyerMember a ait phoneNumber bilgisi |
buyerEmail | string | Alıcı Email - Ödeme isteğinde gönderilen fraudParams içerisindeki ya da buyerMember a ait email bilgisi |
customFraudVariable | string | Özel Değişken - Ödeme isteğinde gönderilen fraudParams içerisindeki customFraudVariable bilgisi |
paidPrice | float | Tahsil Edilen Tutar |
currency | string | Para Birimi - Ödeme isteğindeki currency bilgisi - Varsayılan TRY - bkz: Para Birimleri |
paymentType | string | Ödeme Tipi - Bkz: Ödeme Tipleri |
binNumber | string | Bin - Ödeme isteğindeki kartın ilk 8 hanesi |
isForeignCard | boolean | Ödeme isteği yabancı kartla mı yapıldı |
hasSuccessPaymentIn30Minutes | boolean | Geçmiş ödemelerde son 30 dk içinde başarılı ödemesi var mı |
hasSuccessPaymentHourly | boolean | Geçmiş ödemelerde son 1 saat içinde başarılı ödemesi var mı |
hasSuccessPaymentDaily | boolean | Geçmiş ödemelerde son 1 gün içinde başarılı ödemesi var mı |
sameClientIpIn30Minutes | integer | Geçmiş ödemelerde son 30 dk içinde aynı IP'den toplam işlem sayısı |
sameClientIpHourly | integer | Geçmiş ödemelerde son 1 saat içinde aynı IP'den toplam işlem sayısı |
sameClientIpDaily | integer | Geçmiş ödemelerde son 1 gün içinde aynı IP'den toplam işlem sayısı |
sameClientIpTotalPaidPriceIn30Minutes | float | Geçmiş ödemelerde son 30 dk içinde aynı IP'den toplam işlem hacmi |
sameClientIpTotalPaidPriceHourly | float | Geçmiş ödemelerde son 1 saat içinde aynı IP'den toplam işlem hacmi |
sameClientIpTotalPaidPriceDaily | float | Geçmiş ödemelerde son 1 gün içinde aynı IP'den toplam işlem hacmi |
sameBuyerIdIn30Minutes | integer | Geçmiş ödemelerde son 30 dk içinde aynı alıcı için işlem sayısı |
sameBuyerIdHourly | integer | Geçmiş ödemelerde son 1 saat içinde aynı alıcı için işlem sayısı |
sameBuyerIdDaily | integer | Geçmiş ödemelerde son 1 gün içinde aynı alıcı için işlem sayısı |
sameBuyerIdTotalPaidPriceIn30Minutes | float | Geçmiş ödemelerde son 30 dk içinde aynı alıcı için toplam işlem hacmi |
sameBuyerIdTotalPaidPriceHourly | float | Geçmiş ödemelerde son 1 saat içinde aynı alıcı için toplam işlem hacmi |
sameBuyerIdTotalPaidPriceDaily | float | Geçmiş ödemelerde son 1 gün içinde aynı alıcı için toplam işlem hacmi |
sameBuyerExternalIdIn30Minutes | integer | Geçmiş ödemelerde son 30 dk içinde aynı externalId değerine sahip alıcı için işlem sayısı |
sameBuyerExternalIdHourly | integer | Geçmiş ödemelerde son 1 saat içinde aynı externalId değerine sahip alıcı için işlem sayısı |
sameBuyerExternalIdDaily | integer | Geçmiş ödemelerde son 1 gün içinde aynı externalId değerine sahip alıcı için işlem sayısı |
sameBuyerExternalIdTotalPaidPriceIn30Minutes | float | Geçmiş ödemelerde son 30 dk içinde aynı externalId değerine sahip alıcı için toplam işlem hacmi |
sameBuyerExternalIdTotalPaidPriceHourly | float | Geçmiş ödemelerde son 1 saat içinde aynı externalId değerine sahip alıcı için toplam işlem hacmi |
sameBuyerExternalIdTotalPaidPriceDaily | float | Geçmiş ödemelerde son 1 gün içinde aynı externalId değerine sahip alıcı için toplam işlem hacmi |
sameBuyerPhoneNumberIn30Minutes | integer | Geçmiş ödemelerde son 30 dk içinde aynı telefon numarası değerine sahip alıcı için işlem sayısı |
sameBuyerPhoneNumberHourly | integer | Geçmiş ödemelerde son 1 saat içinde aynı telefon numarası değerine sahip alıcı için işlem sayısı |
sameBuyerPhoneNumberDaily | integer | Geçmiş ödemelerde son 1 gün içinde aynı telefon numarası değerine sahip alıcı için işlem sayısı |
sameBuyerPhoneNumberTotalPaidPriceIn30Minutes | float | Geçmiş ödemelerde son 30 dk içinde aynı telefon numarası değerine sahip alıcı için toplam işlem hacmi |
sameBuyerPhoneNumberTotalPaidPriceHourly | float | Geçmiş ödemelerde son 1 saat içinde aynı telefon numarası değerine sahip alıcı için toplam işlem hacmi |
sameBuyerPhoneNumberTotalPaidPriceDaily | float | Geçmiş ödemelerde son 1 gün içinde aynı telefon numarası değerine sahip alıcı için toplam işlem hacmi |
sameBuyerEmailIn30Minutes | integer | Geçmiş ödemelerde son 30 dk içinde aynı email değerine sahip alıcı için işlem sayısı |
sameBuyerEmailHourly | integer | Geçmiş ödemelerde son 1 saat içinde aynı email değerine sahip alıcı için işlem sayısı |
sameBuyerEmailDaily | integer | Geçmiş ödemelerde son 1 gün içinde aynı email değerine sahip alıcı için işlem sayısı |
sameBuyerEmailTotalPaidPriceIn30Minutes | float | Geçmiş ödemelerde son 30 dk içinde aynı email değerine sahip alıcı için toplam işlem hacmi |
sameBuyerEmailTotalPaidPriceHourly | float | Geçmiş ödemelerde son 1 saat içinde aynı email değerine sahip alıcı için toplam işlem hacmi |
sameBuyerEmailTotalPaidPriceDaily | float | Geçmiş ödemelerde son 1 gün içinde aynı email değerine sahip alıcı için toplam işlem hacmi |
sameCardNumberIn30Minutes | integer | Geçmiş ödemelerde son 30 dk içinde aynı kart ile işlem sayısı |
sameCardNumberHourly | integer | Geçmiş ödemelerde son 1 saat içinde aynı kart ile işlem sayısı |
sameCardNumberTotalPaidPriceIn30Minutes | float | Geçmiş ödemelerde son 30 dk içinde aynı kart ile toplam işlem tutarı |
sameCardNumberTotalPaidPriceHourly | float | Geçmiş ödemelerde son 1 saat içinde aynı kart ile toplam işlem tutarı |
sameCardNumberHasFraudSuspectIn30Minutes | boolean | Geçmiş ödemelerde son 30 dk içinde aynı kart ile FRAUD_SUSPECT error grubunda ödemesi var mı |
sameCardNumberHasFraudSuspectHourly | boolean | Geçmiş ödemelerde son 1 saat içinde aynı kart ile FRAUD_SUSPECT error grubunda ödemesi var mı |
sameClientIpDistinctCardIn30Minutes | integer | Geçmiş ödemelerde son 30 dk içinde aynı IP'den farklı kart ile alınan işlem sayısı |
sameClientIpDistinctCardHourly | integer | Geçmiş ödemelerde son 1 saat içinde aynı IP'den farklı kart ile alınan işlem sayısı |
sameCustomFraudVariableIn30Minutes | integer | Geçmiş ödemelerde son 30 dk içinde aynı özel değişken değerine sahip işlem sayısı |
sameCustomFraudVariableHourly | integer | Geçmiş ödemelerde son 1 saat içinde aynı özel değişken değerine sahip işlem sayısı |
sameCustomFraudVariableDaily | integer | Geçmiş ödemelerde son 1 gün içinde aynı özel değişken değerine sahip işlem sayısı |
sameCustomFraudVariableTotalPaidPriceIn30Minutes | float | Geçmiş ödemelerde son 30 dk içinde aynı özel değişken değerine sahip toplam işlem hacmi |
sameCustomFraudVariableTotalPaidPriceHourly | float | Geçmiş ödemelerde son 1 saat içinde aynı özel değişken değerine sahip toplam işlem hacmi |
sameCustomFraudVariableTotalPaidPriceDaily | float | Geçmiş ödemelerde son 1 gün içinde aynı özel değişken değerine sahip toplam işlem hacmi |
Kural Örnekleri
Kuralınızı tanımlarken faydalanabileceğiniz örnek tanımlar ve açıklamaları aşağıda listelenmiştir.
Kural | Açıklama |
---|---|
cardNumber in @blockedCardNumbers | Liste kullanım örneği - Engellenmiş kartlarla yapılan işlemleri yakalar |
sameClientIpHourly > 2 and sameClientIpTotalPaidPriceHourly >= 10000 | Geçmiş ödemelerden Hesaplama Örneği - Son 1 saat içerisinde aynı IP adresinden toplam tutarı 10.000 TL'yi aşan en az 3 işlem yapan ödemeleri yakalar |