Asp.Net Sanal pos entegrasyonu (Epayment)

Tarih 23 Ocak 2010 Cumartesi, 19:10 | Etiket(ler) Asp.Net, Visual Basic, E-Ticaret

İnternette bu konu ile ilgili birçok kaynak bulusa da Asp.Net ile ilgili çok az kaynağa rastlanıyor. Epayment.dll kullanacağımız bu uygulamada çok fazla teknik konuya girmeden sanal pos'un asp.net üzerinde nasıl uygulandığına değinmeye çalışacağım. Yaptığımız örnek epayment.dll kullandığı için birçok bankayla uyumlu çalışmaktadır. Garanti bankası, Akbank, Citibank, Finansbank, HSBC ve İş Bankası bu sistemi kullandığından hepsinde sorunsuz olarak çalışıyor. Bankanızın dökümanlarında epayment.dll i bulabilir ya da projenin çalışan halini download ederek içindeki dll i kullanabilirsiniz. İlk olarak epayment.dll ilimizi projemize referans olarak ekleyerek işe başlayalım.

Daha sonra gerekli bilgileri alacağımız form tasarımımızı yaparak uygulamamıza giriş yapalım.
    <form id="form1" runat="server">
    <label id="lblSonuc" runat="server"></label>
    <h2>Kredi kartı ödeme bilgileri</h2>
    <p>
        <label>Ödenecek miktar</label>
        <asp:TextBox ID="kkmiktar" MaxLength="4" Columns="5" runat="server"></asp:TextBox>
        <asp:DropDownList ID="kkcekim" runat="server">
            <asp:ListItem Text="Tek çekim" Value="1"></asp:ListItem>
            <asp:ListItem Text="6 taksit" Value="6"></asp:ListItem>
            <asp:ListItem Text="12 taksit" Value="12"></asp:ListItem>
        </asp:DropDownList>
    </p>
    <p>
        <label>Kart sahibi</label>
        <asp:TextBox ID="kksahip" Columns="50" runat="server"></asp:TextBox>
    </p>
    <p>
        <label>Kart no / CVC no</label>
        <asp:TextBox ID="kknum" MaxLength="16" Columns="20" runat="server"></asp:TextBox>
        /
        <asp:TextBox ID="kkcvc" MaxLength="3" Columns="4" runat="server"></asp:TextBox>
    </p>
    <p>
        <label>Son kullanma tarihi>/label>
        <asp:DropDownList ID="kkay" runat="server">
            <asp:ListItem Text="1" Value="1"></asp:ListItem>
            <asp:ListItem Text="2" Value="2"></asp:ListItem>
            <asp:ListItem Text="3" Value="3"></asp:ListItem>
            <asp:ListItem Text="4" Value="4"></asp:ListItem>
            <asp:ListItem Text="5" Value="5"></asp:ListItem>
            <asp:ListItem Text="6" Value="6"></asp:ListItem>
            <asp:ListItem Text="7" Value="7"></asp:ListItem>
            <asp:ListItem Text="8" Value="8"></asp:ListItem>
            <asp:ListItem Text="9" Value="9"></asp:ListItem>
            <asp:ListItem Text="10" Value="10"></asp:ListItem>
            <asp:ListItem Text="11" Value="11"></asp:ListItem>
            <asp:ListItem Text="12" Value="12"></asp:ListItem>
        </asp:DropDownList>
        /
        <asp:DropDownList ID="kkyil" runat="server">
            <asp:ListItem Text="2010" Value="2010"></asp:ListItem>
            <asp:ListItem Text="2011" Value="2011"></asp:ListItem>
            <asp:ListItem Text="2012" Value="2012"></asp:ListItem>
            <asp:ListItem Text="2013" Value="2013"></asp:ListItem>
            <asp:ListItem Text="2014" Value="2014"></asp:ListItem>
            <asp:ListItem Text="2015" Value="2015"></asp:ListItem>
            <asp:ListItem Text="2016" Value="2016"></asp:ListItem>
            <asp:ListItem Text="2017" Value="2017"></asp:ListItem>
        </asp:DropDownList>
    </p>
    <p>
        <label>&nbsp;</label>
        <asp:Button ID="kksubmit" Text="Ödeme yap" runat="server" />
    </p>
    </form>
Formumuzun görünümü şu şekilde oldu :

SanalPos

