28 Eylül 2014 Pazar

Payu Entegrasyon, Payu Kodlari, Payu Nasil

1. Giriş

Kısaca ALU olarak adlandırdığımız PayU apisi Automatic Live Update isimli apinin kısaltmasıdır. ALU, firmaların online ödeme ile tahsilat yapmasına yani özetle müşterilerine kendi web sitelerinden kart kullanarak alışveriş yapma imkanı sunan apidir.
ALU, işyerlerine online tahsilatta esneklik ve tam bir kontrol sağlar. ALU'nun özellikleri şu şekilde özetlenebilir:
  • Kolay Entegrasyon
  • Ödeme Sayfasını Kendi İsteklerinize Göre Tasarlayabilme
  • Güvenli Altyapı

2. Nasıl Çalışır?

ALU, işyerlerine online tahsilatta esneklik ve tam bir kontrol sağlar.

PayU ALU apisi ile online tahsilat yapabilmek için HTTPs protokolü ile şu adrese bir ödeme isteği göndermek gerekir:https://secure.payu.com.tr/order/alu/v2.
Adım 1
Kart sahibi yani alışverişi yapan kişi kendi web sitenizin ödeme sayfasındaki "Satın Al" butonunu tıkladığında tarayıcı program (Firefox, Chrome, Internet Explorer, Safari) bu bilgileri sizin web site sunucunuza yollar.
Adım 2
Sisteminiz yani işyeri web sunucusu bu bilgileri HTTPS ile PAyU sistemine gönderir. PayU sistemi girilen kart bilgisini ürün ve adres bilgileri ile birlikte alır ve tahsilat işlemini başlatır. Bu işlem saniyeler içerisinde olur. ALU request detaylarına burdan ulaşabilirsiniz.
Adım 3
PayU sistemi tahsilat için bankadan onay ister. Aldığı sonucu kendine ait sonuç haline getirir ve sizin web sunucunuza döner. PayU dönüş bilgisi XML formatındadır. Dönüş bilgisinin detaylarına burdanulaşabilirsiniz.
Adım 4
Web sitenizdeki sistem PayU dönüş bilgisini alır, işler ve sitenizden alışveriş yapmakta olan kişiye sitenize özgü formatta o kişinin tarayıcı programında gösterir.

B. 3D Secure Sistemine Kaydolmuş Kartlar İçin Akış


Adım 1
Kart sahibi yani alışverişi yapan kişi kendi web sitenizin ödeme sayfasındaki "Satın Al" butonunu tıkladığında tarayıcı program (Firefox, Chrome, Internet Explorer, Safari) bu bilgileri sisin web site sunucunuza yollar.
Step 2
Sisteminiz yani işyeri web sunucusu bu bilgileri HTTPS ile PAyU sistemine gönderir. PayU sistemi girilen kart bilgisini ürün ve adres bilgileri ile birlikte alır ve tahsilat işlemini başlatır. Bu işlem saniyeler içerisinde olur. ALU request detaylarına burdan ulaşabilirsiniz.
Step 3
PayU sistemi tahsilat isteğinde gönderilen kart bilgilerini bankaya gönderir ve kartın 3D secur esistemine kayıtlı olup olmadığını kontrol eder. Sonrasında ALU cevabını (response) XML formatında döner. 3D secure sistemine kayıtlı olan kart için Örnek bir responsea burdan ulaşabilirsiniz.
Adım 4
İşyeri web sitesindeki sistem kart sahibinin tarayıcısında 3D secure doğrulama işlemini yaptıracak formu gösterir.
Adım 5 ve 6
Kart sahibi yani online alışverişi yapan kişi PayU sunucusu üzerinden banka 3D secure formuna yönlendirilir.
Adım 7 ve 8
Banka sistemi kart sahibinin tarayıcısında 3D secure formu gösterir, kart sahibi cep telefonuna gelen SMS şifreyi bu forma girer.
Adım 9
Eğer kart sahibi doğru 3d şifreyi girerse banka tahsilatı onaylar. Banka tahsilatı onaylarsa PayU da onaylar.
Adım 10
PayU işyeri sunucusunda konfigüre edilmiş BACK_REF_URL'deki adrese kendi cevabını döner. Bu cevap HTTP POST yöntemi ile gönderillir ve şu bilgileri içerir; REFNO, ALIAS, STATUS, RETURN_CODE, RETURN_MESSAGE ve DATE. Cevapla ilgili detaylara burdan ulaşabilirsiniz.
Adım 11
Web sitenizdeki sistem PayU dönüş bilgisini alır, işler ve sitenizden alışveriş yapmakta olan kişiye sitenize özgü formatta o kişinin tarayıcı programında gösterir.

