KULLANICININ KAYITLI KART LİSTESİNİ ALMA (CAPI LIST)
1) Bir kullanıcı ödeme işlemine başlarken kullanıcıya PayTR’da kayıtlı olan kartları listelemek için
https://www.paytr.com/odeme/capi/list adresine aşağıdaki parametreler ile istek yapın.
Token üretiminde kullanılacak veriler
| Alan adı / tipi | Açıklama | Zorunlu | Kısıtlar | 
|---|---|---|---|
| utoken | Kart kayıt sonrası ödeme bildiriminde tarafınıza PayTR sisteminden bildirilen kullanıcıya özel token | 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ı | 
| utoken (string) | Evet | User Token: Kart kayıt sonrası ödeme bildiriminde tarafınıza PayTR sisteminden bildirilen kullanıcıya özel token | 
| 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) Yapılan isteğe aşağıdaki tabloda bulunan değerler JSON formatında dönecektir. Gönderdiğiniz bilgiler ile herhangi bir
eşleşme bulunamadığında cevap boş JSON olarak döner.
| Alan adı / tipi | Zorunlu | Olası/Örnek Değerler | 
|---|---|---|
| status (string) | Status: Hata durumunda error olarak döner, işlem başarılı olduğunda döndürülmez | error | 
| err_msg (string) | Error Message: İstek başarısız olduğu durumlarda err_msg’de hata nedeni döndürülür | Örnek: Bağlantı hatası oluştu | 
| ctoken (string) | Card Token: Kullanıcının kayıtlı kartını tanımlayan token | |
| last_4 (string) | Son 4: Kayıtlı kartın son 4 hanesi | |
| require_cvv (string) | CVV gerekli: Bu kayıtlı kart ile ödeme yapmak için CVV gerekip gerekmediği | 0 veya 1 (Bir kart için 1 dönerse, kart ile ödeme yapılabilmesi için kullanıcıdan CVV bilgisini almanız gerekmektedir) | 
| month (string) | Ay: Kartının son kullanma tarihinin ay bilgisi | Örnek: 05 | 
| year (string) | Yılı: Kartının son kullanma tarihinin yıl bilgisi | Örnek: 28 | 
| c_bank (string) | Banka: Kartının bankası | Örnek: Yapı Kredi | 
| c_name | Adı Soyadı: Kullanıcının kart kayıt sırasında girdiği ad soyadı | |
| c_brand (string) | Kart Program Ortaklığı İsmi | Örnek: maximum, bonus,world vb. | 
| c_type (string) | Kart Tipi: Kredi kartı veya banka kartı / ön ödemeli kart | credit veya debit | 
| businessCard (string) | Şirket Kartı: Kartın şirket kartı olup olmadığı bilgisi | y / n | 
| initial (string) | Kart Şeması: 2 ve 5 MasterCard, 3 Amex, 4 VISA, 9 TROY | 2,3,4,5,9 | 
| schema (string) | Kartın şeması: Kartın hangi şemaya ait olduğu bilinmiyorsa OTHER döner. | VISA, MASTERCARD, AMEX, TROY, vb. | 
3) Dönen kart bilgileri alınarak kullanıcıya seçebileceği kayıtlı kartlarını listeleyin.
4) Seçilen kayıtlı kartın ctoken bilgisi ve kullanıcıya ait utoken bilgisini kullanarak ödeme başlatın (Eğer seçilen kart için
require_cvv değeri 1 ise kullanıcıya CVV gireceği bir alan sunmalısınız ve ödeme isteğinde CVV'yi göndermelisiniz).
Bu işlem sonunda kayıtlı kart listesi JSON formatında döner.
<?php
    ## utoken ile kayıtlı kartların listesi alındığında 1nci adım dokümanında ki zorunlu alanları tamamlayamıyoruz.
    ## Kayıtlı bir kart ile ödeme işlemini tamamlama adımını tarif edebilir misiniz?
    ## Kullanıcı kart listesi için örnek kodlar ##
    ####################### DÜZENLEMESİ ZORUNLU ALANLAR #######################
    #
    ## API Entegrasyon Bilgileri - Mağaza paneline giriş yaparak BİLGİ sayfasından alabilirsiniz.
    $merchant_id    = 'XXXXXX';
    $merchant_key   = 'YYYYYYYYYYYYYY';
    $merchant_salt  = 'ZZZZZZZZZZZZZZ';
    #
    ## Kart kayıt sonrası ödeme bildiriminde tarafınıza PAYTR sisteminden bildirilen kullanıcıya özel token
    $utoken = "";
    #
    ############################################################################################
    ####### Bu kısımda herhangi bir değişiklik yapmanıza gerek yoktur. #######
    $hash_str = $utoken . $merchant_salt;
    $paytr_token=base64_encode(hash_hmac('sha256', $hash_str, $merchant_key, true));
    $post_vals=array(
        'merchant_id'=>$merchant_id,
        'utoken'=>$utoken,
        'paytr_token'=>$paytr_token
    );
    ############################################################################################
    $ch=curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://www.paytr.com/odeme/capi/list");
    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 CAPI List connection error. err:".curl_error($ch));
    curl_close($ch);
    $result=json_decode($result,1);
    if($result['status']=='error')
        die("PAYTR CAPI list failed. Error:".$result['err_msg']);
    else
        print_r($result);
?>
List Card Servisi örnek kodlarını indirmek için tıklayın.