4.3 BIN Sorgulama Servisi

BIN sorgulama servisi ile bir BIN numarası gönderip kartın detaylı bilgilerine ulaşabilirsiniz.

1- Detayını sorgulamak istediğiniz kartın BIN numarasını (kart numarasının ilk 6 veya 8 hanesini daha doğru sonuç için 8 hane kullanılmasını tavsiye ederiz.) ve aşağıdaki tabloda belirtilen diğer bilgileri https://www.paytr.com/odeme/api/bin-detail adresine POST ile gönderin.

Token üretiminde kullanılacak veriler

Alan adı / tipi Açıklama Zorunlu Kısıtlar
bin_number BIN Numarası: Sorgulama yapılmak istenen karta ait kart numarasının ilk 6 veya 8 hanesi. Maksimum doğrulama için 8 hane kullanın. Evet Maksimum 8 hane olacak şekilde.
merchant_id PayTR Mağaza Paneli > Destek & Kurulum > Entegrasyon Bilgileri sayfası üzerinden ulaşabileceğiniz, mağazanıza özgü değer. Evet -
merchant_salt PayTR Mağaza Paneli > Destek & Kurulum > Entegrasyon Bilgileri sayfası üzerinden ulaşabileceğiniz, mağazanıza özgü değer. Evet -
merchant_key PayTR Mağaza Paneli > Destek & Kurulum > Entegrasyon Bilgileri sayfası üzerinden ulaşabileceğiniz, mağazanıza özgü değer. Evet -


POST REQUEST içeriğinde gönderilecek değerler:

Alan adı / tipi Zorunlu Açıklama
merchant_id(integer) Evet Mağaza no: PayTR tarafından size verilen Mağaza numarası
bin_number(string) Evet BIN Numarası: Kart numarasının ilk 6 veya 8 hanesi
paytr_token(string) Evet Paytr Token: İsteğin sizden geldiğine ve içeriğin değişmediğine emin olmamız için oluşturacağınız değerdir (Hesaplama ile ilgili olarak örnek kodlara bakmalısınız)


2- Yaptığınız bu isteğe cevap JSON formatında döner.
a. BIN Numarası tanmlı değilse (Örneğin bir yurtdışı kartı ise) status değeri “failed” olarak döner.
b. Eğer BIN numarası tanımlı ise status değeri “success” olarak döner ve aşağıdaki tabloda bulunan bilgiler döner.
c. Eğer sorguda bir hatanız varsa status değeri “error” döner. Bu durumda hata detayı için “err_msg” içeriğini kontrol etmelisiniz.

Status “success” durumunda dönen diğer bilgiler aşağıdaki tabloda detaylandırılmıştır.

Alan adı / tipi Değerler Açıklama
status (string) success, error veya failed Status: Sorgulama sonucu
cardType (string) credit / debit Kart Türü: Kartın tipi
businessCard (string) y / n Şirket Kartı: Kartın şirket kartı olup olmadığı bilgisi
bank (string) Örnek: Yapı Kredi Banka: Kartın bankası
brand (string) Örnek: axess, bonus,cardfinans, combo,world, paraf, advantage,maximum,saglamkart Kart Program Ortaklığı İsmi: Kartın program ortaklığı ismi(Kart bir program ortaklığına dahil değil ise değer none olur. Bu durumda ilgili kart ile PayTR üzerinden taksitli işlem yapılamaz.)
schema (string) VISA, MASTERCARD, AMEX, TROY, OTHER Kartın hangi şemaya ait olduğu. (Kartın hangi şemaya ait olduğu bilinmiyorsa OTHER döner.)
bankCode (int) Örnek: 0010 Banka Kodu: Kart bankasının kodu
allow_non3d (string) Y(yes) ve N(no) Non-3D işlem izni sonucu


<?php

    ## BIN sorgulama servisi için kullanılacak örnek kod ##

    ####################### DÜZENLEMESİ ZORUNLU ALANLAR #######################
    #
    ## API Entegrasyon Bilgileri - Mağaza paneline giriş yaparak BİLGİ sayfasından alabilirsiniz.
    $merchant_id    = 'XXXXXX';
    $merchant_key   = 'XXXXXX';
    $merchant_salt  = 'XXXXXX';
    #
    ## Sorgulama yapılmak istenen karta ait kart numarasının ilk 6 veya 8 hanesi. Maksimum doğrulama için 8 hane kullanın.
    $bin_number = "";
    #
    ############################################################################################

    ####### Bu kısımda herhangi bir değişiklik yapmanıza gerek yoktur. #######
    $hash_str = $bin_number . $merchant_id . $merchant_salt;
    $paytr_token=base64_encode(hash_hmac('sha256', $hash_str, $merchant_key, true));
    $post_vals=array(
        'merchant_id'=>$merchant_id,
        'bin_number'=>$bin_number,
        'paytr_token'=>$paytr_token
    );
    ############################################################################################

    $ch=curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://www.paytr.com/odeme/api/bin-detail");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1) ;
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_vals);
    curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 20);

    //XXX: DİKKAT: lokal makinanızda "SSL certificate problem: unable to get local issuer certificate" uyarısı alırsanız eğer
    //aşağıdaki kodu açıp deneyebilirsiniz. ANCAK, güvenlik nedeniyle sunucunuzda (gerçek ortamınızda) bu kodun kapalı kalması çok önemlidir!
    //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

    $result = @curl_exec($ch);

    if(curl_errno($ch))
        die("PAYTR BIN detail request timeout. err:".curl_error($ch));

    curl_close($ch);

    $result=json_decode($result,1);

    if($result['status']=='error')
        die("PAYTR BIN detail request error. Error:".$result['err_msg']);
    elseif($result['status']=='failed')
        die("BIN tanımlı değil. (Örneğin bir yurtdışı kartı)");
    else
        print_r($result);

?>


BIN Sorgulama örnek kodları indirmek için tıklayın.