Kayıtlı Karttan Ödeme

CAPI LIST servisinden dönen require_cvv, utoken ve ctoken değerlerinin kullanımı.
1- Ödeme işlemini yapan kullanıcının kayıtlı kart listesi alınarak kullanıcının önüne listelenlir.
2-Kullanıcı listelenen kartlar arasından ödeme yapacağı kartı seçer.
3-Kullanıcının seçtiği karta ait require_cvv parametresi kontrol edilip eğer 1 ise CVV gireceği alan gösterilir.
4-Kullanıcının seçtiği kartın ctoken bilgisi ve kullanıcının utoken bilgisi ödeme isteğinde gönderilir.

Token üretiminde kullanılacak veriler

Alan adı / tipi Açıklama Zorunlu Kısıtlar
merchant_id (integer) Mağaza No: PayTR tarafından size verilen Mağaza numarası
user_ip (string) Müşteri ip: İstek anında aldığınız müşteri ip numarası(Önemli: Lokal makinenizde yapacağınız denemelerde mutlaka dış IP adresini gönderdiğinizden emin olun) Evet En fazla 39 karakter (ipv4)
merchant_oid (string) Mağaza sipariş no: Satış işlemi için belirlediğiniz benzersiz sipariş numarası.(Not: Sipariş no ödeme sonuç bildirimi esnasında geri dönen değerler arasındadır) Evet En fazla 64 karakter,Alfa numerik
email (string) Müşteri eposta adresi: Müşterinin sisteminizde kayıtlı olan veya form aracılığıyla aldığınız eposta adresi Evet En fazla 100 karakter
payment_amount(integer) Ödeme tutarı: Siparişe ait toplam ödeme tutarı Evet Ayraç olarak yalnızca nokta(.) gönderilmelidir
payment_type(string) Ödeme tipi Evet ('card')
installment_count(int) Taksit sayısı Evet 0, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12
currency(string) Para birimi Hayır TL, EUR, USD, GBP, RUB(Boş ise TL kabul edilir)
test_mode Mağaza canlı modda iken test işlem yapmak için 1 olarak gönderilebilir Hayır 0 veya 1
non_3d Non 3D işlem yapabilmek için 1 gönderilebilir Evet 0 veya 1
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 Açıklama Zorunlu Kısıtlar
merchant_id (integer) Mağaza no: PayTR tarafından size verilen Mağaza numarası Evet
paytr_token (string) 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 Evet Hesaplama ile ilgili olarak örnek kodlara bakmalısınız
user_ip (string) Müşteri ip: İstek anında aldığınız müşteri ip numarası (Önemli: Lokal makinenizde yapacağınız denemelerde mutlaka dış IP adresini gönderdiğinizden emin olun) Evet En fazla 39 karakter (ipv4)
merchant_oid (string) Mağaza sipariş no: Satış işlemi için belirlediğiniz benzersiz sipariş numarası. (Not: Sipariş no ödeme sonuç bildirimi esnasında geri dönen değerler arasındadır) Evet En fazla 64 karakter, Alfa numerik
email (string) Müşteri eposta adresi: Müşterinin sisteminizde kayıtlı olan veya form aracılığıyla aldığınız eposta adresi Evet En fazla 100 karakter
payment_type(string) Ödeme tipi Evet ('card')
require_cvv Kullanıcının seçtiği karta ait require_cvv parametresi kontrol edilip eğer 1 ise CVV gireceği alan gösterilir Evet(Açıklama dikkatli okunmalı.) -
payment_amount (double), ondalık olarak nokta (.) ve noktadan sonra iki hane Ödeme tutarı: Siparişe ait toplam ödeme tutarı Evet Örn: 100.99 veya 150 veya 1500.35
installment_count(int) Taksit sayısı Evet 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
card_type(string) Kart tipi (Taksitli işlemlerde kullanmak üzere) Hayır advantage, axess, combo, bonus, cardfinans, maximum, paraf, world
currency(string) Para birimi Hayır TL(veya TRY), EUR, USD (Boş ise TL kabul edilir)
client_lang(string) Ödeme sürecinde kullanılacak dil Hayır Türkçe için tr veya İngilizce için en (Boş gönderilirse tr geçerli olur)
test_mode Mağaza canlı modda iken test işlem yapmak için 1 olarak gönderilebilir Hayır 0 veya 1
non_3d Non 3D işlem yapabilmek için 1 gönderilebilir Evet 0 veya 1
non3d_test_failed Non 3D işlemde, başarısız işlem durumunu test etmek için 1 gönderilir (test_mode ve non_3d değerleri 1 ise dikkate alınır!) Hayır 0 veya 1
merchant_ok_url(string) Müşterinin başarılı ödeme sonrası yönledirileceği sayfa (Örn.Siparişlerim takip sayfası)(Uyarı: Müşteri bu sayfaya ulaştığında henüz sipariş onaylanmış olmaz) Evet En fazla 400 karakter Uyarı: Tam URL olmalıdır
merchant_fail_url(string) Müşterinin ödemesi sırasında beklenmeyen bir hatada yönlendirileceği sayfa Evet En fazla 400 karakter Uyarı: Tam URL olmalıdır
user_name (string) Müşteri adı ve soyadı: Müşterinin sisteminizde kayıtlı olan veya form aracılığıyla aldığınız adı ve soyadı Evet En fazla 60 karakter
user_address (string) Müşteri adresi: Müşterinin sipariş sırasında ilettiği adresi Evet En fazla 400 karakter
user_phone (string) Müşteri telefon numarası: Müşterinin sipariş sırasında ilettiği telefon numarası Evet En fazla 20 karakter
user_basket (string) Sepet içeriği: Müşterinin siparişindeki ürün/hizmet bilgilerini içermelidir Evet JSON tipinde(Örnek kodları inceleyin)
debug_on (int) Hata döndür: PayTR’a yanlış veya eksik bilgi iletilmesi durumunda sistemden hata mesajı döndürülmesi için 1 gönderilmelidir Hayır 0 veya 1(Entegrasyon ve test sürecinde hataları tespit etmek için mutlaka 1
utoken Kullanıcıya ait kartı kaydederken servisten tarafınıza dönen ve sizin sistemininiz üzerinden kullacınızla eşleştirdiğiniz değer Evet
ctoken CAPI LIST servisinden dönen kullanıcının kayıtlı kartına ait ctoken değeri Evet


<!doctype html>
<html>
    <head>
        <meta charset="UTF-8">
    </head>

    <?php

    ## Kullanıcının ödeme yaparken kayıtlı kartını kullanması için örnek kodlar ##

        $merchant_id = 'MAGAZA_NO';
        $merchant_key = 'XXXXXXXXXXX';
        $merchant_salt = 'YYYYYYYYYYY';

        $merchant_ok_url="http://site-ismi/basarili";
        $merchant_fail_url="http://site-ismi/basarisiz";

        $user_basket = htmlentities(json_encode(array(
            array("Altis Renkli Deniz Yatağı - Mavi", "18.00", 1),
            array("Pharmasol Güneş Kremi 50+ Yetişkin & Bepanthol Cilt Bakım Kremi", "33,25", 2),
            array("Bestway Çocuklar İçin Plaj Seti Beach Set ÇANTADA DENİZ TOPU-BOT-KOLLUK", "45,42", 1)
        )));

        srand(time(null));
        $merchant_oid = rand();

        $test_mode="0";

        //3d'siz işlem
        $non_3d="0";

        //non3d işlemde, başarısız işlemi test etmek için 1 gönderilir (test_mode ve non_3d değerleri 1 ise dikkate alınır!)
        $non3d_test_failed="0";

        if( isset( $_SERVER["HTTP_CLIENT_IP"] ) ) {
            $ip = $_SERVER["HTTP_CLIENT_IP"];
        } elseif( isset( $_SERVER["HTTP_X_FORWARDED_FOR"] ) ) {
            $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
        } else {
            $ip = $_SERVER["REMOTE_ADDR"];
        }

        $user_ip = $ip;

        $email = "testnon3d@paytr.com";

        // 100.99 TL ödeme
        $payment_amount = "100.99";
        $currency="TL";
        //
        $payment_type = "card";

        //      $card_type = "bonus";       // Alabileceği değerler; advantage, axess, bonus, cardfinans, maximum, paraf, world
        //      $installment_count = "5";

        $post_url = "https://www.paytr.com/odeme";

        $hash_str = $merchant_id . $user_ip . $merchant_oid . $email . $payment_amount . $payment_type . $installment_count. $currency. $test_mode. $non_3d;
        $token = base64_encode(hash_hmac('sha256',$hash_str.$merchant_salt,$merchant_key,true));

        ## CAPI LIST servisinden dönen require_cvv, utoken ve ctoken değerlerinin kullanımı ##
        ## Ödeme işlemini yapan kullanıcının kayıtlı kart listesi alınarak kullanıcının önüne listelenlir. ##
        ## Kullanıcı listelenen kartlar arasından ödeme yapacağı kartı seçer ##
        ## Kullanıcının seçtiği karta ait require_cvv parametresi kontrol edilip eğer 1 ise CVV gireceği alan gösterilir ##
        ## Kullanıcının seçtiği kartın ctoken bilgisi ve kullanıcının utoken bilgisi ödeme isteğinde gönderilir. ##
        $utoken = "";
        $ctoken = "";       
        $require_cvv = ""; 

    ?>

    <body>
        <form action="<?php echo $post_url;?>" method="post">
          <!-- CVV gereklilik kontrolü yapılıyor -->
          <?php if($require_cvv == 1) { ?>
            Kart Güvenlik Kodu: <input type="text" name="cvv" value=""><br>
          <?php } ?>
          <input type="hidden" name="merchant_id" value="<?php echo $merchant_id;?>">
          <input type="hidden" name="user_ip" value="<?php echo $user_ip;?>">
          <input type="hidden" name="merchant_oid" value="<?php echo $merchant_oid;?>">
          <input type="hidden" name="email" value="<?php echo $email;?>">
          <input type="hidden" name="payment_type" value="<?php echo $payment_type;?>">
          <input type="hidden" name="payment_amount" value="<?php echo $payment_amount;?>">
          <input type="hidden" name="installment_count" value="0">
          <input type="hidden" name="currency" value="<?php echo $currency;?>">
          <input type="hidden" name="test_mode" value="<?php echo $test_mode;?>">
          <input type="hidden" name="non_3d" value="<?php echo $non_3d;?>">
          <input type="hidden" name="merchant_ok_url" value="<?php echo $merchant_ok_url;?>">
          <input type="hidden" name="merchant_fail_url" value="<?php echo $merchant_fail_url;?>">
          <input type="hidden" name="user_name" value="Paytr Test">
          <input type="hidden" name="user_address" value="test test test">
          <input type="hidden" name="user_phone" value="05555555555">
          <input type="hidden" name="user_basket" value="<?php echo $user_basket; ?>">
          <input type="hidden" name="debug_on" value="1">
          <input type="hidden" name="paytr_token" value="<?php echo $token; ?>">
          <input type="hidden" name="non3d_test_failed" value="<?php echo $non3d_test_failed; ?>">
          <input type="hidden" name="installment_count" value="<?php echo $installment_count; ?>">
          <input type="hidden" name="card_type" value="<?php echo $card_type; ?>">
          <input type="hidden" name="utoken" value="<?php echo $utoken; ?>">
          <input type="hidden" name="ctoken" value="<?php echo $ctoken; ?>">
          <br />
          <input type="submit" value="Submit">
        </form>
    </body>
</html>

Stored Card Servisi örnek kodlarını indirmek için tıklayın.