tıklayınız - PayU Türkiye

Transkript

tıklayınız - PayU Türkiye
Satıcının web sitesinde (veya mobil uygulamada) "Checkout" (Ödeme) butonuna basan her bir müşteride, siparişin
başlatılabilmesi için LiveUpdate (LU) API kullanılarak bir HTTP POST https://secure.payu.com.tr/order/lu.php
adresinde başlatılmalıdır.
Bunun ardından müşteri, işlemi onaylamak üzere gerekli olan bilgileri girebileceği PayU ödeme sayfalarına yönlendirilir.
LiveUpdate API ürün tabanlıdır, yani siparişler satıcı tarafından kendi ürün kodu (önerilen) aracılığıyla satıcının
hesabında benzersiz bir şekilde tanımlanan en az bir ürün içermelidir.
PayU sunucusu verileri aşağıdaki yapıda ve sırada beklemektedir:
MERCHANT
Satıcının kimliği, Kontrol Panelinde (Hesap Yönetimi / Hesap Ayarları) mevcuttur.
ORDER_REF
Satıcının sistemindeki sipariş referans numarası (kolay sipariş kimliği için).
ORDER_DATE
Siparişin sistemde başlatıldığı tarih, YYYY-AA-GG SS:DD:SS formatında (örn.: "2012-05-01
21:15:45").
ORDER_PNAME[]
Ürün isimlerini içeren dizin (maksimum uzunluk: ürün ismi başına 155 karakter).
ORDER_PGROUP[]
Ürün gruplarının kimliklerini içeren dizin
ORDER_PCODE[]
Ürün kodlarını içeren dizin (maksimum uzunluk: ürün kodu başına 50 karakter).
Aynı ürün kodu ile birden fazla ürünün gönderilecek olması halinde (aynı veya sonraki
işlemlerde), PayU ilgili ORDER_PCODE ile ürünü güncelleyecektir (diğer bütün ürün
bilgilerini (ismi, fiyatı, vergiler) üzerine yazarak).
ORDER_PINFO[]
Ek ürün bilgilerini içeren dizin (opsiyonel, ürün ismi altında ödeme sayfalarında
görüntülenir).
ORDER_PRICE[]
Ürün fiyatlarını içeren dizin, pozitif sayı, ondalık ayırıcı olarak "." ile birlikte.
ORDER_QTY[]
Her bir ürünün miktarını içeren dizin.
ORDER_VAT[]
Siparişteki her bir ürün için KDV değerlerini içeren dizin.
ORDER_PRICE_TYPE[]
ORDER_PRICE[] kodunun KDV içerip içermediğini belirten dizin.
Olası değerler: "BRÜT" (KDV dahil) ve "NET" (PayU tarafından KDV eklenecek).
Parametre opsiyoneldir, ancak belirtilmemesi halinde varsayılan değer "NET" olacaktır.
ORDER_SHIPPING
Siparişi ilişkin gönderim masrafları.
PRICES_CURRENCY
Fiyatların, vergilerin, gönderim masraflarının ve indirimlerin ifade edildiği para birimi.
Kabul edilen değerler: TRY, EUR, USD.
Parametrenin belirtilmemesi halinde, varsayılan değer TRY olacaktır.
*Fiyatların belirtildiği para birimi dışında bir para birimi ile işlem yapılacak olması halinde
CURRENCY parametresini kullanınız.
DISCOUNT
Siparişe ilişkin indirim değeri, pozitif sayı, ondalık ayırıcı olarak "." ile birlikte (opsiyonel).
DESTINATION_CITY
Siparişin teslimatının yapılacağı şehir (opsiyonel).
Parametrenin belirtilmesi halinde, müşteri PayU ödeme sayfalarında bu değeri
değiştiremeyecektir.
DESTINATION_STATE
Siparişin teslimatının yapılacağı eyalet (ülke) (opsiyonel).
Parametrenin belirtilmesi halinde, müşteri PayU ödeme sayfalarında bu değeri
değiştiremeyecektir.
Doğrulamaya yönelik olası değerler, Kontrol Paneli içerisinde "State/Country List" altında
mevcuttur.
PAY_METHOD
İşleme ait ödeme yöntemi (opsiyonel).
Parametrenin belirtilmesi halinde, müşteri PayU ödeme sayfalarında bu değeri
değiştiremeyecektir.
Parametrenin belirtilmemesi halinde, hesapta aktif ödeme yöntemlerini içeren bir açılır liste
görüntülenir.
Olası değerler:

CCVISAMC - VISA/MasterCard (varsayılan)
INSTALLMENT_OPTIONS Taksitli ödeme seçenekleri





ORDER_HASH
"2,3,4,5,6,7,8,9,10,11,12" – tüm taksit seçenekleri gösterilir
"2,3,7,10,12" - 2,3,7,10,12 taksit seçenekleri gösterilir
"2"– 2 taksit olmak üzere tek bir taksit seçeneği gösterilir
"," – hiçbir taksit seçeneği gösterilmez (taksit ve tek seferde ödeme bölümü
gösterilmez)
"" – Satıcı ayarları uygulanır
Gönderilen veriye ilişkin HMAC_MD5 imzası . (HMAC, RFC 2104'de tanımlanmaktadır)
TESTORDER
TEST MODU'nda işlemleri başlatmak üzere kullanılan Boolean parametresi ("0" veya "1")
(opsiyonel).
Parametrenin aktif olması halinde, PayU ödeme formu test ödeme bilgileri ile doldurulur
(herhangi bir kredi kartı test numarasına ihtiyacınız yoktur).
DEBUG
Uygulama sırasında PayU destek ekibinin yardımını gerektirmek üzere kullanılan Boolean
parametresi ("0" veya "1") (opsiyonel).
Parametrenin aktif olması halinde, sunucunuz ve PayU arasındaki iletişimin loglarını talep
edebilirsiniz.
LANGUAGE
Ödeme arayüzü için spesifik bir dil ayarlamanızı (ve coğrafi konuma göre tespit edilen dilin
geçersiz kılınmasını) sağlar (opsiyonel).
Olası değerler:









TR - Türkçe
EN – İngilizce
RO – Romence
HU – Macarca
RU – Rusça
DE – Almanca
FR - Fransızca
IT – İtalyanca
ES - İspanyolca
ORDER_TIMEOUT Siparişin verilebileceği süre aralığını ayarlar (opsiyonel, değer olarak saniye sayısını alır).
TIMEOUT_URL
ORDER_TIMEOUT süresinin dolması halinde, müşterinin yönlendirileceği URL'yi ayarlar
(opsiyonel).
Aşağıda belirtilen işlem bilgilerini kullanarak bir LiveUpdate talebi oluşturalım:
Bilgi
Parametre, değer(ler) ve uzunluk(lar)
Genel Veriler
MERCHANT="PAYUDEMO" (8)
ORDER_REF="112457" (6)
ORDER_DATE="2012-05-01 15:51:35" (19)
Sepet İçeriği
ORDER_PNAME[]="MacBook Air 13 inç", "iPhone 4S" (19, 9)
ORDER_PCODE[]="MBA13", "IP4S" (5, 4)
ORDER_PINFO[]="Uzatılmış Garanti - 5 Yıl", "" (27, 0)
ORDER_PRICE[]="1750", "400" (4, 3)
ORDER_PRICE_TYPE[]="GROSS", "NET" (5, 3)
ORDER_QTY[]="1", "2" (1, 1)
ORDER_VAT[]="24", "24" (2, 2)
ORDER_SHIPPING="50" (2)
PRICES_CURRENCY="RON" (3)
DISCOUNT="10" (2)
DESTINATION_CITY="Bükreş" (10)
DESTINATION_STATE="Bükreş - Sektör 1" (20)
DESTINATION_COUNTRY="RO" (2)
PAY_METHOD="CCVISAMC" (8)
Ek Bilgiler
TESTORDER="1" (HMAC MD5 imzasına dahil değildir)
LANGUAGE="RO" (HMAC MD5 imzasına dahil değildir)
Sipariş verildiği zaman bu bilgileri doğrulamak için, ORDER_HASH parametresinin değeri olarak bir HMAC MD5 imzası
gerekir. Hesaplama, Kontrol Paneli altında Hesap Yönetimi / Hesap Ayarları bölümünde yer alan satıcı (veya demo)
hesabının gizli anahtarı kullanılarak yapılır.
İmza, başına eklenen ilgili uzunluklarla (UTF-8 bayt olarak) yukarıdaki her bir değerden oluşan bir dizi kullanılarak
hesaplanır.
Örnek sipariş olarak kullanılan bilgiler neticesinde elde edilen dizi aşağıdaki gibidir:
8PAYUDEMO6112457192012-05-01 15:51:3519MacBook Air 13 inç9iPhone 4S5MBA134IP4S27Uzatılmış Garanti - 5
Yıl041750340011122242242503EUR2108Istanbul8Istanbul2TR8CCVISAMC5GROSS3NET112,3,7,10,12
İkinci ürün için ORDER_PINFO[] parametresinde herhangi bir değer bulunmadığına dikkat ediniz. Parametre tanımlanmış
olduğundan, dizinin oluşturulması sırasında uzunluğunu (0) dikkate alacağız.
TESTORDER ve LANGUAGE parametreleri dizi oluşturmada ve HMAC MD5 hesaplamasında dikkate alınmamıştır.
Veriler, her iki uçta da (sunucunuz ve PayU platformu) uzunlukların doğru bir şekilde hesaplanabilmesi için UTF-8
formatında aktarılmıştır.
Satıcı hesabının gizli anahtarı P5@F8*3!m0+?^9s3&u8( ise, sonuç olarak meydana gelen HMAC MD5 (ve
ORDER_HASH parametresi değeri): 83829ff075d5ba1f50c80df89b648ec4.
Sonuç olarak ortaya çıkan LiveUpdate HTTP POST talebi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<form method="post" action="https://secure.payu.com.tr/order/lu.php">
<input type="hidden" name="MERCHANT" value="PAYUDEMO">
<input type="hidden" name="ORDER_REF" value="112457">
<input type="hidden" name="ORDER_DATE" value="2012-05-01 15:51:35">
<input type="hidden" name="ORDER_PNAME[]" value="MacBook Air 13 inç">
<input type="hidden" name="ORDER_PNAME[]" value="iPhone 4S">
<input type="hidden" name="ORDER_PCODE[]" value="MBA13">
<input type="hidden" name="ORDER_PCODE[]" value="IP4S">
<input type="hidden" name="ORDER_PINFO[]" value="Uzatılmış Garanti - 5 Yıl">
<input type="hidden" name="ORDER_PINFO[]" value="">
<input type="hidden" name="ORDER_PRICE[]" value="1750">
<input type="hidden" name="ORDER_PRICE[]" value="400">
<input type="hidden" name="ORDER_PRICE_TYPE[]" value="GROSS">
<input type="hidden" name="ORDER_PRICE_TYPE[]" value="NET">
<input type="hidden" name="ORDER_QTY[]" value="1">
<input type="hidden" name="ORDER_QTY[]" value="2">
<input type="hidden" name="ORDER_VAT[]" value="24">
<input type="hidden" name="ORDER_VAT[]" value="24">
<input type="hidden" name="ORDER_SHIPPING" value="50">
<input type="hidden" name="PRICES_CURRENCY" value="EUR">
<input type="hidden" name="BILL_FNAME" value="John">
<input type="hidden" name="BILL_LNAME" value="Doe">
<input type="hidden" name="BILL_EMAIL" value="[email protected]">
<input type="hidden" name="DISCOUNT" value="10">
<input type="hidden" name="DESTINATION_CITY" value="İstanbul">
<input type="hidden" name="DESTINATION_STATE" value="İstanbul">
<input type="hidden" name="DESTINATION_COUNTRY" value="TR">
<input type="hidden" name="PAY_METHOD" value="CCVISAMC">
<input type="hidden" name="INSTALLMENT_OPTIONS" value="2,3,7,10,12">
<input type="hidden" name="TESTORDER" value="1">
<input type="hidden" name="LANGUAGE" value="RO">
<input type="hidden" name="ORDER_HASH" value="83829ff075d5ba1f50c80df89b648ec4">
<input type="submit" name="submit" value="Gönder!">
</form>
Satıcı mağazaları, yapılan LiveUpdate taleplerine fatura ve teslimat bilgilerini dahil etme imkanına sahiptir. Bu özellik,
PayU ödeme sayfalarında gönderilen bilgilerin önceden doldurulmasını ve böylece müşterinin bu doldurma işlemiyle vakit
kaybetmemesi avantajını sağlar.
Fatura ve teslimat parametreleri HASH hesabı için opsiyoneldir, HMAC MD5 hesaplamasına dahil edilmez ve sadece
talepte gönderilen değerler ödeme arayüzünde doldurulur. Bu alanların LiveUpdate’e gönderilmesi zorunludur.
Fatura Parametresi
Açıklama
Teslimat Parametresi
Açıklama
BILL_FNAME
Müşteri adı
DELIVERY_FNAME
Müşteri adı
BILL_LNAME
Müşteri soyadı
DELIVERY_LNAME
Müşteri
soyadı
BILL_CISERIAL
Nüfus Cüzdanı Seri Numarası (RO vatandaşları için)
-
-
BILL_CINUMBER
Nüfus Cüzdanı Numarası (RO vatandaşları için)
-
-
BILL_CIISSUER
Nüfus Cüzdanını Veren Kurum (RO vatandaşları için)
-
-
BILL_CNP
Kişisel Kimlik Numarası (RO vatandaşları için)
-
-
BILL_COMPANY
Fatura için resmi şirket unvanı
DELIVERY_COMPANY
Teslimat için
resmi şirket
unvanı
BILL_FISCALCODE
Şirketin Vergi Numarası (CUI/VAT ID)
-
-
BILL_REGNUMBER
Şirketin Ticaret Sicildeki Sicil Numarası
-
-
BILL_BANK
Şirketin bankası
-
-
-
-
BILL_BANKACCOUNT Şirketin banka hesabı
BILL_EMAIL
Müşteri e-mail adresi
-
-
BILL_PHONE
Telefon numarası
DELIVERY_PHONE
Telefon
numarası
BILL_FAX
Faks numarası
-
-
BILL_ADDRESS
Müşteri/Şirket Adresi
DELIVERY_ADDRESS
Müşteri/Şirk
et Adresi
BILL_ADDRESS2
Müşteri/Şirket Adresi (ek alan)
DELIVERY_ADDRESS2
Müşteri/Şirk
et Adresi (ek
alan)
BILL_ZIPCODE
Müşteri/Şirket Posta Kodu
DELIVERY_ZIPCODE
Müşteri/Şirk
et Posta
Kodu
BILL_CITY
Şehir
DELIVERY_CITY
Şehir
BILL_STATE
Eyalet/Ülke
DELIVERY_STATE
Eyalet/Ülke
DELIVERY_COUNTRY
CODE
Ülke Kodu
(Romanya
için RO)
BILL_COUNTRYCODE Ülke Kodu (Romanya için RO)
NOT: DESTINATION_CITY, DESTINATION_STATE veya DESTINATION_COUNTRY parametrelerinin gönderilmesi
halinde, bu bilgiler DELIVERY_CITY, DELIVERY_STATE, DELIVERY_COUNTRYCODE parametrelerine ait değerlerin
üzerine yazılacaktır.
Satıcılar, Kontrol Paneli altında Hesap Yönetimi / Ödeme Formu Ayarları bölümünde PayU sistemi aracılığıyla iletilecek
olan kişisel veri miktarını yapılandırabilir. Müşteriyi doğrudan son ödeme adımına yönlendirmek istiyorsak, zorunlu olarak
işaretlenen bilgilerin de LiveUpdate aracılığıyla gönderilmesi gerekmektedir.
Alanların tamamının opsiyonel/gizli olarak ayarlanmış olması halinde, PayU dolandırıcılık önleme amacıyla asgari olarak
şu alanları talep eder: BILL_FNAME, BILL_LNAME, BILL_EMAIL, BILL_PHONE ve BILL_COUNTRYCODE.
BILL_PHONE alanını da boş bırakılabilir (bir satıcı olarak müşterilerin telefon numaralarını
toplamıyorsanız/kullanmıyorsanız, değer olarak "-" (tire) kullanabilirsiniz).
Siparişin son adımına yönlendirmek (örn. CCVISAMC için kart veri girişi) bu bilgiler LiveUpdate ile gönderilecekse, talep
içerisinde "1" değerine sahip AUTOMODE bulunmalıdır. NOT: Bu parametre, gerekli tüm alanların gönderilmesi halinde
düzgün bir şekilde çalışacaktır. Aksi takdirde, süreç fatura/teslimat verilerinin toplandığı sayfayla başlar.
1
<input type="hidden" name="AUTOMODE" value="1">
Müşteriyi web sitesine geri yönlendirmek için (hesabına veya özelleştirilmiş bir teşekkür sayfasına), bir UTL ile birlikte
BACK_REF parametresini kullanabilirsiniz. Varsayılan olarak BACK_REF yönlendirmesi, kullanılan ödeme yönteminin
anında provizyon (örn. CCVISAMC ile yapılması halinde; normal WIRE transferi (havale) için olmaz) olması halinde
yapılabilir.
Aşağıda belirtildiği şekilde satıcı, bir sipariş veya müşteri kimlik tanıtıcı belirtebilmek için GET parametrelerini kullanabilir:
1
<input type="hidden" name="BACK_REF" value="http://domain.com/process.php?order=123456">
Yönlendirmenin PayU'dan geldiğinden emin olmak için, yönlendirmenin yapılacağı URL'ye bir kontrol değişkeni eklenir.
Kontrol değişkeni (bir GET parametresi, ctrl) aynı zamanda URL'nin uzunluğunun (parametreler dahil) önüne
eklenmesiyle PayU'nun yönlendirdiği URL'den (tüm parametrelerle birlikte) oluşan bir dizi üzerinde hesaplanan HMAC
MD5'tir.
http://www.yourdomain.com/process.php?order=123456&ctrl=741fcf35a297e256f4090c4dfc0ed652
ctrl HMAC MD5 hesaplaması için kaynak dizisi:
50http://www.yourdomain.com/process.php?order=123456
Hesabınız için etkinleştirilmiş olan birden fazla para birimi varsa, müşteriler ödeme yapacakları para birimini ödeme
formunda seçebilirler.
Siparişe ilişkin tahsilatları fiyatların ayarlanmış olduğu para biriminden (PRICES_CURRENCY) farklı bir para biriminde
olmasını istiyorsanız, opsiyonel parametre gönderebilirsiniz:
1
<input type="hidden" name="CURRENCY" value="USD">
Verilerinizin gönderilmeye çalışılması sırasında hata alıyorsanız, her hata çeşidi için aşağıdaki listeden sorun
açıklamalarına bakabilirsiniz:
Hata
Açıklama
ACCES DENIED (Erişim Engellendi)
PayU arayüzüne erişmenize izin verilmemektedir. Lütfen
PayU destek ekibi ile irtibata geçiniz.
Invalid account (Geçersiz hesap)
MERCHANT parametresi yanlış veya belirtilmemiş.
Access not permitted (Erişime izin verilmiyor)
LiveUpdate özelliğine erişiminiz kısıtlanmış. PayU Hesap
Müdürünüz ile görüşmelisiniz.
Invalid Data (Geçersiz veri)
İletmiş olduğunuz veriler doğru bir biçimde oluşturulmamış.
Lütfen dizinleri kontrol ediniz.
Invalid product code (Geçersiz ürün kodu)
ORDER_PCODE[] dizini hatalı oluşturulmuş.
Invalid product name (Geçersiz ürün adı)
ORDER_PNAME[] dizini hatalı oluşturulmuş.
Invalid product group (Geçersiz ürün grubu)
ORDER_PGROUP[] dizini hatalı oluşturulmuş.
Invalid price (Geçersiz fiyat)
ORDER_PRICE[] dizini hatalı oluşturulmuş.
Invalid VAT (Geçersiz KDV)
ORDER_VAT[] dizini hatalı oluşturulmuş.
Invalid Price (Geçersiz Fiyat)
Hesaplanan toplam hatalı. DISCOUNT ve
ORDER_SHIPPING parametrelerini kontrol ediniz.
Invalid Signature (Geçersiz İmza)
HMAC_MD5 imzası, gönderilen veri için hatalı hesaplanmıştır.
Yukarıda belirtilen tüm verileri içeren, PayU demo hesabında bir TEST işlemi başlatan ve hem AUTOMODE hem de
BACK_REF özelliklerini kullanan bir talep aşağıda verilmektedir:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<form method="post" action="https://secure.payu.com.tr/order/lu.php">
<input type="hidden" name="MERCHANT" value="PAYUDEMO">
<input type="hidden" name="ORDER_REF" value="112457">
<input type="hidden" name="ORDER_DATE" value="2012-05-01 15:51:35">
<input type="hidden" name="ORDER_PNAME[]" value="MacBook Air 13 inç">
<input type="hidden" name="ORDER_PNAME[]" value="iPhone 4S">
<input type="hidden" name="ORDER_PCODE[]" value="MBA13">
<input type="hidden" name="ORDER_PCODE[]" value="IP4S">
<input type="hidden" name="ORDER_PINFO[]" value="Uzatılmış Garanti- 5 Yıl">
<input type="hidden" name="ORDER_PINFO[]" value="">
<input type="hidden" name="ORDER_PRICE[]" value="1750">
<input type="hidden" name="ORDER_PRICE[]" value="400">
<input type="hidden" name="ORDER_PRICE_TYPE[]" value="GROSS">
<input type="hidden" name="ORDER_PRICE_TYPE[]" value="NET">
<input type="hidden" name="ORDER_QTY[]" value="1">
<input type="hidden" name="ORDER_QTY[]" value="2">
<input type="hidden" name="ORDER_VAT[]" value="24">
<input type="hidden" name="ORDER_VAT[]" value="24">
<input type="hidden" name="ORDER_SHIPPING" value="50">
<input type="hidden" name="PRICES_CURRENCY" value="EUR">
<input type="hidden" name="DISCOUNT" value="10">
<input type="hidden" name="DESTINATION_CITY" value="Ankara">
<input type="hidden" name="DESTINATION_STATE" value="Ankara">
<input type="hidden" name="DESTINATION_COUNTRY" value="TR">
<input type="hidden" name="PAY_METHOD" value="CCVISAMC">
<input type="hidden" name="INSTALLMENT_OPTIONS" value="2,3,7,10,12">
<input type="hidden" name="BILL_FNAME" value="Test">
<input type="hidden" name="BILL_FNAME" value="PayU">
<input type="hidden" name="BILL_EMAIL" value="[email protected]">
<input type="hidden" name="BILL_PHONE" value="0212021212">
<input type="hidden" name="BILL_COUNTRYCODE" value="TR">
<input type="hidden" name="DELIVERY_FNAME" value="Test">
<input type="hidden" name="DELIVERY_LNAME" value="PayU">
<input type="hidden" name="DELIVERY_EMAIL" value="[email protected]">
<input type="hidden" name="DELIVERY_PHONE" value="0213031313">
<input type="hidden" name="DELIVERY_COUNTRYCODE" value="TR">
<input type="hidden" name="TESTORDER" value="1">
<input type="hidden" name="AUTOMODE" value="1">
<input type="hidden" name="BACK_REF" value="http://server.com/thankyou.php?order=112457">
<input type="hidden" name="LANGUAGE" value="TR">
<input type="hidden" name="ORDER_HASH" value="533b92f70542e3ec98ab290210e92329">
<input type="submit" name="submit" value="Gönder!">
</form>
IPN, PayU sunucuları ve sunucularınız arasında bir bağlantı görevi görerek, online ödeme sisteminde provizyon verilmiş
olan tüm siparişlerin otomatik olarak işleme alınmasını mümkün kılar. Bu bildirim yöntemi, kendi sipariş yönetim
sisteminizde işlenmek üzere işlem verisinin alınmasını sağlar.
Bir sipariş için provizyon ve onay verildiğinde, PayU sunucusu siparişle ilgili tüm bilgileri içeren bir veri yapısını
sisteminizde daha önceden ayarlanmış olan bir URL’ye gönderir. Veriler HTTP POST aracılığıyla gönderilir. Veriler ayıca
bilgilerin doğrulanması için bir imza içerecektir. İmza, istenen veri seti üzerinde bir ortak PayU/Satıcı anahtarı ile bir
HMAC_MD5 işlevi uygulayarak elde edilir (HMAC, RFC 2104’te tanımlanmaktadır).
Gönderilen verilerin doğru olarak alınmasına ilişkin herhangi bir konfirmasyon olmaması halinde, PayU sunucusu geçerli
bir yanıt alınana kadar birkaç dakikada bir HTTP POST göndermeyi denemeye devam eder.
IPN iletişimi alıcının aktif bağlantısından bağımsızdır ve hiçbir şekilde alıcının oturumuna bağlanamaz.
Gönderilen veriler aşağıdaki tabloda yer almaktadır:
SALEDATE
Sipariş verme tarihi, formatı: Y-a-g S:d:s (2012-04-26 14:59:35)
PAYMENTDATE
Sipariş provizyon tarihi, formatı: Y-a-g S:d:s (2012-04-26 15:01:25)
COMPLETE_DATE
Sipariş tamamlanma tarihi, formatı: Y-a-g S:d:s (2012-04-26 15:02:28)
REFNO
Sipariş için global PayU referansı (maksimum uzunluk: 9 karakter)
REFNOEXT
Sipariş için satıcı referans numarası (maksimum uzunluk: 100 karakter),
Satıcı tarafından sağlanır
ORDERNO
Satıcı sipariş numarası (maksimum uzunluk: 6 karakter)
ORDERSTATUS
Geçerli sipariş durumu. Olası değerler:







PAYMENT_AUTHORIZED – kart ödemesine provizyon verildi
PAYMENT_RECEIVED – havaleyle yapılan ödeme alındı
TEST – test siparişi
CASH – nakit ödemeli sipariş
COMPLETE – tamamlanan sipariş (provizyon verilmiş/teslim
edilmiş)
REVERSED – iptal edilen sipariş
REFUND – ödemesi iade edilen sipariş (iade edilen ödeme)
PAYMETHOD
Kullanılan ödeme yöntemi (maksimum uzunluk: 40 karakter)
PAYMETHOD_CODE
Ödeme yöntemi kodu.
Olası değerler: CCVISAMC
IPN_PAID_AMOUNT
Finansal maliyete birlikte toplam fiyat (tüm maliyetlerle birlikte ödeme
tutarı)
IPN_INSTALLMENTS_PROGRAM
Ödeme kartının sadakat programı adı
IPN_INSTALLMENTS_NUMBER
Müşteri tarafından seçilen taksit sayısı
IPN_INSTALLMENTS_PROFIT
Ödemenin finansal maliyeti
FIRSTNAME
Adı (maksimum uzunluk: 40 karakter)
LASTNAME
Soyadı (maksimum uzunluk: 40 karakter)
IDENTITY_NO
Müşteri nüfus cüzdanı seri numarası ve numarası (Seri Numarası/Numarası – sadece
Romanyalı müşteriler için mevcuttur)
IDENTITY_ISSUER
IDENTITY_NO Nüfus cüzdanını veren kurum
IDENTITY_CNP
Müşterinin kişisel vatandaşlık numarası, sadece Romanyalı müşteriler için mevcuttur. Bu
alan sadece müşteriden bu bilgileri talep etme seçeneğini etkinleştirdiyseniz gösterilir.
COMPANY
Şirket (maksimum uzunluk: 40 karakter)
REGISTRATIONNUMBER Şirketin ticaret sicili sicil kayıt numarası (maksimum uzunluk: 40 karakter)
FISCALCODE
Sicil Numarası / Veri Numarası (maksimum uzunluk: 40 karakter)
CBANKNAME
Şirketin Bankası (maksimum uzunluk: 40 karakter)
CBANKACCOUNT
Şirketin Banka Hesabı (maksimum uzunluk: 50 karakter)
ADDRESS1
Adres (maksimum uzunluk: 100 karakter)
ADDRESS2
Ek Adres bilgisi (maksimum uzunluk: 100 karakter)
CITY
Şehir (maksimum uzunluk: 30 karakter)
STATE
Eyalet/Sektör/Ülke (maksimum uzunluk: 30 karakter)
ZIPCODE
Posta Kodu (maksimum uzunluk: 20 karakter)
COUNTRY
Ülke (maksimum uzunluk: 50 karakter)
PHONE
Telefon Numarası (maksimum uzunluk: 40 karakter)
FAX
Faks Numarası (maksimum uzunluk: 40 karakter)
CUSTOMEREMAIL
Müşteri e-mail adresi (maksimum uzunluk: 40 karakter)
FIRSTNAME_D
Adı (maksimum uzunluk: 40 karakter)
LASTNAME_D
Soyadı (maksimum uzunluk: 40 karakter)
COMPANY_D
Şirket (maksimum uzunluk: 50 karakter)
ADDRESS1_D
Adres (maksimum uzunluk: 100 karakter)
ADDRESS2_D
Ek adres bilgileri (maksimum uzunluk: 100 karakter)
CITY_D
Şehir (maksimum uzunluk: 30 karakter)
STATE_D
Eyalet/Sektör/Ülke (maksimum uzunluk: 30 karakter)
ZIPCODE_D
Posta Kodu (maksimum uzunluk: 20 karakter)
COUNTRY_D
Ülke (maksimum uzunluk: 50 karakter)
PHONE_D
Telefon numarası (maksimum uzunluk: 40 karakter)
IPADDRESS
İstemci IP adresi (maksimum uzunluk: 250 karakter)
CURRENCY
Siparişin işleme alındığı para birimi. Olası değerler: TRY, USD, EUR
IPN_PID[]
PayU veritabanında sipariş edilen ürünlerin Kimlik Kodlarını içeren dizin (PayU referans)
IPN_PNAME[]
Ürün isimlerini içeren dizin
IPN_PCODE[]
Sistemde satıcı tarafından atanmış olan ürün kodlarını içeren dizin (satıcı referansı)
IPN_INFO[]
Sipariş edilen her bir ürün için gönderilen ek bilgileri içeren dizin (PayU tarafından
gönderilmişse)
IPN_QTY[]
Ürün miktarlarını içeren dizin
IPN_PRICE[]
RON para biriminde, ondalık ayırıcı olarak nokta (.) ile ürün başına birim fiyatları (KDV’siz)
içeren dizin.
IPN_VAT[]
TL para biriminde, ondalık ayırıcı olarak nokta (.) ile ürün başına KDV değerlerini içeren
dizin.
IPN_VER[]
Ürün sürümlerini içeren dizin (maksimum uzunluk: 50 karakter)
IPN_DISCOUNT[]
Bir promosyonda indirim yapılmış olan tutarları içeren dizin. KDV dahildir.
IPN_PROMONAME[]
Yukarıda belirtilen indirimlerin uygulandığı promosyonların isimlerini içeren dizin.
IPN_DELIVEREDCODES[] PayU sözleşmesinin bu özelliği içermesi halinde, müşterilere gönderilen kodları içeren
dizin. Dizindeki her öğe, sipariş edilen miktarın 1’den büyük olması halinde gönderilen her
bir kod için ayırıcı olarak virgül (,) ile birlikte gösterilir.
IPN_TOTAL[]
Ondalık ayırıcı olarak nokta (.) ile sipariş satırındaki kısmi toplam (KDV dahil)
IPN_TOTALGENERAL
Ondalık ayırıcı olarak nokta (.) ile KDV ve gönderim masrafları dahil olmak üzere toplam
işlem tutarı.
IPN_SHIPPING
Ondalık ayırıcı olarak nokta (.) ile TL para biriminde gönderim için hesaplanan tutar.
IPN_GLOBALDISCOUNT
Global sipariş indirimi. Bu alan opsiyoneldir ve sadece tutarın 0’dan (sıfır) büyük olması
halinde gönderilir.
IPN_COMMISSION
Ondalık ayırıcı olarak nokta (.) ile PayU komisyonu (TL para biriminde)
IPN_DATE
IPN POST'un gönderim tarihi, formatı: YagSds (örn.: 20120426145935)
HASH
Talep imzası (yukarıdaki tüm alanlarda MD5 HMAC)
PayU, aşağıdaki formatta (sayfanın herhangi bir yerinde) bir yanıt bekler:
1
<epayment>DATE|HASH</epayment>
DATE
Yanıtın gönderildiği tarih, format: YagSds (örn.:20120426145935)
HASH
Yanıt imzası (başlangıç alanları IPN_PID[0], IPN_PNAME[0], IPN_DATE’de MD5 HMAC; DATE – önceki
alan)
Yanıta ilişkin HMAC hesaplama alanları şöyledir:
IPN_PID[0]
Orijinal IPN mesajından yansıma – ilk satın alınan ürünün kimliği
IPN_PNAME[0]
Orijinal IPN mesajından yansıma – ilk satın alınan ürünün adı
IPN_DATE
Orijinal IPN mesajından yansıma –YagSds formatında (20120426145935) IPN tarihi
DATE
YagSds formatında (20120426145935) yanıtın tarihi (sunucunuzun saati)
Aşağıdaki bilgilere sahip olduğumuzu varsayıyoruz:
Alan adı
Uzunluk
Alan değeri
SALEDATE
19
2012-04-26
12:22:09
REFNO
7
1000037
REFNOEXT
0
ORDERNO
2
13
ORDERSTATUS
8
AUTHRECEIVE
D
PAYMETHOD
8
CCVISAMC
FIRSTNAME
4
Test
LASTNAME
4
PayU
COMPANY
0
REGISTRATIONNUMBER
0
FISCALCODE
0
CBANKNAME
0
CBANKACCOUNT
0
ADDRESS1
14
ADDRESS2
0
CITY
8
İstanbul
STATE
8
İstanbul
ZIPCODE
5
90210
COUNTRY
7
Türkiye
PHONE
11
0268/121212
FAX
0
CUSTOMEREMAIL
13
[email protected]
FIRSTNAME_D
4
Test
LASTNAME_D
4
PayU
COMPANY_D
0
ADDRESS1_D
14
ADDRESS2_D
0
CITY_D
6
Ankara
STATE_D
6
Ankara
ZIPCODE_D
5
90210
COUNTRY_D
6
Türkiye
PHONE_D
11
0268/121212
IPADDRESS
6
node11
CURRENCY
3
TRY
IPN_PID[0]
1
1
Some Street 21
Some Street 21
IPN_PNAME[0]
25
Apple MacBook
Air 13 inç
IPN_PCODE[0]
7
AMBA13I
IPN_INFO[0]
0
IPN_QTY[0]
1
1
IPN_PRICE[0]
8
50000.00
IPN_VAT[0]
7
9500.00
IPN_VER[0]
0
IPN_DISCOUNT[0]
4
IPN_PROMONAME[0]
0
IPN_DELIVEREDCODES[0]
0
IPN_TOTAL[0]
8
59500.00
IPN_TOTALGENERAL
8
60095.00
IPN_SHIPPING
6
595.00
IPN_COMMISSION
4
0.00
IPN_DATE
14
2012042612343
4
IPN_PAID_AMOUNT
7
1223.29
IPN_INSTALLMENTS_PROGRAM
5
BONUS
IPN_INSTALLMENTS_NUMBER
2
12
IPN_INSTALLMENTS_PROFIT
4
3.26
0.00
Yanıtın kaynak dizisi, aşağıdaki veriler kullanılarak oluşturulur:
Alan adı
Uzunluk
Alan değeri
IPN_PID[0]
1
1
IPN_PNAME[0]
25
Apple MacBook Air 13 inç
IPN_DATE
14
20120426123434
DATE
14
20120426123434
Sonuç olarak ortaya çıkan dizi: 1125Apple MacBook Air 13 inç14201204261234341420120426123434
Doğrulama için HMAC_MD5 imzası: 5e7457bd605c5fdd80b038b8e2d9d1d9
HASH alan karakterleri küçük harf/büyük harf olabilir (onaltılık düzende dizi).
Bildirimin gönderildiği sunucudan gelen yanıt şu şekilde olmalıdır:
1
<epayment>20120426123434|5e7457bd605c5fdd80b038b8e2d9d1d9</epayment>
Yanıtın geçerli olmaması halinde, bildirim onaylanmaz. PayU otomatik olarak birkaç dakika içerisinde bildirimi yeniden
gönderir.
Güvenlik nedenlerinden dolayı, PayU bildirimlerini alan koda erişimin sadece 83.96.157.64/27 IP sınıfına izin verecek
şekilde sınırlandırılmasını tavsiye etmekteyiz.
IPN bildirimleri üzerinde çalışmak veya test etmek için bir TEST siparişi verilmesini (“TESTORDER” parametresi
kullanılarak) tavsiye etmekteyiz. Bildirimi aldıktan sonra istediğiniz sayıda tekrar gönderebilirsiniz; PayU yönetici
arayüzünde kullanılabilir filtreleri kullanarak “Orders and reports” bölümünde test siparişini bulun; sipariş ayrıntılarını
içeren açılır menüyü açmak için siparişin referansına basın; bu açılır menüde “Re-send notification” linkine basın, “Debug
IPN?” seçeneğini işaretleyin ve “Continue” butonuna basın. Bu şekilde, hem IPN talebinin içeriğini hem de kodunuzun
yanıtını görebilirsiniz.
Anında Teslimat bildirimi, bu konfirmasyonları otomatik olarak PayU sunucusunda kaydeden PayU sistemine kendi
sisteminizden otomatik teslimat konfirmasyonları gönderilmesini kolaylaştırır. PayU sisteminde verilen siparişleriniz
konfirme edilir edilmez, konfirme edilecek olan işlem için kimlik verilerini içeren ve PayU tarafından sağlanan bir URL’ye
yönetim sisteminiz aracılığıyla bir POST gönderilmelidir.

PayU sistemi içerisinde konfirme edilmesi gereken her bir sipariş için ayrı bir HTTP POST gerekmektedir.

Tüm HTTP POST’lar, POST’da bulunan kimlik verilerine ve bir paylaşımlı anahtara (PayU / Satıcı) dayanan bir
HMAC_MD5 imzası kullanılarak doğrulanacaktır.
HTTP POST’ta bulunan tanımlama verileri aşağıdaki tabloda anlatılmaktadır ve tam olarak aşağıdaki sırada
gönderilmeleri gerekmektedir:
Kod
Açıklama
MERCHANT
PayU sistemindeki satıcı kodunu gösterir
ORDER_REF
PayU sistemindeki sipariş referans kodunu gösterir
ORDER_AMOUNT
PayU sisteminde alınmış olduğu şekliyle, konfirme edilecek olan siparişin toplam tutarını
gösterir
ORDER_CURRENCY
Siparişin verildiği para birimini gösterir
IDN_DATE
Teslimat konfirmasyonu talebinin iletildiği tarihi gösterir. <> formatına sahiptir. Burada:






Y – Yılı temsil eder. 4 haneli sayı.
A – Ayı temsil eder. 2 haneli sayı.
G – Günü temsil eder. 2 haneli sayı.
S – Saati temsil eder. Değerler 00’dan 24’e kadar. 2 haneli sayı.
D – Dakikayı temsil eder. 2 haneli sayı.
S – Saniyeyi temsil eder. 2 haneli sayı.
ORDER_HASH
Talep imzasını gösterir. Bu imza, yukarıdaki tüm alanlardan (1-5) oluşturulan bir
HMAC_MD5 tipi imzadır.
REF_URL*
* Bu alan zorunlu değildir. Bu parametrenin gönderilmemesi veya boş olması halinde, yanıt
INLINE gönderilecektir.
GET yöntemiyle yanıtın gönderileceği URL adresini gösterir. URL adresi < > sözdizimi ile
başlamalıdır.
Teslimatın otomatik olarak konfirme edildiği URL: https://secure.payu.com.tr/order/idn.php
Bu bölüm, HASH imzasının nasıl hesaplandığını göstermektedir.
Giriş verisi örneği:
Alan Adı
Uzunluk
Alan Değeri
MERCHANT
4
Test
ORDER_REF
7
1000500
ORDER_AMOUNT
4
1645
ORDER_CURRENCY
3
EUR
IDN_DATE
19
2012-04-26
17:46:56
MAC hesaplamasına yönelik kaynak dizisi, alanın başında dizi uzunluğunu ekleyerek elde edilmektedir. Verilen giriş verisi
ile kaynak dizisi şu şekilde oluşur:
4TEST71000500416453EUR192012-04-26 17:46:56
Bu örnekteki gizli anahtar: AABBCCDDEEFF
Son MD5 değeri: 486ae8426384c66a6e175f5f8bafde6e
PayU yanıtının INLINE (aynı sayfada) olacak şekilde ayarlanmış olması halinde, aşağıdaki formata sahiptir (sayfanın
herhangi bir yerinde):
1
<epayment>ORDER_REF|RESPONSE_CODE|RESPONSE_MSG|IDN_DATE|ORDER_HASH</epayment>
PayU yanıtının belirli bir URL’ye gönderilecek olması halinde (REF_URL parametresi geçerli bir URL içermektedir), yanıt
aşağıda belirtildiği şekilde gönderilecektir:
http://www.mysite.com/prel.php?ORDER_REF=value&RESPONSE_CODE=value&RESPONSE_MSG=value&IDN_
DATE=value&ORDER_HASH=value
Kod
Açıklama
ORDER_REF
PayU sipariş referansı olan orijinal IDN talebinden bir yansıma gösterir.
RESPONSE_CODE
Teslimat konfirmasyonu talebine ait yanıtın kodunu gösterir. Bu kodlar aşağıdaki tabloda
açıklanmaktadır.
RESPONSE_MSG
Teslimat konfirmasyonu talebine ait mesajı göstermektedir. Bu kodlar aşağıdaki tabloda
açıklanmaktadır.
IDN_DATE
Teslimat konfirmasyonu talebinin iletildiği tarihi gösterir. <> formatına sahiptir. Burada:






ORDER_HASH
Y – Yılı temsil eder. 4 haneli sayı.
A – Ayı temsil eder. 2 haneli sayı.
G – Günü temsil eder. 2 haneli sayı.
S – Saati temsil eder. Değerler 00’dan 24’e kadar. 2 haneli sayı.
D – Dakikayı temsil eder. 2 haneli sayı
S – Saniyeyi temsil eder. 2 haneli sayı.
Talep imzasını gösterir. Bu imza, yukarıdaki tüm alanlardan (1-4) tam olarak aynı sırada
oluşturulan bir HMAC_MD5 tipi imzadır.
Yanıt kodlarının ve mesajlarının anlamları aşağıda gösterildiği gibidir:
Yanıt Kodu
Yanıt Mesajı
1
Konfirme edildi.
2
ORDER_REF eksik veya yanlış.
3
ORDER_AMOUNT eksik veya yanlış.
4
ORDER_CURRENCY eksik veya yanlış.
5
IDN_DATE doğru formatta değil.
6
Siparişin konfirme edilmesinde hata oluştu.
7
Sipariş daha önceden konfirme edilmiş.
8
Bilinmeyen hata.
9
Geçersiz ORDER_REF.
10
Geçersiz ORDER_AMOUNT.
11
Geçersiz ORDER_CURRENCY.
Not: PayU’dan geçersiz bir yanıt gelmesi halinde sipariş konfirme edilmez.
HTTP POST talebine ait yanıt HASH imzası, aşağıdaki veriler kullanılarak hesaplanır:
Alan Adı
Uzunluk
Alan Değeri
ORDER_REF
7
1000500
RESPONSE_CODE
1
1
RESPONSE_MSG
9
Konfirme Edildi
IDN_DATE
19
2012-04-26
17:46:58
HASH alanları, hem küçük harfli hem de büyük harfli karakterler içerebilirler (onaltılık düzende dizi).
Dizi:
71000500119Confirmed192012-04-27 17:46:58
MD5 HASH Değeri:
d317bb75d8f1d7fd203314914621c17c
Anında İptal/Geri Ödeme Bildirimi (IRN), PayU aracılığıyla ödemesi yapılan siparişler için doğrudan sipariş yönetimi
uygulamasından/platformundan iptal/geri ödeme talepleri göndermeyi otomatikleştirmenizi mümkün kılar.
İşlem, HMAC_MD5 ile doğrulanmış sipariş bilgilerinin HTTP POST aracılığıyla aşağıdaki URL’ye gönderilmesini gerektirir:
https://secure.payu.com.tr/order/irn.php
Bu işlem bir siparişin iptalinin, ödenen tutarın kısmi veya tamamen geri ödenmesinin gerekli olduğu durumlarda
uygulanmalıdır.
PayU sunucusu, aşağıda belirtilen sıraya kesinlikle uyacak şekilde, aşağıdaki yapıda paketlenmiş olan veriler bekler:
MERCHANT
Satıcının kimliği. PayU yönetim arayüzünde “Account administrator” / “Account Settings”
bölümlerinde mevcuttur.
ORDER_REF
PayU sisteminde siparişe ait referans numarası.
ORDER_AMOUNT
PayU tarafından alınmış olduğu şekilde iptal edilecek/geri ödenecek olan sipariş tutarı.
ORDER_AMOUNT değeri ile gösterilen bu tutarın siparişin toplam tutarından az olması
halinde KISMİ GERİ ÖDEME talep edilecektir. ORDER_AMOUNT değerinin sipariş değerine
eşit olması halinde TAM GERİ ÖDEME TALEBİ hazırlanacaktır.
ORDER_CURRENCY
Sipariş tutarının belirtildiği para birimi.
IRN_DATE
İptal/geri ödeme talebinin hazırlandığı tarih, format: Y-a-g S:d:s (örn.: 2012-04-26 14:30:56)
ORDER_HASH
Gönderilen veriye ait HMAC_MD5 imzası. (HMAC, RFC 2104’de tanımlanmıştır)
REF_URL (opsiyonel)
HTTP GET aracılığıyla yanıtın gönderildiği URL (istenmesi halinde). Parametrenin
gönderilmemesi veya doğru bir değere sahip olmaması halinde, yanıt sayfa içerisinde
gösterilecektir. (örn.: http://www.my-website.com/irn.php)
PRODUCTS_IDS
İPTAL/GERİ ÖDEME talebinin hazırlandığı ürünlerin kimliklerini içeren dizin.
PRODUCTS_QTY
PRODUCTS_IDS’de ürünlere ilişkin miktarları içeren dizin.
REGENERATE_CODES Ürünle ilişkilendirilen statik listeye yeniden tahsis edilecek olan kodları içeren dizin.
LICENSE_HANDLING
Lisansla ilgili olarak işleme alınacak olan eylemleri içeren dizin. LICENSE_HANDLING,
‘CANCEL’ veya ‘NONE’ değerlerine sahip olabilir.
AMOUNT
Geri ödeme tutarını gösteren sayısal değer (PRODUCTS_IDS*PRODUCTS_QTY öğelerinin
değerinin tamamının toplamı). KDV ve vergileri içermelidir.

PRODUCTS_IDS parametresinin mevcut olması halinde, aşağıda belirtilen doğrulamalar gerçekleştirilir:

PRODUCTS_IDS dizininin boş olmaması gerekmektedir;

PRODUCTS_QTY dizininin boş olmaması gerekmektedir;

PRODUCTS_QTY ve PRODUCTS_IDS dizinleri aynı uzunluğa sahip olmalıdır;

PRODUCTS_QTY dizininde bulunan miktarlar, siparişte bulunan miktarlardan az veya eşit olmalıdır;

PRODUCTS_IDS[i] * PRODUCTS_QTY[i] şeklinde ürünlerin tutarı ORDER_AMOUNT değerine eşit olmalıdır.

LICENSE_HANDLING, REGENERATE_CODES, PRODUCTS_IDS, PRODUCTS_QTY parametreleri gerekli
değildir, ancak gönderilmeleri halinde HASH imzası hesaplamasına dahil edilirler.

REGENERATE_CODES parametresinin bulunması, ürüne atanan anahtar listesinin dinamik olması halinde bir
hata oluşturmaz.
1
2
3
4
5
6
7
8
9
10
11
12
$irn = array(
'MERCHANT'=>$_GET["MERCHANT"],
'ORDER_REF' => 3954142,
'ORDER_AMOUNT'=> 39.99,
'ORDER_CURRENCY'=> 'USD',
'PRODUCTS_IDS'=> array ( 35386, 35387 ),
'PRODUCTS_QTY'=> array ( 1,2 ),
'REGENERATE_CODES'=> array ( '1234-5678-9012-3456' ),
'LICENSE_HANDLING'=> array ( 'CANCEL' ),
'AMOUNT'=> '12.56',
'IRN_DATE'=> tarih( 'Y-m-d H:i:s' ),
'ORDER_HASH'=> 603ced7568f22d656937e8bf0b1b44a9);
İPTAL, Satıcı tarafından ürünlerin teslimatı konfirme edildiğinde ve ürünler son müşteriye (Alıcıya) teslim edildiğinde bir
siparişin iptal edilmesi işlemidir.
İPTAL işlemi durumunda, ödeme konfirmasyonunun ardından kilitlenen işlem tutarı, İPTAL işlemini gerçekleştiren finans
departmanının onayının ardından PayU tarafından açılır ve Satıcıya PayU işlem komisyonu ücretlendirilmez. İşleme PayU
yönetim arayüzünde ve ödeme bildirimlerinde İPTAL durumu girilir.
GERİ ÖDEME, Satıcı tarafından teslimat konfirmasyonunun yapılmasını ardından bir siparişin iptal edilmesi işlemidir.
Spesifik bir ödeme için İPTAL/GERİ ÖDEME işlemi onaylandığında, Satıcıya iptal edilen siparişin durumunu (örn. İPTAL
veya GERİ ÖDEME) ve eksi değerle gösterilecek şekilde iptal edilen toplam tutarı gösteren bir IPN/e-mail konfirmasyonu
gönderilir.
Aşağıdaki verilere sahip olduğumuzu varsayalım:
Alan adı
Uzunluk (bayt)
Alan değeri
MERCHANT
4
TEST
ORDER_REF
7
1000500
ORDER_AMOUNT
4
22.5
ORDER_CURRENCY
3
RON
AMOUNT
5
12.56
IRN_DATE
19
2012-04-26
14:30:56
Gönderilen veriyi doğrulamak için, hesabınıza bağlı gizli anahtarla kodlanacak olan bir HMAC_MD5 imzası
hesaplanmalıdır. Gizli Anahtar Kontrol Panelinde Hesap Yönetimi / Hesap Ayarları bölümünde mevcuttur.
HMAC_MD5 imzasının kaynak dizisi, “yeni satır” karakterleri olmadan her bir alan değerinin başlangıcına alan
uzunluğunu ekleyerek oluşturulur (UTF-8 karakterler için, bayt olarak dizi uzunluğu karakter sayısından fazla olabilir).
Yukarıda verilen verilerle kaynak dizisi aşağıdaki gibi olur:
4TEST71000500422.53RON512.56192012-04-26 14:30:56
Veri doğrulama için gizli anahtar:
AABBCCDDEEFF
Yukarıdaki veriler için hesaplanan HMAC_MD5 imzası:
466b8bbd329f003c1d4e5b1003ab50ae
PayU, göndermiş olduğunuz bilgilerin başarılı bir şekilde alınmış olduğunu aşağıda belirtildiği şekilde bilgileri alan
sayfanın içerisine bir yanıt yerleştirerek doğrular:
1
<epayment>ORDER_REF|RESPONSE_CODE|RESPONSE_MSG|IRN_DATE|ORDER_HASH </epayment>
PayU tarafından gönderilen doğrulama yanıtı içerisindeki parametreler:
ORDER_REF
IRN tarafından alınan PayU sistemindeki sipariş referansı
RESPONSE_CODE
İptal/geri ödeme talebi için yanıt kodu
RESPONSE_MSG
İptal/geri ödeme talebi için yanıt mesajı
IRN_DATE
Sipariş iptali/geri ödemesi talebi yanıtının gönderildiği tarih, format: Y-a-g S:d:s (örn.:
2012-04-26 14:30:56)
ORDER_HASH
Veri doğrulama için HMAC_MD5 imzası
REF_URL parametresinin IRN aracılığıyla gönderilmesi ve geçerli bir URL içermesi halinde, yanıt aşağıda gösterilene
benzeyen bir URL’ye gönderilir:
REF_URL = http://www.mysite.com/callback.php
Yanıt:
http://www.mysite.com/callback.php?ORDER_REF=valoare&RESPONSE_CODE= valoare
&RESPONSE_MSG=valoare&IRN_DATE=valoare&ORDER_HASH=valoare
Yanıt kodları ve mesajlar şöyledir:
OK
ORDER_REF eksik veya formatı hatalı
ORDER_AMOUNT eksik veya formatı hatalı
PRODUCTS_IDS eksik veya formatı hatalı
PRODUCTS_QTY eksik veya formatı hatalı
ORDER_CURRENCY eksik veya formatı hatalı
IRN_DATE doğru formatta değil
Siparişin iptal edilmesinde hata oluştu
Sipariş daha önceden iptal edilmiş
Bilinmeyen hata
Geçersiz ORDER_REF
Geçersiz ORDER_AMOUNT
Geçersiz ORDER_CURRENCY
Geçersiz PRODUCTS_QTY
Geçersiz REGENERATE_CODES
Geçersiz LICENSE_HANDLING
AMOUNT eksik veya formatı hatalı
Geçersiz AMOUNT
IOS, bir siparişin durumu için PayU platformunda sorgulama yapmayı mümkün kılmaktadır.
IOS, https://secure.payu.com.tr/order/ios.php adresi üzerinden HTTP POST veya HTTP GET ile çalıştırılabilir.
PayU veritabanında yapılacak olan sorgulama, her seferinde bir sipariş için olmak üzere ayrı ayrı yapılabilecektir.
Bir sipariş durumu için PayU sisteminde sorgulama yapmak için aşağıdaki parametreler gerekmektedir:
MERCHANT
PayU’daki satıcı tanımlama kodu.
REFNOEXT
Satıcı tarafından siparişle birlikte gönderilen harici referans numarası.
HASH
Talep imzası (Yukarıda belirtilen alanlarla oluşturulan bir dizi üzerinden HMAC MD5).
Talep, gönderilen veriler ve bir paylaşımlı anahtar (PayU/satıcı) kullanılarak hesaplanan bir HMAC_MD5 imzası ile
doğrulanır. İmzanın oluşturulacağı dizi şu şekilde oluşturulur: parametre uzunluğu + parametre değeri.

MERCHANT: EPAYMENT

REFNOEXT: EPAY10425

İmzanın hesaplandığı dizi: 8EPAYMENT9EPAY10425

Gizli anahtar: AABBCCDDEEFF

HASH: 9937070708323db2dd9d154b7bd010a5
PayU sistemi, aşağıda belirtilen değerlerle XML formatında “inline” olarak yanıt verecektir:
ORDER_DATE
Sipariş tarihi, format: Y-a-g S:D:s (Y-yıl-4 hane, a-ay-2 hane, g-gün-2 hane, S-saat-2 hane, ddakika-2 hane, s-saniye-2 hane)
REFNO
Siparişe ait global PayU referans numarası (maksimum 9 karakter).
REFNOEXT
LiveUpdate aracılığıyla sipariş için verilen satıcı referans numarası (maksimum 10 karakter).
ORDERSTATUS
Geçerli sipariş durumu. Olası değerler:





NOT_FOUND – mevcut olmayan/tamamlanmamış sipariş
WAITING_PAYMENT – sipariş verildi ve ödemesi bekleniyor
CARD_NOTAUTHORIZED – ödeme için kullanılan karta provizyon verilmedi
IN_PROGRESS – ödemeye provizyon verildi, sipariş onay sürecinde
PAYMENT_AUTHORIZED – ödemeye provizyon verildi, sipariş onaylandı







COMPLETE – tamamlanan sipariş (ücretlendirildi/teslim edildi)
FRAUD – dolandırıcılık şüphesi bulunan sipariş
INVALID – müşteri tarafından geçersiz bilgi girildi
TEST – test siparişi
CASH – teslimatta nakit ödemeli sipariş
REVERSED – sipariş iptali, müşteri hesabında paranın kilidi açıldı
REFUND – sipariş geri ödemesi, tutar müşteri hesabına havale edildi
PAYMETHOD
Kullanılan ödeme yöntemi (maksimum 40 karakter)
HASH
Talep imzası (yukarıda belirtilen tüm alanlarda HMAC MD5)
1
2
3
4
5
6
7
8
<!--?xml version="1.0" ?-->
<order>
<order_date>2006-10-26 10:15:00</order_date>
<refno>1074992</refno>
<refnoext>EPAY10425</refnoext>
<order_status>PAYMENT_AUTHORIZED</order_status>
<paymethod> Kredi kartı/banka kartı (Visa/MasterCard)</paymethod>
</order>
Satıcının aynı harici referansla birden fazla sipariş göndermesi halinde, sorgulama ilgili referans için veritabanında en son
tarihli işleme ilişkin bilgileri verir.

Benzer belgeler

Adobe LiveCycle Policy Server

Adobe LiveCycle Policy Server ƒ LiveCycle Policy Server ile iki tür kontrol politikası tanımlanabilir: ƒ Çevrimiçi (online) belge kontrolü

Detaylı