3. Tahsilat isteği (Request) nasıl oluşturulur?

ALU protokolünü kullanarak bir tahsilat isteği göndermek için işyeri sunucusundan bir HTTP post PayU'nun https://secure.payu.com.tr/order/alu/v2adresindeki sunucusuna gönderilmelidir.
Bu HTTP post aşağıdaki mecburi alanları mutlaka içermelidir.
ALU protokolü sayesinde işyeri kendi web sitesindeki ödeme sayfasında tam bir kontrole sahiptir ve bu ödeme sayfasını dilediği tasarımda sunabilir.

A. Mecburi Parametreler

Sipariş Detayları
ParametreTanım
MERCHANTİşyeri ismi. Bu parametreye size ait PayU kontrol panelinden ulaşabilirsiniz. ( Hesap Yönetimi->Hesap Ayarları)
ORDER_REFHarici referans numarası
ORDER_DATESiparişin gerçekleştiği tarih. Formatı;in YYYY-MM-DD HH:MM:SS Örnek: 2012-05-01 21:15:45
ÖNEMLİ: Tarih UTC formatında olmalıdır. (Vikipedi'de UTC)
PAY_METHODÖdeme methodu. Possible values: Default olarak CCVISAMC değerindedir. Kart ile tahsilatlar için Bu değer gönderimelidir.
ORDER_HASHHMAC_MD5 imzası.
Tahsilat isteğinde gönderilen her parametrenin uzunluğu ve her parametrenin kendisi string birleştirme yapılarak birleştirilir. Sonrasında bunlar tek bir stringde birleştirilip hash string oluşturulur. ORDER_HASH, oluşturulan bu hash string ve her işyerine özel secret key kullanılarak hesaplanan hash değeridir. Hash hesaplama ile ilgili detaylara burdanulaşabilirsiniz.
BACK_REFTahsilat tamamlandıktan sonra dönülen url adresi.
Ürün Detayları
ParametreTanım
ORDER_PNAME[]Ürün isimlerinden oluşan dizi. Her bir ürün için en az 2, en fazla 155 karakter olabilir)
ORDER_PCODE[]Ürün kodlarından (SKU ya da benzer kod) olışan dizi. Herbir ürün için en fazla 50 karakterdir. Array filled with the product codes Eğer bir ürün aynı ürün kodu ile tekrar yollanırsa PayU sistemi bu ürüne ait bilgiyi günceller.
ORDER_PRICE[]Ürün fiyatlarından oluşan dizi. Fiyatların gönderildiği default para birimi PRICES_CURRENCY parametresi ile set edilir.
ORDER_QTY[]Ürün miktarlarından oluşan dizi.
PRICES_CURRENCYÜrün fiyatlarının gönderileceği para birimi. ÖrnekTRY
Eğer bu parametre yollanmazsa default para birimi işyerine sipariş alma yetkisi verilen para birimi ne ise o değeri alır.
Fatura Bilgileri
ParametreTanım
BILL_LNAMEAlışverişi yapan kart sahibinin soyadı
BILL_FNAMEAlışverişi yapan kart sahibinin adı
BILL_EMAILAlışverişi yapan kart sahibinin eposta adresi
BILL_PHONEAlışverişi yapan kart sahibinin soyadı telefon numarası
BILL_COUNTRYCODEAlışverişi yapan kart sahibinin bulunduğu ülkenin 2 haneli kodu. Örnek:TR
Kart Bilgileri
ParametreTanım
CC_NUMBERKart numarası
EXP_MONTHKartın son kullanma tarihinin ayı Örnek:06
EXP_YEARKartın son kullanma tarihinin yılı Örnek:2025
CC_CVVKartın arka yüzündeki 3 haneli sayı. Birçok kart tipinde arka yüzdeki 6 haneli sayının ilk 3 hanesidir
CC_OWNERKart sahibinin adı soyadı

B. Diğer Parametreler

