Şimdi Ara

Yeni Garanti Sanal Pos Uygulaması Yapılmış Hali

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
15
Cevap
0
Favori
6.429
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhabalar;

    Garanti bankasının yeni çıkarmış olduğu sanal pos sistemini paylaşıyorum. Herşeyi hazır sadece kendinize entegre etmeniz gerekiyor. 3d destekli değildir, bilginize. Onuda ilerleyen zamanlarda yazar paylaşırım.

    Link:http://www.serezoglu.com/siteresimleri/kampanya/GarantiSanalPos.rar

    1.Yukarıdaki linkten .dll indirerek projenize referans ediniz.
    2.TerminalID lütfen 8 haneli giriniz.
    3.Sitenizdeki sipariş ıd asagıdakı degıskene atın. Her bırı farklı olmalı. Benzerı olmamalı. Bunu mutlaka gondermenız lazım, banka kesın ıstıyor.
    4.Eger pesın kart gecmek ıstıyorsanız taksit alanını "" olarak bos strıng gonderınız.
    5.cevap[0], Message(onaylandı veya onaylanmadı yanı banka sonucunu döndürür.)
    6.cevap[1], ErrorMsg
    7.cevap[2], RetrefNum
    8.cevap[3], Authcode
    9.cevap[4], BatchNum
    10.cevap[5], HashData
    11.cevap[6], SysErrMsg
    12.cevap[7] size dönen string dizisinin sonuncusudur ve GarantiSanalPos.dll olusan hatayı döndürür.




    //Kredi karti islemleri
    GarantiSanalPos garanti = new GarantiSanalPos();
    string[] cevap = garanti.SatisIslemiVeSonucu("terminalID", "KullanıcıSifresi", "PROVAUT", "uyeisyerinumarası", siparisID, txtTKartNo.Text, txtTCv2.Text, drpTAy.SelectedItem.Text + drpTYil.SelectedItem.Text, cekılecek tutar,kac taksıt, musterıIP, musterıEposta);


    //Kredi karti islem sonucunu
    if (cevap[0] == "Approved")
    {
    Banka onay verdı.
    Eğer isterseniz bankadan dönen değerleri yukarıda vermiş olduğum cevap dizisindeki satırlardan alıp veri tabanınıza kayıt edebilirsiniz.
    }
    else if (cevap[0] == "Declined")
    {
    Banka onay vermedi
    }
    else
    {

    GarantiSanalPos.dll sorun olustu.

    }


    Yazılım paylaştıkca güzeldir.



    < Bu mesaj bu kişi tarafından değiştirildi tolgasonmez87 -- 19 Eylül 2012; 1:49:08 >







  • paylasım ıcın sagol dostum

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • rica ederim



    < Bu mesaj bu kişi tarafından değiştirildi tolgasonmez87 -- 19 Eylül 2012; 1:33:47 >
  • hepsını gectım banka o kadar kod paylasacagına su dll yaptırıp paylasmaması ayrı bı sacmalık
  • dışarıdan dll alıp odeme metodlarını kullanmak bence çok ciddi güvenlik açığı. mesela senin yaptogon ddl i indirip reflector ile açıp bakmadım. ama misal sen , bu dll i yaratırken müşterinin kredikartı bilgilerini bir webservice aracılığıyla bir yere post ediyor olabilirsin. boylece benım sitemden alşışveriş yapan kullanıcılan kart bilgilerini çalmış olabilirsin. bu da benım firmamı ve itibarımı zedeleyebilir. o yuzden ben kendim oturup yazma sonra da fortyfive gibi programalrla güvenlik açıklarını analiz etme taraftarıyım. ödeme kanalları için hazır dlller belki kişisel denemeleriniz için iyi olabilir ama projelerde kullanılmamalı
  • public class GarantiSanalPos
    {

    protected string GetSHA1(string Data)
    {

    SHA1 sha = new SHA1CryptoServiceProvider();
    byte[] hashbytes = Encoding.GetEncoding("ISO-8859-9").GetBytes(Data);
    byte[] inputbytes = sha.ComputeHash(hashbytes);
    return GetHexaDecimal(inputbytes);

    }
    protected string GetHexaDecimal(byte[] bytes)
    {

    StringBuilder s = new StringBuilder();
    int length = bytes.Length;
    for (int n = 0; n <= length - 1; n++)
    { s.Append(String.Format("{0,2:x}", bytes[n]).Replace(" ", "0")); }
    return s.ToString();

    }


    public string[] SatisIslemiVeSonucu(string TerminalID, string KullaniciAdiSifresi, string KullaniciAdi, string UyeIsYeriNo, string SiparisNo, string KartNo, string CVV2, string KullanmaTarihi, string IslemTutarı, string Taksit, string MusteriIP, string MusteriMail)
    {

    string strMode = "PROD"; //"PROD" Gerçek işlem, "TEST" Test İşlemidir.
    string strVersion = "v0.01";
    string strTerminalID_ = "0" + TerminalID; //Başına 0 eklenerek 9 digite tamamlanmalıdır.
    string strProvUserID = "PROVAUT";
    string strUserID = KullaniciAdi;
    string strMerchantID = UyeIsYeriNo;
    string strIPAddress = MusteriIP;
    string strEmailAddress = MusteriMail;
    string strOrderID = SiparisNo;
    string strNumber = KartNo;
    string strExpireDate = KullanmaTarihi;
    string strCVV2 = CVV2;
    string strAmount = IslemTutarı.Replace(",","");
    string strTaksit = Taksit;
    string strCurrencyCode = "949";
    string strCardholderPresentCode = "0";
    string strMotoInd = "H";
    string strHostAddress = "https://sanalposprov.garanti.com.tr/VPServlet";

    string SecurityData = GetSHA1(KullaniciAdiSifresi + strTerminalID_).ToUpper();
    string HashData = GetSHA1(SiparisNo + TerminalID + KartNo + strAmount + SecurityData).ToUpper();


    XmlDocument doc = new XmlDocument();
    XmlDeclaration dec = null;
    dec = doc.CreateXmlDeclaration("1.0", "ISO-8859-1", "yes");
    doc.AppendChild(dec);

    System.Xml.XmlElement GVPSRequest = null;
    GVPSRequest = doc.CreateElement("GVPSRequest");
    doc.AppendChild(GVPSRequest);

    System.Xml.XmlElement Mode = null;
    Mode = doc.CreateElement("Mode");
    Mode.AppendChild(doc.CreateTextNode(strMode));
    GVPSRequest.AppendChild(Mode);

    System.Xml.XmlElement Version = null;
    Version = doc.CreateElement("Version");
    Version.AppendChild(doc.CreateTextNode(strVersion));
    GVPSRequest.AppendChild(Version);

    System.Xml.XmlElement Terminal = null;
    Terminal = doc.CreateElement("Terminal");
    GVPSRequest.AppendChild(Terminal);

    System.Xml.XmlElement ProvUserID = null;
    ProvUserID = doc.CreateElement("ProvUserID");
    ProvUserID.AppendChild(doc.CreateTextNode(strProvUserID));
    Terminal.AppendChild(ProvUserID);

    System.Xml.XmlElement HashData_ = null;
    HashData_ = doc.CreateElement("HashData");
    HashData_.AppendChild(doc.CreateTextNode(HashData));
    Terminal.AppendChild(HashData_);

    System.Xml.XmlElement UserID = null;
    UserID = doc.CreateElement("UserID");
    UserID.AppendChild(doc.CreateTextNode(strUserID));
    Terminal.AppendChild(UserID);

    System.Xml.XmlElement ID = null;
    ID = doc.CreateElement("ID");
    ID.AppendChild(doc.CreateTextNode(TerminalID));
    Terminal.AppendChild(ID);

    System.Xml.XmlElement MerchantID = null;
    MerchantID = doc.CreateElement("MerchantID");
    MerchantID.AppendChild(doc.CreateTextNode(strMerchantID));
    Terminal.AppendChild(MerchantID);

    System.Xml.XmlElement Customer = null;
    Customer = doc.CreateElement("Customer");
    GVPSRequest.AppendChild(Customer);

    System.Xml.XmlElement IPAddress = null;
    IPAddress = doc.CreateElement("IPAddress");
    IPAddress.AppendChild(doc.CreateTextNode(strIPAddress));
    Customer.AppendChild(IPAddress);

    System.Xml.XmlElement EmailAddress = null;
    EmailAddress = doc.CreateElement("EmailAddress");
    EmailAddress.AppendChild(doc.CreateTextNode(strEmailAddress));
    Customer.AppendChild(EmailAddress);

    System.Xml.XmlElement Card = null;
    Card = doc.CreateElement("Card");
    GVPSRequest.AppendChild(Card);

    System.Xml.XmlElement Number = null;
    Number = doc.CreateElement("Number");
    Number.AppendChild(doc.CreateTextNode(strNumber));
    Card.AppendChild(Number);

    System.Xml.XmlElement ExpireDate = null;
    ExpireDate = doc.CreateElement("ExpireDate");
    ExpireDate.AppendChild(doc.CreateTextNode(strExpireDate));
    Card.AppendChild(ExpireDate);

    System.Xml.XmlElement XCVV2 = null;
    XCVV2 = doc.CreateElement("CVV2");
    XCVV2.AppendChild(doc.CreateTextNode(strCVV2));
    Card.AppendChild(XCVV2);

    System.Xml.XmlElement Order = null;
    Order = doc.CreateElement("Order");
    GVPSRequest.AppendChild(Order);

    System.Xml.XmlElement OrderID = null;
    OrderID = doc.CreateElement("OrderID");
    OrderID.AppendChild(doc.CreateTextNode(strOrderID));
    Order.AppendChild(OrderID);

    System.Xml.XmlElement GroupID = null;
    GroupID = doc.CreateElement("GroupID");
    GroupID.AppendChild(doc.CreateTextNode(""));
    Order.AppendChild(GroupID);

    System.Xml.XmlElement Transaction = null;
    Transaction = doc.CreateElement("Transaction");
    GVPSRequest.AppendChild(Transaction);

    System.Xml.XmlElement Type = null;
    Type = doc.CreateElement("Type");
    Type.AppendChild(doc.CreateTextNode("sales"));
    Transaction.AppendChild(Type);

    System.Xml.XmlElement InstallmentCnt = null;
    InstallmentCnt = doc.CreateElement("InstallmentCnt");
    InstallmentCnt.AppendChild(doc.CreateTextNode(strTaksit));
    Transaction.AppendChild(InstallmentCnt);

    System.Xml.XmlElement Amount = null;
    Amount = doc.CreateElement("Amount");
    Amount.AppendChild(doc.CreateTextNode(strAmount));
    Transaction.AppendChild(Amount);

    System.Xml.XmlElement CurrencyCode = null;
    CurrencyCode = doc.CreateElement("CurrencyCode");
    CurrencyCode.AppendChild(doc.CreateTextNode(strCurrencyCode));
    Transaction.AppendChild(CurrencyCode);

    System.Xml.XmlElement CardholderPresentCode = null;
    CardholderPresentCode = doc.CreateElement("CardholderPresentCode");
    CardholderPresentCode.AppendChild(doc.CreateTextNode(strCardholderPresentCode));
    Transaction.AppendChild(CardholderPresentCode);

    System.Xml.XmlElement MotoInd = null;
    MotoInd = doc.CreateElement("MotoInd");
    MotoInd.AppendChild(doc.CreateTextNode(strMotoInd));
    Transaction.AppendChild(MotoInd);

    string[] sonuc = new string[8];
    try
    {
    string data = "data=" + doc.OuterXml;
    WebRequest _WebRequest = WebRequest.Create(strHostAddress);
    _WebRequest.Method = "POST";
    byte[] byteArray = Encoding.UTF8.GetBytes(data);
    _WebRequest.ContentType = "application/x-www-form-urlencoded";
    _WebRequest.ContentLength = byteArray.Length;
    Stream dataStream = _WebRequest.GetRequestStream();
    dataStream.Write(byteArray, 0, byteArray.Length);
    dataStream.Close();
    WebResponse _WebResponse = _WebRequest.GetResponse();
    Console.WriteLine(((HttpWebResponse)_WebResponse).StatusDescription);
    dataStream = _WebResponse.GetResponseStream();
    StreamReader reader = new StreamReader(dataStream);
    string responseFromServer = reader.ReadToEnd();
    Console.WriteLine(responseFromServer);

    string bankasonuc = responseFromServer;
    XmlDocument xDoc = new XmlDocument();
    xDoc.LoadXml(bankasonuc);


    XmlElement xElement1 = xDoc.SelectSingleNode("//GVPSResponse/Transaction/Response/Message") as XmlElement;
    sonuc[0] = (xElement1 != null) ? xElement1.InnerText : "Boş";

    XmlElement xElement2 = xDoc.SelectSingleNode("//GVPSResponse/Transaction/Response/ErrorMsg") as XmlElement;
    sonuc[1] = (xElement2 != null) ? xElement2.InnerText : "Boş";

    XmlElement xElement3 = xDoc.SelectSingleNode("//GVPSResponse/Transaction/RetrefNum") as XmlElement;
    sonuc[2] = (xElement3 != null) ? xElement3.InnerText : "Boş";

    XmlElement xElement4 = xDoc.SelectSingleNode("//GVPSResponse/Transaction/Authcode") as XmlElement;
    sonuc[3] = (xElement4 != null) ? xElement4.InnerText : "Boş";

    XmlElement xElement5 = xDoc.SelectSingleNode("//GVPSResponse/Transaction/BatchNum") as XmlElement;
    sonuc[4] = (xElement5 != null) ? xElement5.InnerText : "Boş";

    XmlElement xElement6 = xDoc.SelectSingleNode("//GVPSResponse/Transaction/HashData") as XmlElement;
    sonuc[5] = (xElement6 != null) ? xElement6.InnerText : "Boş";

    XmlElement xElement7 = xDoc.SelectSingleNode("//GVPSResponse/Transaction/Response/SysErrMsg") as XmlElement;
    sonuc[6] += (xElement7 != null) ? xElement7.InnerText : "Boş";

    xDoc.RemoveAll();

    }
    catch (Exception ex) { sonuc[7] = ex.Message.ToString(); }

    return sonuc;


    }


    }




  • ne tür bir kafa anlamadım :) garantı bankasına maıl attıgınızda sıze bırcok dılde yazılmış pdf döküman gönderıyor ama kendıne koduna uygulayana kadar ugrastırıyor bıraz ben hazırladım kı kımse ugrasmasın dıye :)
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • evet son 2-3 aydır yazılım geliştirme bölümünde kâle değer, adam akıllı ,arşiv niteliğinde, herkese yararlı olabilecek tek gönderi tolganın gönderisi diyebilirim . (genel itibari ile £XE vs gibi arkadaşların yardım etme uğraşları dışında)
  • tsk ederım ıltıfat ıcın. yazılımda paylasmadıkca kendını gelıstıremezsın.
  • gvp rarlı dosyaları var ıstedın mı gonderıyorlar eskı sıstemlerınde lınkı vardı ama yenısınde yardım menusunde var
  • quote:

    Orijinalden alıntı: tolgasonmez87

    gvp rarlı dosyaları var ıstedın mı gonderıyorlar eskı sıstemlerınde lınkı vardı ama yenısınde yardım menusunde var

    Tolga merhaba. Bu class ile local de gayet güzel ve sorunsuz banka ile iletişime geçebiliyorum fakat hosta atınca hiç bi şekilde işlem yapmıyor en son else olayına düşüyor. Garanti sanal pos dll hata oluştu basıyor. Neden olabilir acaba?
  • ip lerinin tanımlanması gerekiyor. başvur. salı geceleri bu işlerle ilgileniyorlar. host ettiğin sunucunun iplerini ilet
  • Hocam selamlar.
    Localhost'ta sorunsuz çalışıyor proje. Sunucuda çalışmayınca bende ip olayından olabilir diye düşündüm ve sanalpos destek hattını aradım. Volkan Bey diye gayet ilgili bi arkadaş var ve sorunun ip ile alakası olmayacağını taraflarından otomatik olarak ip kontrolü sağlanmadığını söyledi.
  • Paylaşım için teşekkürler.

  • arkadaşlar sorularınız ıcınhttps://www.facebook.com/tolgasonmez87 adresınden bana ulasabılırsınız. Yukarıdakı kodlar garantı sanal pos sıtesınden ındırılmıstır. Sızde ındırıp ugrasıp benım yazdıgım sevıyeye getırebılırsınız. Localde calısıp sunucuda calısmamasının sebebı ıse ssl ve ozel ıp tanımlaması yapılmamasından kaynaklanıyor.



    < Bu mesaj bu kişi tarafından değiştirildi tolgasonmez87 -- 6 Ocak 2014; 23:07:57 >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.