PayU Card Info Bin Api v1
Durum Senaryomuz : C# ile yazdığımız bir projede, PayU ödeme sistemini kullanıyoruz. İhtiyacımız ise PayU’nun bizlere sağlamış olduğu v1 kredi kartı sorgulama api’sini kullanmak ve kartın sadece ilk 6 hanesi(BIN) ile; kart tipi, hangi bankaya ait olduğu, taksit vb bir çok bilgiyi çekmek.
Card Info — API v1
Card Info — API v1 ile bize dönebilecek olası bilgiler:
- binType: VISA,
- binIssuer: IS BANK,
- cardType: CREDIT,
- country: Turkey,
- program: Maximum,
- installments: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
- paymentMethod: CCVISAMC
binType: VISA, MasterCard vb olarak kartın tipini öğrenebilir, ilgili sayfanızda hazırlayacağınız temsili bir kart ile de logosunu gösterebilirsiniz. Ayrıca kartın ilk 6 hanenin girilmesini beklemeden de kartın ilk iki hanesi ve küçük bir liste ile aynı kontrolü sağlayabilirsiniz.
binIssuer / program / installments Bu alanlar ise çalışmamızda ihtiyacımız olan en önemli alanlar. Bunun en büyük sebebi PayU’nun taksit oranlarınızı içeren bir servis paylaşmıyor oluşu ve aynı tabloyu kendi sisteminizde tekrar hazırmanızı istemesi:
Ayrıca bir yanlış anlaşılmaya izin vermemek için değinmeliyim, eğer v2 kullanırsanız karta ait taksit komisyonlarını çekebiliyorsunuz ancak burada ki asıl sorun, bizden karta ait tüm bilgileri istemesi.
En nihayetinde ilgili ürüne ait sayfada, tüm kartların taksit oranlarını paylaşmak istiyorsak.. Kendi tablomuzu oluşturmak zorundayız.
Neden v2 değil de v1 kullanıyoruz ?
Her ne kadar v2 ile girilen kartın taksit komisyonlarına ulaşabiliyor olsak da bunun için karta ait tüm bilgileri girmemiz istenmekte. Bizim tek amacımız çalışan bir sistem ise tercih edilebilir gözükmekte ancak doğru çalışan bir sistem ise, durup düşünmekte fayda var! Zira yapılan araştırmalarda sepeti terketme oranlarını hiç %60 altında görmedim. Hal böyleyken kullanıcıya tüm kart bilgilerini girdikten sonra taksit bilgilerini sunmak, bir çok sabırsız müşteriyi kaybetmek olacaktır.
Bizlerin amacı ise v1 ile gerekli bilgileri elde etmek, daha sonra bunu kendi taksit tablomuz ile karşılaştırarak ilgili oranları daha ilk altı hanede sunmuş olmak.
Başlayalım!
Elimizde Http ile haberleşeceğimiz bir servis bulunmakta. İstekte bulunacağımız bu yapıyı inceleyelim:
Dökümanlarında yer alan örnek yapı
https://secure.payu.com.tr/api/card-info/v1/ (İstekte bulunacağımız servisimiz.)
- 4444444444 (Kartımızın en az ilk altı hanesi.)
- ?timestamp=1421426073 (Unix zaman damgamız)
- &merchant=MERCHANTCODE (PayU tarafından size özel sağlanan kodunuz.)
- &signature=8ab027fdaf1eee0e1ecf2dd82cabc9a6668420011d05a1de329782b5b2566c57 (Yine PayU tarafından sizlere sağlanan gizli kodunuz ile oluşturabileceğiniz imzanız.)
Adım adım isteğimizi oluşturalım.
- Kartın ilk 6 hanesini yakalayıp controller’a değerimizi gönderiyoruz :
Bu alanda açıklayacak pek bir şey yok diye düşünüyorum… Ajax ile değerimizi gönderiyor, dönen sonucumuzu ise ilgili alanlara basıyoruz.
2. timestamp
Bunun için isteğin gerçekleştiği zamanı gerekli formata çevirmemiz gerekmekte :
3. merchant
PayU tarafından sizlere özel sağlanan kodunuz.
4. signature
Bu alanda istek imzamızı oluşturuyoruz. Belirli verilerimiz ile oluşturduğumuz imzamızı, PayU’nun bize özel verdiği gizli kodu kullanarak SHA256 ile kriptoluyoruz. Gizli kodu merchant ile karıştırmayın.
5. Sonuç (Http Request)