Sipariş Detayları
ParametreTanım
ORDER_PINFO[]Ürün bilgilerinden oluşan dizi
ORDER_VER[]Ürün versiyonlarından oluşan dizi
SELECTED_INSTALLMENTS_NUMBERTaksit sayısı. 2 ila 9 taksit yapılabilir, 2 ve 9 dahildir
CARD_PROGRAM_NAMETaksite imkan veren taksit programı ismi. Axess,Bonus, Maximum, CardFinans, World, AsyaCard, Advantage, Paraf değerlerinden sadece biri olabilir
ORDER_TIMEOUTOrder expire olma süresi. Saniye cinsinden
USE_LOYALTY_POINTSAlabileceği değer: YES. Sipariş puan ile yapılacaksa bu değer gönderilir. Sadece peşin yani taksitsiz ödemeler için geçerlidir.
Fatura Bilgileri
ParametreTanım
BILL_FAXFax numarası
BILL_ADDRESSAdres
BILL_ADDRESS2Adres (devamı)
BILL_ZIPCODEPosta kodu
BILL_CITYŞehir
BILL_STATEBölge
Kargo Bilgileri
ParametreTanım
DELIVERY_LNAMEKargonun gönderileceği kişinin soyadı
DELIVERY_FNAMEKargonun gönderileceği kişinin adı
DELIVERY_EMAILKargonun gönderileceği kişinin eposta adresi
DELIVERY_PHONEKargonun gönderileceği kişinin telefon numarası
DELIVERY_COMPANYKargonun gönderileceği şirketin ismi
DELIVERY_ADDRESSKargonun gönderileceği adres
DELIVERY_ADDRESS2Kargonun gönderileceği adres (devam)
DELIVERY_ZIPCODEKargonun gönderileceği yerin posta kodu
DELIVERY_CITYKargonun gönderileceği şehir
DELIVERY_STATEKargonun gönderileceği bölge
DELIVERY_COUNTRYCODEKargonun gönderileceği ülkenin iki haneli kodu. Örnek: TR
Diğer Bilgiler
ParametreTanım
CLIENT_IPAlışverişi yapan kişinin bilgisayarnın IP adresi
CLIENT_TIMEAlışverişi yapan kişinin kullandığı web tarayıcısından alınan tarih. Format: YYYY-MM-DD hh:mm;ss

B. ORDER_HASH Hesaplanması

Tahsilat güvenliğini sağlamak amacı ile her tahsilat isteği benzersiz bir hash değeri içermelidir. Hash değeri tahsilat isteğinde gönderilen parametreler ve işyerine özel secret key kullanılarak HMAC MD5 metodu ile hesaplanır. Hash değerinin hesaplanmasında kullanılan algoritma RFC 2104 dokümanında anlatılmaktadır.
Örnek olarak bir tahsilat örneğini inceleyelim. OPU_TEST işyeri ismi ve bu işyerine ait SECRET_KEY değerli secret key ile tahsilat isteği gönderen bir işyeri tahsilat isteğinde aşağıdaki değerleri gönderiyor olsun: 
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
"MERCHANT" => "OPU_TEST"
"ORDER_REF" => "7305"
"ORDER_DATE" => "2013-03-11+13:00:04"
"ORDER_PNAME[0]" => "Ticket1"
"ORDER_PCODE[0]" => "TCK1"
"ORDER_PINFO[0]" => "Barcelona flight"
"ORDER_PRICE[0]" => "100"
"ORDER_QTY[0]" => "1"
"ORDER_PNAME[1]" => "Ticket2"
"ORDER_PCODE[1]" => "TCK2"
"ORDER_PINFO[1]" => "London flight"
"ORDER_PRICE[1]" => "200"
"ORDER_QTY[1]" => "1"
"PRICES_CURRENCY" => "TRY"
"PAY_METHOD" => "CCVISAMC"
"SELECTED_INSTALLMENTS_NUMBER" => "3"
"CC_NUMBER" => "4355084355084358"
"EXP_MONTH" => "01"
"EXP_YEAR" => "2016"
"CC_CVV" => "123"
"CC_OWNER" => "FirstName LastName"
"CLIENT_IP" => "127.0.0.1"
"BILL_LNAME" => "John"
"BILL_FNAME" => "Doe"
"BILL_EMAIL" => "shopper@payu.ro"
"BILL_PHONE" => "1234567890"
"BILL_COUNTRYCODE" => "TR"
"DELIVERY_FNAME" => "John"
"DELIVERY_LNAME" => "Smith"
"DELIVERY_PHONE" => "0729581297"
"DELIVERY_ADDRESS" => "3256 Epiphenomenal Avenue"
"DELIVERY_ZIPCODE" => "55416"
"DELIVERY_CITY" => "Minneapolis"
"DELIVERY_STATE" => "Minnesota"
"DELIVERY_COUNTRYCODE" => "MN"
NOT ORDER_PNAME, ORDER_PCODE, ORDER_PINFO, ORDER_PRICE and ORDER_QTY parametreleri HTTP isteğinde köşeli parantezler yani [] işaretleriarasında gönderilmelidir.

