Mağaza aşağıdaki bilgileri Platform Transfer API’sine gönderir.
Token üretiminde kullanılacak veriler
Alan adı / tipi | Açıklama | Zorunlu | Kısıtlar |
---|---|---|---|
merchant_id | Mağaza No: PayTR tarafından size verilen Mağaza numarası | Evet | |
merchant_oid (string) | Mağaza sipariş no: Satış işleminde gönderdiğiniz benzersiz sipariş numaranız | Evet | En fazla 64 karakter,Alfa numerik |
trans_id (string) | Satıcıya yapılacak bu ödemenin takibi için benzersiz takip numarası | Evet | Alfanumerik – En fazla 60 karakter |
submerchant_amount (integer) | Satıcıya yapılacak ödeme tutarı:Satıcıya bu sipariş için ödenecek tutarın 100 ile çarpılmış hali | Evet | Örn: 34.56 TL için 3456 gönderilmelidir |
total_amount (integer) | Toplam ödeme tutarı: Siparişe ait toplam ödeme tutarının 100 ile çarpılmış hali | Evet | Örn: 94.56 TL için 9456 gönderilmelidir. (94.56 * 100 = 9456) |
transfer_name (string) | Satıcının banka hesabı için ad soyad/ünvanı | Evet | Örn: Ragıp Adıgüzel |
transfer_iban(int) | Satıcının banka hesabı IBAN numarası | Evet | Örn: TRXX XXXX XXXX XXXX XXXX XXXX XX (26 Karakter) |
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 |
Alan adı / tipi | Zorunlu | Token | Açıklama | Kısıtlar |
---|---|---|---|---|
merchant_id(integer) | Evet | Evet | Mağaza no: PayTR tarafından size verilen Mağaza numarası | |
merchant_oid (string) | Evet | Evet | Mağaza sipariş no: Satış işleminde gönderdiğiniz benzersiz sipariş numaranız | En fazla 64 karakter,Alfa numerik |
trans_id | Satıcıya yapılacak bu ödemenin takibi için benzersiz takip numarası | Evet | Satıcıya yapılacak bu ödemenin takibi için benzersiz takip numarası | Alfanumerik – En fazla 60 karakter |
submerchant_amount(integer) | Evet | Evet | Satıcıya yapılacak ödeme tutarı:Satıcıya bu sipariş için ödenecek tutarın 100 ile çarpılmış hali | Örn: 34.56 TL için 3456 gönderilmelidir |
total_amount(integer) | Evet | Evet | Toplam ödeme tutarı: Siparişe ait toplam ödeme tutarının 100 ile çarpılmış hali | Örn: 94.56 TL için 9456 gönderilmelidir |
transfer_name (string) | Evet | Evet | Satıcının banka hesabı için ad soyad/ünvanı | Örn: Ragıp Adıgüzel |
transfer_iban | Evet | Evet | Satıcının banka hesabı IBAN numarası | Örn: TRXX XXXX XXXX XXXX XXXX XXXX XX (26 Karakter) |
paytr_token (string) | Evet | Hayır | 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 | Nasıl hesaplanacağı hakkında lütfen örnek kodları inceleyin |
ÖNEMLİ NOTLAR
1- Mağaza, ödemenin yapılmasını istediği tarihte en geç saat 10:00’a kadar Transfer API’si yoluyla isteği göndermelidir. Daha sonra gönderilen istekler bir sonraki gün işleme alınacaktır.
2- Sipariş ödemesi ile aynı gün transfer talebi oluşturamazsınız. Talebi en erken, ödemeyi takip eden ilk gün oluşturmanız gerekmektedir.
TRANSFER ÖRNEKLERİ (Değerler gerçek değildir. Sadece örnektir)
ÖRNEK 1: ÖDEMEDE TEK ALT SATICI OLMASI DURUMU
• Mağaza numarası (merchant_id): 100001
• Sipariş tutarı: 100 TL
• Sipariş numarası (merchant_oid): 123ABCD
• Takip numarası (trans_id): 45ABT34
• Satıcı ile olan komisyon oranınıza göre (Örnek: %8) satıcıya aktarılacak (submerchant_amount): 92 TL
• Ödemesi yapılacak işlem tutarı (total_amount): 100 TL Bu bilgilerle ödeme talimatı verdiğinizde;
• Satıcıya 92 TL ödenir,
• Kalan 8 TL içerisinden PayTR ile olan komisyon oranınız (Örnek: %3) düşülerek kalan tutar (örneğe göre 5 TL) firmanızın hesabına aktarılır. Yapılan kesinti tarafınıza faturalandırılır.
ÖRNEK 2: ÖDEMEDE BİRDEN FAZLA ALT SATICI OLMASI DURUMU
Sipariş ödemesi birden fazla satıcıyı kapsayabilir. Örneğin; Kart hamili alışveriş sepetinde birden fazla satıcıdan ürün / hizmet alıyor olabilir. Siparişin toplam bedelinin 300 TL olduğunu düşünelim. Bu durumda,
• Mağaza numarası (merchant_id): 100001
• Sipariş tutarı: 300 TL
• Sipariş numarası (merchant_oid): 123ABCDE
• Takip numarası (trans_id): 75ZTY39
• Satıcı ile olan komisyon oranınıza göre (Örnek: %8) satıcıya aktarılacak (submerchant_amount): 92 TL
• Ödemesi yapılacak işlem tutarı (total_amount): 100 TL
• Mağaza numarası (merchant_id): 100001
• Sipariş tutarı: 300 TL
• Sipariş numarası (merchant_oid): 123ABCDE
• Takip numarası (trans_id): DF43DFC
• Satıcı ile olan komisyon oranınıza göre (Örnek: %5) satıcıya aktarılacak (submerchant_amount): 47,5 TL
• Ödemesi yapılacak işlem tutarı (total_amount): 50 TL
• Mağaza numarası (merchant_id): 100001
• Sipariş tutarı: 300 TL
• Sipariş numarası (merchant_oid): 123ABCDE
• Takip numarası (trans_id): 98DFVXS
• Satıcı ile olan komisyon oranınıza göre (Örnek: %10) satıcıya aktarılacak (submerchant_amount): 135 TL
• Ödemesi yapılacak işlem tutarı (total_amount): 150 TL şeklinde birden fazla ödeme talimatı verebilirsiniz.
ÖRNEK 3: ÖDEMENİN ALT SATICI İÇİN OLMAMA DURUMU
Yazılımınız üzerinden geçen diğer ödemeler için (örneğin 50 TL üyelik ücreti, hizmet bedeli, vb.) eğer tutarın tamamını firmanız hesabına almak istiyorsanız,
• Mağaza numarası (merchant_id): 100001
• Sipariş tutarı: 50 TL
• Sipariş numarası (merchant_oid): 1881ABCD
• Takip numarası (trans_id): 18ATT81
• Satıcı ile olan komisyon oranınıza göre (Örnek: %0) satıcıya aktarılacak (submerchant_amount): 0 TL
• Ödemesi yapılacak işlem tutarı (total_amount): 50 TL şeklinde talep oluşturduğunuz durumda tutarın tamamı firmanız hesabına transfer edilecektir.
Yapılan isteğe geri dönecek yanıt (RESPONSE) JSON formatındadır. Detaylar için örnek kodları inceleyebilirsiniz.
<?php
$merchant_id = 'MAGAZA_NO';
$merchant_key = 'XXXXXXXXXXX';
$merchant_salt = 'YYYYYYYYYYY';
// Mağaza sipariş no: Satış işlemi için belirlediğiniz benzersiz sipariş numarası
$merchant_oid = "";
// Satıcıya yapılacak bu ödemenin takibi için benzersiz takip numarası
$trans_id = time();
// Satıcıya yapılacak ödeme tutarı: Satıcıya bu sipariş için ödenecek tutarın 100 ile çarpılmış hali (Örnek: 50.99 TL için 5099)
$submerchant_amount = "";
// Toplam ödeme tutarı: Siparişe ait toplam ödeme tutarının 100 ile çarpılmış hali (Örnek: 50.99 TL için 5099)
$total_amount = "";
// Satıcının banka hesabı için ad soyad/ünvanı
$transfer_name = "";
// Satıcının banka hesabı IBAN numarası
$transfer_iban = "";
// İsteğin sizden geldiğine ve içeriğin değişmediğine emin olmamız için oluşturacağınız değerdir
$hash_str = $merchant_id . $merchant_oid . $trans_id . $submerchant_amount . $total_amount . $transfer_name . $transfer_iban;
$token = base64_encode(hash_hmac('sha256',$hash_str.$merchant_salt,$merchant_key,true));
$post_vals=array(
'merchant_id'=>$merchant_id,
'merchant_oid'=>$merchant_oid,
'trans_id'=>$trans_id,
'submerchant_amount'=>$submerchant_amount,
'total_amount'=>$total_amount,
'transfer_name'=>$transfer_name,
'transfer_iban'=>$transfer_iban,
'paytr_token'=>$token
);
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.paytr.com/odeme/platform/transfer");
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, 20);
//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))
die("PAYTR platform transfer request connection error. err:".curl_error($ch));
curl_close($ch);
$result=json_decode($result,1);
/*
Başarılı yanıt örneği:
{"status":"success", "merchant_amount":"5", "submerchant_amount":"92", "trans_id":"45ABT34", "reference":"12SF45" }
Başarısız yanıt örneği:
{"status":"error", "err_no":"010", "err_msg":"toplam transfer tutarı kalan tutardan fazla olamaz"}
*/
if($result['status']=='success')
{
//VT işlemleri vs.
}
else
{
echo $result['err_no']." - ".$result['err_msg'];
}
#########################################################################
?>
Transfer talimatının verilmesi örnek kodları indirmek için tıklayın.