Geri Dönen Ödemeler Callback

Geri dönen ödemelerden oluşturacağınız transfer talebi sonrasında Success yanıtı almanız ile birlikte hesaptan gönderme talebiniz PayTR sistemi tarafından başarılı olarak alınmış olur. PayTR sistemi talebinizi ortalama 5 dakika içerisinde işleme alacak, gönderdiğiniz trans_info içeriğini kontrol ederek transferleri gerçekleştirecektir. Kontrol sırasında hatalı bilgi tespiti halinde ilgili işlem başarısız olarak işaretlenir. Oluşan sonuç JSON formatında PayTR Mağaza Paneli > Destek & Kurulum > Ayarlar > Platform Transfer Sonucu Bildirim URL olarak tanımladığınız adrese POST edilerek bildirilir.

Tanımlayacağınız Bildirim URL’ye POST metodu ile talebinizin sonucu (başarılı veya başarısız) her işlem için ayrı olarak gönderilir. Gelen değerler içerisinde bulunan result değerini ele alarak talep sonucuna göre işlem yapabilirsiniz.

PayTR sistemince Bildirim URL’nize POST REQUEST içeriğinde gönderilecek değerler:

Alan adı Açıklama Değer
mode Sabit olarak cashout değeri ile gelir. cashout
hash Hash kontrolünde kullanılacaktır. ÖRN: wszlFsC7nrfCPvP77kdEzzE4smGdV4FWvDibKlXIpRM=
trans_id Geri dönen ödeme hesaptan gönderme talebi yaparken PayTR'a gönderdiğiniz eşsiz değer. ÖRN: 12345aaabbb
processed_result Geri dönen ödeme hesaptan gönderme talebi yaparken PayTR'a gönderdiğiniz değerler. ÖRN: [{\"amount\":484.48,\"receiver\":\"XYZ LTD STI\",\"iban\":\"TRXXXXXXXXXXXXXXXXXX\",\"result\":\"success\"}]
success_total Başarıyla transfer edilen işlem sayısı (processed_result içerisinde, result:success olanların sayısı) ÖRN: 1
failed_total Hata alan işlem sayısı (processed_result içerisinde, result:failed olanların sayısı) ÖRN: 0
transfer_total Başarıyla tranasfer edilen işlemlerin toplam tutarı. ÖRN: 484.48
account_balance Transferler sonrasında kalan alt hesap bakiyeniz. ÖRN: 75

Bildirim URL’nize PayTR sistemince yapılacak isteğe dönülmesi gereken yanıt (RESPONSE) text (düz yazı) formatında ve yalnızca OK değeri olmalıdır.

Örnek (PHP): echo "OK";
Örnek (.NET): Response.Write("OK");

ÖNEMLİ UYARILAR:

  1. Bildirim URL adresinize üye girişi ve benzeri erişim kısıtlaması yapılmamalıdır. Böylece PayTR sistemi bildirimleri kolayca iletebilecektir.

  2. Bildirim URL’nize gelecek bildirimlere döneceğiniz OK yanıtının öncesinde veya sonrasında HTML veya herhangi başka bir içerik ekrana basılmamalıdır.

  3. Bildirim URL’niz, müşterinizin ödeme sırasında ulaşacağı bir sayfa değildir, PayTR tarafından arka planda (server-side) ödeme sonucunu bildirmek için kullanılır. Bu nedenle, Bildirim URL’nizde kodlama yaparken oturum (SESSION) değerlerini kullanamazsınız. İşlemlerinizi Mağaza sipariş no (merchant_oid) kullanarak gerçekleştirmelisiniz.

  4. Bildirimin PayTR sisteminden geldiğinden ve ulaşım esnasında değiştirilmediğinden emin olmak için, POST içerisindeki hash değeri ile tarafınızca oluşturulacak hash değerinin aynı olduğunu kontrol etmeniz, güvenlik açısından büyük önem arz etmektedir. Bu kontrolü yapmamanız durumunda maddi kayıplar ile karşılaşabilirsiniz.


<?php

    #################### POST içerisinde gelen örnek veriler ####################
    #
    // [mode] => cashout
    // -> Sabit bu şekilide gelir
    #
    // [hash] => wszlFsC7nrfCPvP77kdEzzE4smGdV4FWvDibKlXIpRM=,
    // -> Kontrolde kullanaılacaktır.
    #
    // [trans_id] => 12345aaabbb
    // -> Geri dönen ödeme hesaptan gönderme talebi yaparken PayTR'a gönderdiğiniz eşsiz değer.
    #
    // [processed_result] => [{\"amount\":484.48,\"receiver\":\"XYZ LTD STI\",\"iban\":\"TRXXXXXXXXXXXXXXXXXX\",\"result\":\"success\"}]
    // -> Geri dönen ödeme hesaptan gönderme talebi yaparken PayTR'a gönderdiğiniz değerler.
    #
    // [success_total] => 1
    // -> Başarıyla transfer edilen işlem sayısı (processed_result içerisinde, result:success olanların sayısı)
    #
    // [failed_total] => 0
    // -> Hata alan işlem sayısı (processed_result içerisinde, result:failed olanların sayısı)
    #
    // [transfer_total] => 484.48
    // -> Başarıyla tranasfer edilen işlemlerin toplam tutarı.
    #
    // [account_balance] => 0
    // -> Transferler sonrasında kalan alt hesap bakiyeniz.
    ############################################################################

    $post = $_POST;

    ####################### DÜZENLEMESİ ZORUNLU ALANLAR #######################
    #
    ## API Entegrasyon Bilgileri - Mağaza paneline giriş yaparak BİLGİ sayfasından alabilirsiniz.
    $merchant_key   = 'YYYYYYYYYYYYYY';
    $merchant_salt  = 'ZZZZZZZZZZZZZZ';
    ###########################################################################

    ####### Bu kısımda herhangi bir değişiklik yapmanıza gerek yoktur. #######
    #
    ## POST değerleri ile hash oluştur.
    $hash = base64_encode( hash_hmac('sha256', $post['merchant_id'].$post['trans_id'].$merchant_salt, $merchant_key, true) );
    #
    ## Oluşturulan hash'i, PayTR'dan gelen post içindeki hash ile karşılaştır (isteğin PayTR'dan geldiğine ve değişmediğine emin olmak için)
    ## Bu işlemi güvenlik nedeniyle mutlaka yapmanız gerekiyor.
    if( $hash != $post['hash'] )
        die('PAYTR notification failed: bad hash');
    ###########################################################################

    ## trans_id bilgisi transfer talebi yaparken PayTR'a gönderdiğiniz her işlem için eşsiz değerdir.
    $processed_result = json_decode($post['processed_result'],1);
    foreach($processed_result as $trans)
    {
        // Burada her işlem için gerekli veri tabanı vb. işlemleri yapabilirsiniz.
    }

    ## Bildirimin alındığını PayTR sistemine bildir.
    echo "OK";
    exit;
?>

Geri dönen ödemeler örnek kodları indirmek için tıklayın.