Link API Create ile Link API Oluşturma

Create servisi ile Hizmet/Ürün veya Fatura/Cari tahsilatlarınız için ödeme linkleri oluşturabilirsiniz.

1- Aşağıdaki gönderilmesi zorunlu olan bilgiler iletildikten sonra bir token verisi üretilir.
2- Oluşan token ve gönderilmesi zorunlu olan alanlarla birlikte https://www.paytr.com/odeme/api/link/create servisine istekte bulunulur.

Token üretiminde kullanılacak veriler

Alan adı / tipi Açıklama Zorunlu Kısıtlar
name (string) Ürün veya hizmet adı Evet Ürün / Hizmetin açıklaması. En az 4 en fazla 200 karakter.
price (string) Ödeme tutarı Evet 14.45 TL için 14.45 * 100 = 1445 (100 ile çarpılmış ve integer olarak gönderilmelidir.) Esnek link için minimum ödeme tutarını temsil eder.
currency (string) Para birimi Evet TL, EUR, USD, GBP, RUB (Boş ise TL kabul edilir)
max_installment (string) En fazla taksit sayısı: Gösterilecek en fazla taksit sayısını belirler (Örn. kuyum harcamalarında en fazla 4 taksit uygulaması vardır) Evet 2 – 12 arası gönderilebilir. 1 gönderilirse bireysel kartlarla taksitli işlem yapılamaz.
link_type(integer) Link Tipi Evet Ürün hizmet satışı için: product Fatura/Cari tahsilat için: collection Esneklink için:flex
lang(string) Ödeme sürecinde sayfalarda kullanılacak dil Evet Türkçe için tr veya İngilizce için en (Boş gönderilirse tr geçerli olur)
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 -
name (string) Ürün veya hizmet adı Evet Ürün / Hizmetin açıklaması. En az 4 en fazla 200 karakter.
user_name(string) Esneklink ödeme yapan kişi ad-soyad bilgisi Hayır
price (string) Ödeme tutarı Evet 14.45 TL için 14.45 * 100 = 1445 (100 ile çarpılmış ve integer olarak gönderilmelidir.)
flex_max_price Esneklink için maksimum ödeme tutarı Esneklink için Evet -
currency (string) Para birimi Evet TL, EUR, USD, GBP, RUB (Boş ise TL kabul edilir)
max_installment (string) En fazla taksit sayısı: Gösterilecek en fazla taksit sayısını belirler (Örn. kuyum harcamalarında en fazla 4 taksit uygulaması vardır) Evet 2 – 12 arası gönderilebilir. 1 gönderilirse bireysel kartlarla taksitli işlem yapılamaz.
lang(string) Ödeme sürecinde sayfalarda kullanılacak dil Evet Türkçe için tr veya İngilizce için en (Boş gönderilirse tr geçerli olur)
get_qr QR kod oluşturabilmeniz için PNG formatında Base64 kodu döner. Hayır 1 veya 0 gönderilebilir. QR kod yanıtı alabilmek için 1 gönderilmelidir.
link_type(integer) Link Tipi Evet Ürün hizmet satışı için: product Fatura/Cari tahsilat için: collection
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
min_count (integer) Alt adet limiti (Link tipi product ise zorunlu) Hayır En az 1 olabilir.
email(string) Eposta adresi (Link tipi collection ise zorunlu) Hayır En fazla 100 karakter
max_count(integer) Stok adedi (Yalnızca product tipinde kullanılabilir. Link'in stok adedini belirler ve gönderilmezse stok limiti uygulanmaz. Stok adedi kadar ödeme yapıldığında link pasif olur) Hayır En az 1 olabilir
pft(integer) Peşin Fiyatına Taksit ayarı (isteğe bağlı).Gönderilen en yüksek sayıya kadar olan tüm taksit seçenekleri Peşin Fiyatına Taksit olarak ayarlanır Hayır 2-12 arasındaki değerleri alabilir.DİKKAT: Peşin Fiyatına Taksit olarak belirlediğiniz taksit sayıları için yapılan tüm ödeme işlemlerinde, taksit komisyonları sizden kesilecektir.
expiry_date Linkin son kullanma tarihi Hayır Ödeme Link'inin son kullanma tarihi. Gönderilmezse, sürekli açık kalır. Örnek Format: “2021-05-31 17:00:00”
callback_link Ödeme sonucunun gönderileceği URL Hayır http:// ya da https:// ile başlamalı, localhost olmamalı ve port içermemelidir.
callback_id Bildirimde dönülecek ID (callback_link gönderildiğinde bu alanında gönderilmesi zorunludur.) Hayır Alfanumerik ve en fazla 64 karakter olabilir.
debug_on Hata mesajı (Entegrasyon ve test sürecinde hataları tespit etmek için 1 gönderin). Hayır 0 veya 1



2) DÖNEN DEĞERLER

Açıklama Alan adı / tipi Değerler
İstek sonucu status (string) success, error veya failed
Benzersiz link tanımlayıcı id (string) Örnek: NB2Zlz3
Link status (string) Örnek: https://www.paytr.com/link/NB2Zlz3
İstek açıklaması (hata durumunda) reason (string) Örnek: Zorunlu alan degeri gecersiz veya gonderilmedi (Link API - create): price