Adım 1: Tahsilat isteğinde gönderilen tüm parametreleri alfabetik olarak sıralayalım

NOT Sıralama parametrelerin değerine göre değil İSİMLERİNE göre yapılmalıdır.
Sıralamadan sonraki durum şu şekilde olur:
1
2
BACK_REF,BILL_COUNTRYCODE, BILL_EMAIL, BILL_FNAME, BILL_LNAME, BILL_PHONE,CC_CVV, CC_NUMBER, CC_OWNER, CLIENT_IP, DELIVERY_ADDRESS, DELIVERY_CITY, DELIVERY_COUNTRYCODE, DELIVERY_FNAME, DELIVERY_LNAME, DELIVERY_PHONE, DELIVERY_STATE, DELIVERY_ZIPCODE, EXP_MONTH, EXP_YEAR, MERCHANT, ORDER_DATE, ORDER_PCODE[0], ORDER_PCODE[1], ORDER_PINFO[0], ORDER_PINFO[1], ORDER_PNAME[0], ORDER_PNAME[1], ORDER_PRICE[0], ORDER_PRICE[1], ORDER_QTY[0], ORDER_QTY[1], ORDER_REF, PAY_METHOD, PRICES_CURRENCY, SELECTED_INSTALLMENTS_NUMBER
ÖNEMLİ Eğer sipariş birden fazla ürün içeriyorsa, ORDER_PNAME[], ORDER_PCODE[], ORDER_PINFO[], ORDER_PRICE[], ORDER_VER[] and ORDER_QTY[] dizileri hash stringde buna uygun yer almalıdır.

Step 2: Parametre değerlerinden oluşan stringi her parametre değerinin uzunluğunu o parametrenin başına gelecek şekilde oluştur. Oluşan tüm bu stringleri bir stringde birleştir.

Örneğin, merchant ismi OPU_TEST olduğu için MERCHANT parametresine ait string 8OPU_TEST olur. (8 karakterlik OPU_TEST stringi şeklinde).
NOT Eğer tahsilat parametrelerinden herhangi bir gönderilmezse bu hash stringe 0 olarak eklenmelidir. Örneğin SELECTED_INSTALLMENTS_NUMBER gönderilmezse hash stringin sonunda bunun için bir adet 0 olmalıdır. Sonunda olmasının nedeni SELECTED_INSTALLMENTS_NUMBER parametresinin bu örnekte en sonda gelmesidir.
Bu iki adımın sonunda elde ettiğimiz hash string şu şekilde olur:
1
2
42https://www.example.com/alu/3ds_return.php2TR15shopper@payu.ro3Doe4John101234567890312316435508435508435818FirstName LastName9127.0.0.1253256 Epiphenomenal Avenue11Minneapolis2MN4John5Smith1007295812979Minnesota555416201420168OPU_TEST192013-03-11+13:00:044TCK14TCK216Barcelona flight13London flight7Ticket17Ticket2310032001111473058CCVISAMC3TRY13

Adım 3: Şimdi bu adımda HMAC MD5 şifreleme algoritması ile hash değerini hesaplayalım. Hash değeri hesaplanırken hash string algoritmaya kaynak string olarak, merchant secret key ise algoritmaya key olarak katılır.

Hesaplama sonucunda hash değeri şu şekilde olur:
1
2
14de52ecc7ca8202bbef94f2471e5768

Step 4: Şimdi bu hash değerini tahsilat isteğini göndereceğimiz HTTP posta ekleyelim

1
2
ORDER_HASH: "14de52ecc7ca8202bbef94f2471e5768"
PayU sistemi HTTP post ile gönderilen bu hash değerini alıp kendi hesapladığı ile karşılaştıracaktır. Eğer iki hash değeri eşit ise PayU sistemi işleme devam eder, eğer eşit değilse "Hash Mismatch" hatası verir. Hash yönteminin kullanılması ile man in the middle atakları önlenmiş olu.

C. 3D Secure Entegrasyonu

