Link API Create

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.)
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
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.
price (string) Ödeme tutarı Evet 14.45 TL için 14.45 * 100 = 1445 (100 ile çarpılmış ve integer olarak gönderilmelidir.)
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;

    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
    );
    #
    ############################################################################################

    $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.