Durum Sorgu API Entegrasyonu

Durum Sorgu servisi aracılığıyla, mağazanız üzerinde gerçekleştirilen işlemlerin durumunu sorgulayabilirsiniz.

Mağaza Durum Sorgulama ve Pazaryeri Durum Sorgulama olarak iki kategoriye ayrılır.

1- Aşağıdaki tabloda belirtilen bilgileri https://www.paytr.com/odeme/durum-sorgu adresine POST ile gönderin.

Değişkenler Açıklamalar
merchant_id Mağaza No
merchant_key Mağaza Parola
merchant_salt Mağaza Gizli Anahtar
merchant_oid Sipariş Numarası


Mağaza Durum Sorgulama
Tablodan gelen değerler ile sipariş numarası sorgulanır. Müşteriye ait ödeme tutarı ve toplam ödeme tutarı para birimi ile birlikte ekrana basılır. Yukarıdaki bilgilerde bir yanlışlık olursa hata mesajıda ekranda gösterilir. Aynı zamanda siparişe ait iadeler var ise bu iadeler ekranda belirtilir.

2- Yaptığınız bu isteğe cevap JSON formatında döner.
a. Eğer sorguda bir hata yoksa status değeri “success” ve aşağıdaki tabloda bulunan bilgiler döner.
b. 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.

Değişkenler Açıklamalar Değerler
Status(string) Sorgulama sonucu(success veya failed) success veya error
net_tutar (string) Kesinti sonrası kalan tutar 9.76
kesinti_tutari (string) İşlem için kesilen tutar 0.24
payment_amount(string) İlgili siparişe ait tutar bilgisi 10,8
payment_total(string) Müşterinin ilgili sipariş için ödediği tutar 10,8
payment_date(integer) İşlemin gerçekleşme tarihi 2021-01-01 23:59:59 (YYYY-MM-DD hh:mm:ss)
currency(string) Para birimi TL(veya TRY), EUR, USD, GBP, RUB
taksit(string) Taksit: İşlem taksitli yapıldı ise taksit sayısı 0,2,3,4,5,6,7,8,9,10,11,12
kart_marka(string) İşlem yapılan kartın markası Örn. WORD, BONUS, vb.
masked_pan(string) İşlemin gerçekleşme tarihi Örn. 455359AAA6747
odeme_tipi(string) Ödemenin hangi tipte yapıldığı KART veya EFT
test_mode(string) İşlemin test veya canlı ortamda yapıldığı 0 veya 1
returns(string) Eğer ilgili sipariş içerisinde iade varsa dönecek değer
err_no Hata numarası 004
err_msg Hata mesajı merchant_oid ile basarili odeme bulunamadi


Durum sorgulama örnek kodları: Örnek kodlar içinde nasıl yapılacağı detaylı olarak anlatılmaktadır.

<?php

$merchant_id = "XXX";
$merchant_key = "XXX";
$merchant_salt = "XXX";
$merchant_oid = "XXX";

$paytr_token = base64_encode(hash_hmac('sha256', $merchant_id . $merchant_oid . $merchant_salt, $merchant_key, true));

$post_vals = array('merchant_id' => $merchant_id,
        'merchant_oid' => $merchant_oid,
        'paytr_token' => $paytr_token);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.paytr.com/odeme/durum-sorgu");
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, 90);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 90);

//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)) {
       echo curl_error($ch);
       curl_close($ch);
        exit;
}
curl_close($ch);

$result = json_decode($result, 1);

if ($result[status] != 'success') {
       echo $result[err_no] . " - " . $result[err_msg];
       exit;
}

echo $result['payment_amount'] . " " . $result['currency'] . "<br>";

echo $result['payment_total'] . " " . $result['currency'] . "<br>";

echo $result['payment_date'] . "<br>";

foreach ($result['returns'] AS $return_success)
       print_r($return_success);
?>

Mağaza durum sorgulama örnek kodları indirmek için tıklayın.

1- Aşağıdaki tabloda belirtilen diğer bilgileri https://www.paytr.com/odeme/durum-sorgu adresine POST ile gönderin.