Alışverişi yapan kişinin kartı 3d secure sistemine kayıtlı ise PayU sistemi response XML'de 3DS_ENROLLED şeklinde cevap döner ve URL_3DS parametresi içinde 3d secure doğrulama yapılacak adresi döner. İşyeri bu adrese yönlendirme yapar. Yönlendirilen adreste kart sahibi 3d secure şifresini girip doğrulama yapar. Doğrulama tamamlanındığında PayU sistemi işyeri sistemine bir HTTP post gönderir, bu gönderim BACK_REF urle yapılır. HTTP post içerisinde REFNO, ALIAS; STATUS, RETUTN_CODE, RETURN_MESSAGE, DATE bilgileri bulunur. Bunların detayları burda anlatılmıştır.
 

4. Response Yapısı

PayU sisteminin response yapısının detayları aşağıda anlatılmaktadır. İşyeri sistemi responseu alıp işlemeli ve kendi sistemine uygun hale getirmelidir. 3d secure kartlarla yapılan siparişler için response BACK_REF urle HTTP post ile dönülür.


ParametreTanım
REFNOPayU sisteminin siparişe verdiği benzersiz numara
ALIASİşleme ait benzersiz string değer. İşyeri bu değeri kendi sisteminde kayıt takibi için kullanabilir
STATUSMuhtemel Değerler:
  • SUCCESS - Eğer sipariş onaylanırsa bu değer döner. REFNO değeri döner (Response örneği)
  • FAILED - Sipariş onaylanmazsa bu değer döner. REFNO değeri döner fakat payment sipariş olarak kaydedilir (Response örneği)
  • INPUT_ERROR - Eğer sipariş isteğinde eksik parametre varsa ya da herhangi bir sebepten dolayı request hatalı/bozuk gelmişse döner (Response örneği)
RETURN_CODEMuhtemel değerler:
  • AUTHORIZED - Eğer sipariş onaylanmışsa (Response örneği)
  • 3DS_ENROLLED - Eğer kart 3d secure sistemine kayıtlı ise döner (Response örneği)
  • ALREADY_AUTHORIZED - Daha önce gerçekleşmiş bir siparişin ref no değeri ile sipariş yapılmaya çalışılırsa döner (Response örneği)
  • AUTHORIZATION_FAILED - Onay alMAmışsa döner (Response örneği)
  • INVALID_CUSTOMER_INFO - Sipariş müşteri bilgisi eksik ya da bozuksa döner(Response örneği)
  • INVALID_PAYMENT_INFO - Kart bilgisi doğru değil ise döner(Response örneği)
  • INVALID_ACCOUNT - Merchant name değeri yanlış ise döner(Response örneği)
  • INVALID_PAYMENT_METHOD_CODE - Payment method değeri yanlış ise döner(Response örneği)
  • INVALID_CURRENCY - Para birimi yanlış ise döner(Response örneği)
  • REQUEST_EXPIRED - Tahsilat isteğinde gönderilen order ile siparişin yapıldığı tarih arasında 10 dakikadan fazla fark varsa döner. (Response örneği)
  • HASH_MISMATCH - Gönderilen hash değeri uyuşmuyorsa döner.(Response örneği)
  • WRONG_VERSION - ALU versiyonu yanlış ise döner(Response örneği).
RETURN_MESSAGEHata detayını içeren mesaj
DATEResponse tarihi. UTC formatındadır
ORDER_REFİşyerinin gönderdiği sipariş numarası
AUTH_CODEBanka otorizasyon kodu
URL_3DSKart 3d secure sistemine kayıtlı ise döner. Alışverişi yapan kişinin 3d doğrulama yapacağı urli içerir. İşyeri bu urle yönlendirme yapmalıdır. (Response örneği).
HASHTahsilat isteğinde gönderilen parametre ve bunların değerlerinden hesaplanan hash değerini içerir
Yanlış gönderilirse hash mismatch hatası dönülür

5. Başarısız Siparişler İçin Dönüş Kod ve Mesajları