<?php

    ########################## ÖDEME LİNKİ OLUŞTURMAK İÇİN ÖRNEK KODLAR ########################
    #                                                                                          #
    ################################ DÜZENLEMESİ ZORUNLU ALANLAR ###############################
    #
    ## API Entegrasyon Bilgileri - Mağaza paneline giriş yaparak BİLGİ sayfasından alabilirsiniz.
    $merchant_id    = 'AAAAAA';
    $merchant_key   = 'XXXXXXXXXXXXXXXX';
    $merchant_salt  = 'XXXXXXXXXXXXXXXX';
    #

    ## Gerekli Bilgiler
    #
    $name            = "Örnek Ürün / Hizmet Adı";
    # Ürün / Hizmetin açıklaması. En az 4 en fazla 200 karakter.
    #
    $price           = 1445;
    # 14.45 TL için 14.45 * 100 = 1445 (100 ile çarpılmış ve integer olarak gönderilmelidir.)
    #
    $currency        = "TL";
    # TL - USD - EUR - GBP gönderilebilir.
    #
    $max_installment = "12";
    # 2 - 12 arası gönderilebilir. 1 gönderilirse bireysel kartlar taksit yapılamaz.
    #
    $link_type       = "product";
    # collection (fatura/cari tahsilat) veya product (ürün/hizmet satışı) gönderilebilir.
    # collection ise email (ödeme yapan tarafın eposta adresi olmalı).
    # product ise min_count (satın alma adet alt limiti) gereklidir.
    #
    $lang            = "tr";
    # tr veya en gönderilebilir.
    $get_qr          = 1;
    # Opsiyoneldir 1 veya 0 gönderilebilir. 1 gönderildiğinde yanıt içerisinde
    # QR kod oluşturabilmeniz için PNG formatında Base64 kodu döner.

    $required        = $name.$price.$currency.$max_installment.$link_type.$lang;

    //Esneklink için gerekli token yöntemi
    // $required        = $name.$price.$currency.$max_installment.$link_type.$lang;

    if($link_type == "product"){
        $min_count     = "1";
        # Alt adet limiti.
        $required     .= $min_count;
    }elseif($link_type == "collection"){
        $email         = time()."@example.com";
        # Ödeme yapan kullanıcının eposta adresi.
        $required     .= $email;
    }

    ## Opsiyonel bilgiler, gönderilmesi zorunlu değildir.
    #
    $expiry_date        = "2020-03-23 17:00:00";
    # Link'in son kullanma tarihi. Gönderilmezse, sürekli açık kalır.
    # Örnek format: 2021-05-31 17:00:00
    #
    $max_count          = "1";
    # Yalnızca product modunda kullanılabilir.
    # Link'in stok adedini belirler. Gönderilmezse, stok limiti uygulanmaz.
    # Stok adedi kadar ödeme yapıldığında link pasif olur.
    #
    //$pft             = "0"; // OPSİYONEL
    # 2 - 12 arası gönderilebilir. Gönderilen en yüksek sayıya kadar olan tüm taksit seçenekleri
    # Peşin Fiyatına Taksit olarak ayarlanır.
    # DİKKAT: Peşin Fiyatına Taksit olarak belirlediğiniz taksit sayıları için yapılan tüm
    # ödeme işlemlerinde, taksit komisyonları sizden kesilecektir.
    #
    $callback_link      = "";
    # Link ile yapılan ödemenin sonucunun gönderileceği URL. En fazla 400 kararkter.
    # http:// ya da https:// ile başlamalı, localhost olmamalı ve port içermemelidir.
    # callback_id gönderildiğinde bu alan zorunlu olmaktadır.
    #
    $callback_id        = "";
    # Bildirimde dönülecek bildirim ID'si. Alfanumerik ve en fazla 64 karakter olabilir.
    # callback_link gönderildiğinde bu alan zorunlu olmaktadır.

    $debug_on           = 1;
    # Entegrasyon hatalarını alabilmek için 1 olarak bırakın.
    #
    ############################################################################################

    ################ Bu kısımda herhangi bir değişiklik yapmanıza gerek yoktur. ################
    #
    $paytr_token=base64_encode(hash_hmac('sha256', $required.$merchant_salt, $merchant_key, true));
    $post_vals=array(
        'merchant_id'       => $merchant_id,
        'name'              => $name,
        'price'             => $price,
        'currency'          => $currency,
        'max_installment'   => $max_installment,
        'link_type'         => $link_type,
        'lang'              => $lang,
        'min_count'         => $min_count,
        'email'             => $email,
        'expiry_date'       => $expiry_date,
        'max_count'         => $max_count,
        'callback_link'     => $callback_link,
        'callback_id'       => $callback_id,
        'debug_on'          => $debug_on,
        'get_qr'            => $get_qr,
        'paytr_token'       => $paytr_token,
        'user_name'         => $user_name,
        'flex_max_price'    => $flex_max_price
    );
    #
    ############################################################################################

    $ch=curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://www.paytr.com/odeme/api/link/create");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1) ;
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_vals);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 20);
    $result = @curl_exec($ch);

    if(curl_errno($ch))
        die("PAYTR LINK CREATE API request timeout. err:".curl_error($ch));

    curl_close($ch);

    $result=json_decode($result,1);

    if($result['status']=='error')
        die($result['err_msg']);
    elseif($result['status']=='failed')
        print_r($result);
    else
        print_r($result);

Link API Create Servisi örnek kodlarını indirmek için tıklayın.