Değişkenler Açıklamalar
merchant_id Mağaza No
merchant_key Mağaza Parola
merchant_salt Mağaza Gizli Anahtar
merchant_oid Sipariş Numarası

Pazaryeri Durum Sorgulama
Tablodan gelen değerler ile sipariş numarası sorgulanır. Müşteriye ait ödeme tutarı ve toplam ödeme tutarı para birimi ile birlikte ekrana basılır. Yukarıdaki bilgilerde bir yanlışlık olursa hata mesajıda ekranda gösterilir. Aynı zamanda siparişe ait iadeler var ise bu iadeler ekranda belirtilir.

2- Yaptığınız bu isteğe cevap JSON formatında döner.
a. Eğer sorguda bir hata yoksa status değeri “success” ve aşağıdaki tabloda bulunan bilgiler döner.
b. 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.

Değişkenler Açıklamalar Değerler
Status(string) Sorgulama sonucu.(success veya failed) success veya error
payment_amount(string) İlgili siparişe ait tutar bilgisi 10,8
payment_total(string) Müşterinin ilgili sipariş için ödediği tutar 10,8
payment_date(integer) İşlemin gerçekleşme tarihi 2021-01-01 23:59:59 (YYYY-MM-DD hh:mm:ss)
currency(string) Para birimi TL(veya TRY), EUR, USD, GBP, RUB
taksit(string) Taksit: İşlem taksitli yapıldı ise taksit sayısı 0,2,3,4,5,6,7,8,9,10,11,12
kart_marka(string) İşlem yapılan kartın markası Örn. WORD, BONUS, vb.
masked_pan(string) İşlemin gerçekleşme tarihi Örn. 455359AAA6747
odeme_tipi(string) Ödemenin hangi tipte yapıldığı KART veya EFT
test_mode(string) İşlemin test veya canlı ortamda yapıldığı 0 veya 1
returns(string) Eğer ilgili sipariş içerisinde iade varsa dönecek değer
reference_no(string) Referans No: İade talebinde bulunurken gönderildi ise dönen iade referans numarası 111111111111(maksimum 64 alfanumarik karakter)
err_no Hata numarası 004
err_msg Hata mesajı merchant_oid ile basarili odeme bulunamadi
submerchant_payments Platform ödemeleri


Pazar yeri durum sorgulama örnek kodları: Örnek kodlar içinde nasıl yapılacağı detaylı olarak anlatılmaktadır.

<?php
    $merchant_id = "XXX";
    $merchant_key = "XXX";
    $merchant_salt = "XXX";
    $merchant_oid = "XXX";

    $paytr_token = base64_encode(hash_hmac('sha256', $merchant_id . $merchant_oid . $merchant_salt, $merchant_key, true));

    $post_vals = array('merchant_id' => $merchant_id,
        'merchant_oid' => $merchant_oid,
        'paytr_token' => $paytr_token);

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://www.paytr.com/odeme/durum-sorgu");
    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, 90);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 90);

    //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)) {
        echo curl_error($ch);
        curl_close($ch);
        exit;
    }
    curl_close($ch);

    $result = json_decode($result, 1);

    if ($result[status] != 'success') {
        echo $result['err_no'] . " - " . $result['err_msg'];
        exit;
    }

    //sipariş tutarı
    echo $result['payment_amount'] . " " . $result['currency'] . "<br>";

    //işlem tarihi
    echo $result['payment_date']. "<br>";

    //müşteri ödeme tutarı
    echo $result['payment_total'] . " " . $result['currency'] . "<br>";

    //siparişteki iadeler (varsa)

    /*

    Array ( 
    [return_amount] => 1 
    [return_date] => 2021-03-25 23:45:22 
    [return_type] => 
    [date_completed] => 2021-03-25 23:46:02 
    [return_auth_code] =>
    [return_ref_num] => 
    [reference_no] => 111111111111111
    [return_source] => 
    )

    */

    foreach ($result['returns'] AS $return_success)
        print_r($return_success);

    //platform ödemeleri
    foreach ($result['submerchant_payments'] AS $sub_payments)
        print_r($sub_payments);
?>

Pazaryeri durum sorgulama örnek kodları indirmek için tıklayın.