Bilgileri alacak kodlarımızı yazmaya başlayalım. Bu formdan gelecek bilgileri kontrol ettirmek vs. gibi işlemleri yapmadan basitçe anlatmaya çalışıyorum. Siz gelen bilgileri uygun formatta mutlaka kontrol edin.
    Protected Sub kksubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles kksubmit.Click
        Try
            Dim mycc5pay As New ePayment.cc5payment()
            mycc5pay.host = "ADRES" ' Verileri göndereceğimiz adres
            mycc5pay.name = "KULLANICIADI" ' Bankadan verilen kullanıcı adı
            mycc5pay.password = "PAROLA" ' Bankadan verilen parola
            mycc5pay.clientid = "MAGAZAID" ' Bankadan verilen mağaza id

            mycc5pay.orderresult = "0" ' 0 Gerçek işlem, 1 Test işlemi
            mycc5pay.cardnumber = kknum.Text ' Kredi kartı numarası
            mycc5pay.expmonth = kkay.Text ' Kredi kartı son kullanım ay
            mycc5pay.expyear = kkyil.Text ' Kredi kartı son kullanım yıl
            mycc5pay.cv2 = kkcvc.Text ' Kredi kartı CVC numarası
            mycc5pay.currency = 949 ' TL için 949
            mycc5pay.chargetype = "Auth"
            mycc5pay.ip = Request.ServerVariables("REMOTE_ADDR") ' IP adresi

            mycc5pay.subtotal = kkmiktar.Text ' Çekilecek tutar

            If kkcekim.SelectedItem.Value = 6 Then ' 6 taksit seçilmişse
                mycc5pay.taksit = "6"
            ElseIf kkcekim.SelectedItem.Value = 12 Then ' 12 taksit seçilmişse
                mycc5pay.taksit = "12"
            End If

            Dim bankaSonuc As String = mycc5pay.processorder() ' Fonksiyonumuzu çağırıyoruz
            Dim bankaHata As String = mycc5pay.errmsg ' Geri dönen hata mesajı
            Dim bankaOid As String = mycc5pay.oid ' Geri dönen order id
            Dim bankaAppr As String = mycc5pay.appr ' Geri dönen işlem sonucu
            Dim bankaProv As String = mycc5pay.code ' Geri dönen provizyon numarası

            ' Bankadan gelen sonuçları lblSonuc labelına yazdırıyoruz.
            If bankaSonuc = "1" Then
                If bankaAppr = "Approved" Then ' Ödeme işlemi tamam
                    lblSonuc.Text = "Ödeme işlemi başarıyla gerçekleşti"
                ElseIf bankaAppr = "Declined" Then ' Ödeme işlemi reddedildi
                    lblSonuc.Text = "Ödeme işlemi banka tarafından reddedildi! : " & bankaHata & ""
                Else
                    lblSonuc.Text = "Bir hata oluştu : " & bankaHata & ""
                End If
            Else
                lblSonuc.Text = "Bankayla irtibat kurulamadı!"
            End If
        Catch ex As Exception
            lblSonuc.Text = ex.Message
        End Try
    End Sub
Önemli notlar :
Kullanıcıdan alınan bilgileri mutlaka ama mutlaka kontrol edip gönderin.
Taksit parametresi bankayla anlaşma yaptıysanız çalışır aksi halde hata döndürür.
Test yaparken orderresult parametresini "1" olarak değiştirin.
Satış yapacağınız para birimine uygun kodu currency parametresine eşitleyin.

Form tasarımını basit tuttum ve ne yaptıysam yanlarına açıklamalarını yazdım. Formdaki bilgileri siz ister veritabanınızdan alın ister döngülerle çoğaltın. Başlangıç seviyesinde bilmeniz gereken şeyleri çok kafa karıştırmadan anlatmaya çalıştım. Sonraki yazılarımda gönderilen ekstra parametreleri ve diğer özellikleri anlatmaya çalışacağım.

Projenin çalışan halini buradan indirebilirsiniz



Yorumlar

Tarih 04 Ekim 2011 Salı, 14:41 | Yazan serap

teşekkürler makale için.

Tarih 27 Eylül 2011 Salı, 22:52 | Yazan murat yaman

hocam ellerine sağlık. internette birçok siteye kopyalanmış ama orjinal içeriğin üreticisi belliki sensin. kafana takma. eee taklitler asıllarını yaşatır :)

Tarih 25 Şubat 2011 Cuma, 12:17 | Yazan Cenk SARI