Aşağıda başarısız siparişler için dönülen kod ve mesajlara yer verilmiştir(<status>FAILED</status>).
Dönüş KoduTanım
GW_ERROR_GENERICSipariş oluşurken bir hata oluştu. Lütfen daha deneyiniz
GW_ERROR_GENERIC_3D3D doğrulama yapılırken bir hata oluştu
GWERROR_-9Geçersiz son kullanma tarihi
GWERROR_-3Acquirer birimini arayınız
GWERROR_-2Sipariş işleminde hata. Lütfen tekrar deneyiniz
GWERROR_05Sipariş onaylanmadı
GWERROR_08Geçersiz tutar
GWERROR_13Geçersiz tutar
GWERROR_14Kart hatalı
GWERROR_15Kart hatalı
GWERROR_19Siparişi tekrar deneyiniz
GWERROR_34Fazla sayıda deneme
GWERROR_41Kayıp ya da çalıntı kart
GWERROR_43Çalıntı kart
GWERROR_51Yetersiz bakiye
GWERROR_54Vadesi dolmuş kart
GWERROR_57Karta kapalı işlem
GWERROR_58İşyerine kapalı işlem
GWERROR_61Tutar limiti aşıldı
GWERROR_62Kısıtlanmış kart
GWERROR_65Tekrar limiti aşıldı
GWERROR_75PIN tekrar limiti aşıldı
GWERROR_82Kart bankasında time out
GWERROR_84Hatalı CVV
GWERROR_91Kart bankasında teknik problem
GWERROR_96Sistem hatası
GWERROR_2204Kart taksite kapalı
GWERROR_2304Bu sipariş devam eden durumda
GWERROR_5007Banka debit kartlarıyla sadece 3D işlem yapılabilir
ALREADY_AUTHORIZEDTekrar deneyiniz
NEW_ERRORBanka, sistemin tanımadığı yeni bir hata döndü
WRONG_ERRORTekrar deneyin
-9999Banlanmış işlem
1Banka destek birimi ile görüşünüz
 

6. Kaynaklar

cURL ile Tahsilet İsteği

Aşağıdaki örnekde komut satırından cURL kullanarak tahsilat isteği örneklenmektedir.
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
curl -L https://secure.payu.com.tr/order/alu/v2 \
-d BACK_REF=https%3A%2F%2Fwww.example.com%%2Falu%2F3ds_return.php \
-d BILL_COUNTRYCODE=TR \
-d BILL_EMAIL=shopper%40payu.ro \
-d BILL_FNAME=Doe \
-d BILL_LNAME=John \
-d BILL_PHONE=1234567890 \
-d CC_CVV=123 \
-d CC_NUMBER=4355084355084358 \
-d CC_OWNER=FirstName+LastName \
-d CLIENT_IP=127.0.0.1 \
-d EXP_MONTH=01 \
-d EXP_YEAR=2016 \
-d MERCHANT=OPU_TEST \
-d ORDER_DATE=2013-03-11+16%3A34%3A02 \
-d ORDER_PCODE[0]=TCK1 \
-d ORDER_PCODE[1]=TCK2 \
-d ORDER_PINFO[0]=Barcelona+flight \
-d ORDER_PINFO[1]=London+flight \
-d ORDER_PNAME[0]=Ticket1 \
-d ORDER_PNAME[1]=Ticket2 \
-d ORDER_PRICE[0]=100 \
-d ORDER_PRICE[1]=200 \
-d ORDER_QTY[0]=1 \
-d ORDER_QTY[1]=1 \
-d ORDER_REF=7295 \
-d DELIVERY_FNAME=John \
-d DELIVERY_LNAME=Smith \
-d DELIVERY_PHONE=7295 \
-d DELIVERY_ADDRESS=3256+Epiphenomenal+Avenue \
-d DELIVERY_ZIPCODE=55416 \
-d DELIVERY_CITY=Minneapolis \
-d DELIVERY_STATE=Minnesota \
-d DELIVERY_COUNTRYCODE=MN \
-d PAY_METHOD=CCVISAMC \
-d PRICES_CURRENCY=TRY \
-d SELECTED_INSTALLMENTS_NUMBER=3 \
-d ORDER_HASH=14de52ecc7ca8202bbef94f2471e5768

1 yorum:

  1. ortak ödeme sayfasında olduğu gibi form için hidden özelliği ile input ları oluşturoyrum. ayrıcı yukarıda anlattığın şekilde yapıyorum. fakat işlemin sonunda ne hikmetse REQUEST_EXPIRED hatası alıp duruyorum! formu post ettikten sonra gelen ekran bu. bu ekranda DATE kısmında yazan saate göre bir kaç dakika sonraya alıyorum olmuyor, bir kaç dakika geriye alıyorum yine olmuyor. hata nerede bakabilirmisin?

    YanıtlaSil