Bu kodlar sadece tahsilat işlemini yapar ve kredi kartından tahsil edilen para hesabınıza aktarılır. Öncelikle bankanız ile görüşüp sanal pos anlaşması yapmanız gerekir.

Tarih 25 Şubat 2011 Cuma, 01:10 | Yazan E4

SLM CENK BEY. BÖLE BİR UYGULAMADA BU KODLAR YETERLİMİ. MESELA BEN BİR ALIŞVERİŞ SİTESİ YAPSAM VE MÜŞTERİ GELİP BİRŞEY SATIN ALSA ONUN YAPTIĞI ÖDEME BENİM BANKA HESABIMA MI GEÇECEK VE NASIL GEÇECEK. BUNUN İÇİN HESABIMIN BAĞLI OLDUGU BANKA İLE Mİ GÖRÜŞECEĞİM..

Tarih 24 Şubat 2011 Perşembe, 15:53 | Yazan Cenk SARI

http://www.codechanger.com adresinden c# a çevirebilirsiniz

Tarih 24 Şubat 2011 Perşembe, 14:51 | Yazan M.tekin

Slm.C# ile yapılmış sanal pos uygulaması elinizde mevcutmu?

Tarih 17 Eylül 2010 Cuma, 18:39 | Yazan Cenk SARI

Bankanın verdiği örnek kodlar arasında 3D anlatılmış fakat bu konuyla ilgili ilerleyen zamanlarda bir makale yazacağım. SSL sertifikası ise bambaşka bir konu. Form alanlarındaki verileri post ederken kullanman gerekiyor. Örneğin kredi kartı bilgileri gibi önemli bilgileri post ederken mutlaka SSL kullanman gerek. SSL satın aldıktan sonra barındırma şirketin bunu senin adına kuruyor ve https:// (http(secure)) ön ekini o sitedeki klasörde kullanabiliyorsun.

Tarih 06 Eylül 2010 Pazartesi, 17:08 | Yazan Species

Merhaba,
Bu SSL ve 3D olayını bu işe nasıl karıştırabiliriz? Birde https şeklinde sayfa açtırma olayı hangi aşamada ve nasıl işe karışıyor?
Yardımcı olursanız sevinirim. Teşekkürler.

Tarih 20 Ağustos 2010 Cuma, 15:39 | Yazan Cenk SARI

Hayır, bu kodlar sadece ePayment sistemini kullanan bankalar için kullanılıyor. Yapı Kredi'nin sistemi daha farklı.

Tarih 20 Ağustos 2010 Cuma, 15:22 | Yazan EmreSULAR

bu kodlar ve dll yapıkredi bankası için kullanılıyormu ?

Tarih 12 Ağustos 2010 Perşembe, 03:05 | Yazan Tugberk Ugurlu

Bu arada c# versiyonu arayanlar http://converter.telerik.com/ converter dan yaralanabilriler manual çeviremiyorlarsa :)

Tarih 12 Ağustos 2010 Perşembe, 03:03 | Yazan Tugberk Ugurlu

Çok harika olmuş. rookie e-commerce developerlar için çok mükemmel bir yazı. thx :)

Tarih 22 Haziran 2010 Salı, 16:58 | Yazan species

teşekkürler. hazır ecommerce sistemine eklemeyi deneyeceğim bakalım nasıl olacak ;)

Tarih 17 Mart 2010 Çarşamba, 14:07 | Yazan koral k

script süper olmuş.
Her yerde aradım bulamadığım şey 3d secure için vb versiyonu , garanti için.
Elinizde var mıdır acaba , upload edebilirseniz yada mail atabilirseniz çok sevinirm , 1 haftadır uğraşıyorum ama C den VB ye çeviremedim 3d secure u, karışık geliyor.
teşekkür.

Tarih 09 Mart 2010 Salı, 12:12 | Yazan Kursad

C# versiyonunu arıyordum ama zaten arada çok fark görünmüyor :) Ekstra parametreler ile ilgili yazınızı merakla bekliyorum...

Tarih 09 Şubat 2010 Salı, 22:35 | Yazan Cenk SARI

Güle güle kullan : )

Tarih 24 Ocak 2010 Pazar, 20:31 | Yazan Alp Oğul

vay! ellerine sağlık gerçekten, vb versiyonu süper olmuş. aramadığım yer kalmadı.
Yorum yazın

Capthca Karakterleri kutuya giriniz
Kodu değiştir...


Geri Dön   |   Ana Sayfaya Dön