public PaymentParameterResult GetPaymentParameters(PaymentRequest request)
        {
            string processType = "Auth";                                 //İşlem tipi
            string mbrId       = "";                                     //Mağaza numarası
            string merchantId  = "";                                     //Mağaza numarası
            string userCode    = "";                                     //
            string userPass    = "";                                     //Mağaza anahtarı
            string storeType   = "3Dpay";                                //SMS onaylı ödeme modeli 3DPay olarak adlandırılıyor.
            string successUrl  = "https://localhost:5001/home/callback"; //Başarılı Url
            string failUrl     = "https://localhost:5001/home/callback"; //Hata Url

            var parameterResult = new PaymentParameterResult();

            try
            {
                var parameters = new Dictionary <string, object>();
                parameters.Add("MbrId", mbrId);
                parameters.Add("MerchantId", merchantId);
                parameters.Add("UserCode", userCode);
                parameters.Add("UserPass", userPass);
                parameters.Add("PurchAmount", request.TotalAmount.ToString(new CultureInfo("en-US"))); //kuruş ayrımı nokta olmalı!!!
                parameters.Add("OrderId", request.OrderNumber);                                        //sipariş numarası

                //işlem başarılı da olsa başarısız da olsa callback sayfasına yönlendirerek kendi tarafımızda işlem sonucunu kontrol ediyoruz
                parameters.Add("OkUrl", successUrl);                     //başarılı dönüş adresi
                parameters.Add("FailUrl", failUrl);                      //hatalı dönüş adresi
                parameters.Add("TxnType", processType);                  //direk satış
                parameters.Add("InstallmentCount", request.Installment); //taksit sayısı | 0, 1 veya boş tek çekim olur
                parameters.Add("Currency", request.CurrencyIsoCode);     //TL:949, USD:840, EUR:978

                //kart numarasından çizgi ve boşlukları kaldırıyoruz
                string cardNumber = request.CardNumber.Replace("-", string.Empty);
                cardNumber = cardNumber.Replace(" ", string.Empty).Trim();
                parameters.Add("Pan", cardNumber);                                  //kart numarası

                parameters.Add("Expiry", request.ExpireMonth + request.ExpireYear); //kart bitiş ay'ı ve yıl'ı
                parameters.Add("Cvv2", request.CvvCode);                            //kart güvenlik kodu
                parameters.Add("SecureType", storeType);                            //NonSecure, 3Dpay, 3DModel, 3DHost
                parameters.Add("Lang", request.LanguageIsoCode.ToUpper());          //iki haneli dil iso kodu

                parameterResult.Parameters = parameters;
                parameterResult.Success    = true;

                //yeni finans bank test ve canlı ortam 3dgate adresi
                parameterResult.PaymentUrl = new Uri("https://finansbank.com");
            }
            catch (Exception ex)
            {
                parameterResult.Success      = false;
                parameterResult.ErrorMessage = ex.ToString();
            }

            return(parameterResult);
        }
        public PaymentParameterResult GetPaymentParameters(PaymentRequest request)
        {
            string processType = "Auth";                                 //İşlem tipi
            string clientId    = "700655000200";                         //Mağaza numarası
            string storeKey    = "TRPS1234";                             //Mağaza anahtarı
            string storeType   = "3D_PAY";                               //SMS onaylı ödeme modeli 3DPay olarak adlandırılıyor.
            string successUrl  = "https://localhost:5001/home/callback"; //Başarılı Url
            string failUrl     = "https://localhost:5001/home/callback"; //Hata Url
            string random      = DateTime.Now.ToString();

            try
            {
                var parameters = new Dictionary <string, object>();
                parameters.Add("clientid", clientId);
                parameters.Add("amount", request.TotalAmount.ToString(new CultureInfo("en-US"))); //kuruş ayrımı nokta olmalı!!!
                parameters.Add("oid", request.OrderNumber);                                       //sipariş numarası

                //işlem başarılı da olsa başarısız da olsa callback sayfasına yönlendirerek kendi tarafımızda işlem sonucunu kontrol ediyoruz
                parameters.Add("okUrl", successUrl);           //başarılı dönüş adresi
                parameters.Add("failUrl", failUrl);            //hatalı dönüş adresi
                parameters.Add("islemtipi", processType);      //direk satış
                parameters.Add("taksit", request.Installment); //taksit sayısı | 1 veya boş tek çekim olur
                parameters.Add("rnd", random);                 //rastgele bir sayı üretilmesi isteniyor

                string hashstr = clientId + request.OrderNumber + request.TotalAmount + successUrl + failUrl + processType + request.Installment + random + storeKey;
                var    cryptoServiceProvider = new SHA1CryptoServiceProvider();
                var    inputbytes            = cryptoServiceProvider.ComputeHash(Encoding.UTF8.GetBytes(hashstr));
                var    hashData = Convert.ToBase64String(inputbytes);

                parameters.Add("hash", hashData);                    //hash data
                parameters.Add("currency", request.CurrencyIsoCode); //TL ISO code | EURO 978 | Dolar 840

                //kart numarasından çizgi ve boşlukları kaldırıyoruz
                string cardNumber = request.CardNumber.Replace("-", string.Empty);
                cardNumber = cardNumber.Replace(" ", string.Empty).Trim();
                parameters.Add("pan", cardNumber);

                parameters.Add("cardHolderName", request.CardHolderName);
                parameters.Add("Ecom_Payment_Card_ExpDate_Month", request.ExpireMonth); //kart bitiş ay'ı
                parameters.Add("Ecom_Payment_Card_ExpDate_Year", request.ExpireYear);   //kart bitiş yıl'ı
                parameters.Add("cv2", request.CvvCode);                                 //kart güvenlik kodu
                parameters.Add("cardType", "1");                                        //kart tipi visa 1 | master 2 | amex 3
                parameters.Add("storetype", storeType);
                parameters.Add("lang", request.LanguageIsoCode);                        //iki haneli dil iso kodu

                //İş Bankası Canlı https://sanalpos.isbank.com.tr/fim/est3Dgate

                return(PaymentParameterResult.Successed(parameters, "https://entegrasyon.asseco-see.com.tr/fim/est3Dgate"));
            }
            catch (Exception ex)
            {
                return(PaymentParameterResult.Failed(ex.ToString()));
            }
        }
        public PaymentParameterResult GetPaymentParameters(PaymentRequest request)
        {
            var parameterResult = new PaymentParameterResult();

            string merchantId       = "000100000013506";
            string merchantPassword = "******";
            string successUrl       = "https://localhost:5001/home/callback"; //Başarılı Url
            string failUrl          = "https://localhost:5001/home/callback"; //Hata Url

            try
            {
                var httpParameters = new Dictionary <string, string>();

                //kart numarasından çizgi ve boşlukları kaldırıyoruz
                string cardNumber = request.CardNumber.Replace("-", string.Empty);
                cardNumber = cardNumber.Replace(" ", string.Empty).Trim();

                httpParameters.Add("Pan", cardNumber);
                httpParameters.Add("ExpiryDate", $"{request.ExpireYear}{request.ExpireMonth}");
                httpParameters.Add("PurchaseAmount", request.TotalAmount.ToString(new CultureInfo("en-US")));
                httpParameters.Add("Currency", request.CurrencyIsoCode);//TL 949 | EURO 978 | Dolar 840

                /*
                 * Visa 100
                 * Master Card 200
                 * American Express 300
                 */
                httpParameters.Add("BrandName", "100");
                httpParameters.Add("VerifyEnrollmentRequestId", request.OrderNumber); //sipariş numarası
                httpParameters.Add("SessionInfo", "1");                               //banka dökümanları sabit bir değer
                httpParameters.Add("MerchantID", merchantId);
                httpParameters.Add("MerchantPassword", merchantPassword);
                httpParameters.Add("SuccessUrl", successUrl);
                httpParameters.Add("FailureUrl", failUrl);
                if (request.Installment > 1)
                {
                    httpParameters.Add("InstallmentCount", request.Installment.ToString());
                }

                //Canlı https://3dsecure.vakifbank.com.tr:4443/MPIAPI/MPI_Enrollment.aspx
                var    enrollmentUrl   = new Uri("https://3dsecuretest.vakifbank.com.tr:4443/MPIAPI/MPI_Enrollment.aspx");
                var    response        = client.PostAsync(enrollmentUrl, new FormUrlEncodedContent(httpParameters)).GetAwaiter().GetResult();
                string responseContent = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();

                var xmlDocument = new XmlDocument();
                xmlDocument.LoadXml(responseContent);
                var statusNode = xmlDocument.SelectSingleNode("IPaySecure/Message/VERes/Status");
                if (statusNode.InnerText != "Y")
                {
                    var messageErrorCodeNode = xmlDocument.SelectSingleNode("IPaySecure/MessageErrorCode");
                    var messageErrorNode     = xmlDocument.SelectSingleNode("IPaySecure/ErrorMessage");
                    parameterResult.ErrorMessage = $"{messageErrorNode.InnerText} - {messageErrorCodeNode?.InnerText}";
                    parameterResult.Success      = false;

                    return(parameterResult);
                }

                var pareqNode   = xmlDocument.SelectSingleNode("IPaySecure/Message/VERes/PaReq");
                var termUrlNode = xmlDocument.SelectSingleNode("IPaySecure/Message/VERes/TermUrl");
                var mdNode      = xmlDocument.SelectSingleNode("IPaySecure/Message/VERes/MD");
                var acsUrlNode  = xmlDocument.SelectSingleNode("IPaySecure/Message/VERes/ACSUrl");

                var parameters = new Dictionary <string, object>();
                parameters.Add("PaReq", pareqNode.InnerText);
                parameters.Add("TermUrl", termUrlNode.InnerText);
                parameters.Add("MD", mdNode.InnerText);

                parameterResult.Parameters = parameters;
                parameterResult.Success    = true;

                //form post edilecek url xml response içerisinde bankadan dönüyor
                parameterResult.PaymentUrl = new Uri(acsUrlNode.InnerText);
            }
            catch (Exception ex)
            {
                parameterResult.Success      = false;
                parameterResult.ErrorMessage = ex.ToString();
            }

            return(parameterResult);
        }
        public PaymentParameterResult GetPaymentParameters(PaymentRequest request)
        {
            string terminaluserid       = "TEST";
            string terminalid           = "30691298";
            string terminalmerchantid   = "7000679";
            string terminalprovuserid   = "PROVAUT";
            string terminalprovpassword = "******";
            string storekey             = "12345678";                   //garanti sanal pos ekranından üreteceğimiz güvenlik anahtarı
            string mode       = "TEST";                                 //PROD | TEST
            string successUrl = "https://localhost:5001/home/callback"; //Başarılı Url
            string errorurl   = "https://localhost:5001/home/callback"; //Hata Url
            string type       = "sales";

            var parameterResult = new PaymentParameterResult();

            try
            {
                var parameters = new Dictionary <string, object>();

                //kart numarasından çizgi ve boşlukları kaldırıyoruz
                string cardNumber = request.CardNumber.Replace("-", string.Empty);
                cardNumber = cardNumber.Replace(" ", string.Empty).Trim();
                parameters.Add("cardnumber", cardNumber);

                parameters.Add("cardcvv2", request.CvvCode);                //kart güvenlik kodu
                parameters.Add("cardexpiredatemonth", request.ExpireMonth); //kart bitiş ay'ı
                parameters.Add("cardexpiredateyear", request.ExpireYear);   //kart bitiş yıl'ı
                parameters.Add("secure3dsecuritylevel", "3D_PAY");          //SMS onaylı ödeme modeli 3DPay olarak adlandırılıyor.
                parameters.Add("mode", mode);
                parameters.Add("apiversion", "v0.01");
                parameters.Add("terminalprovuserid", terminalprovuserid);
                parameters.Add("terminaluserid", terminaluserid);
                parameters.Add("terminalmerchantid", terminalmerchantid);
                parameters.Add("terminalid", terminalid);
                parameters.Add("txntype", type);                            //direk satış
                parameters.Add("txncurrencycode", request.CurrencyIsoCode); //TL ISO code | EURO 978 | Dolar 840
                parameters.Add("motoind", "N");
                parameters.Add("customeripaddress", request.CustomerIpAddress);
                parameters.Add("orderaddressname1", request.CardHolderName);
                parameters.Add("orderid", request.OrderNumber);//sipariş numarası

                //işlem başarılı da olsa başarısız da olsa callback sayfasına yönlendirerek kendi tarafımızda işlem sonucunu kontrol ediyoruz
                parameters.Add("successurl", successUrl); //başarılı dönüş adresi
                parameters.Add("errorurl", errorurl);     //hatalı dönüş adresi

                //garanti bankasında tutar bilgisinde nokta, virgül gibi değerler istenmiyor. 1.10 TL'lik işlem 110 olarak gönderilmeli. Yani tutarı 100 ile çarpabiliriz.
                string amount = (request.TotalAmount * 100m).ToString("N");//virgülden sonraki sıfırlara gerek yok
                parameters.Add("txnamount", amount);

                string installment = request.Installment.ToString();
                if (request.Installment <= 1)
                {
                    installment = string.Empty;                     //0 veya 1 olması durumunda taksit bilgisini boş gönderiyoruz
                }
                parameters.Add("txninstallmentcount", installment); //taksit sayısı | boş tek çekim olur

                //garanti tarafından terminal numarasını 9 haneye tamamlamak için başına sıfır eklenmesi isteniyor. 9 haneli bir terminal numarasında buna ihtiyaç olmuyor.
                string _terminalid  = "0" + terminalid;
                string securityData = GetSHA1(terminalprovpassword + _terminalid).ToUpper();                                                            //provizyon şifresi ve 9 haneli terminal numarasının birleşimi ile bir hash oluşturuluyor
                string hashstr      = terminalid + request.OrderNumber + amount + successUrl + errorurl + type + installment + storekey + securityData; //ilgili veriler birleştirilip hash oluşturuluyor
                parameters.Add("secure3dhash", GetSHA1(hashstr).ToUpper());                                                                             //ToUpper ile tüm karakterlerin büyük harf olması gerekiyor

                parameterResult.Parameters = parameters;
                parameterResult.Success    = true;

                //Garanti Canlı https://sanalposprov.garanti.com.tr/servlet/gt3dengine
                parameterResult.PaymentUrl = new Uri("https://sanalposprovtest.garanti.com.tr/servlet/gt3dengine");
            }
            catch (Exception ex)
            {
                parameterResult.Success      = false;
                parameterResult.ErrorMessage = ex.ToString();
            }

            return(parameterResult);
        }
Example #5
0
        public PaymentParameterResult GetPaymentParameters(PaymentRequest request)
        {
            //Test ortam bilgileri
            string MERCHANT_ID = "6706598320";
            string TERMINAL_ID = "67020048";
            string POSNET_ID   = "27242";

            try
            {
                //kart numarasından çizgi ve boşlukları kaldırıyoruz
                string cardNumber = request.CardNumber.Replace("-", string.Empty);
                cardNumber = cardNumber.Replace(" ", string.Empty).Trim();

                //yapıkredi bankasında tutar bilgisinde nokta, virgül gibi değerler istenmiyor. 1.10 TL'lik işlem 110 olarak gönderilmeli. Yani tutarı 100 ile çarpabiliriz.
                string amount = (request.TotalAmount * 100m).ToString("N");//virgülden sonraki sıfırlara gerek yok

                string requestXml = "<?xml version=\"1.0\" encoding=\"ISO-8859-9\"?>" +
                                    "<posnetRequest>" +
                                    $"<mid>{MERCHANT_ID}</mid>" +
                                    $"<tid>{TERMINAL_ID}</tid>" +
                                    "<oosRequestData>" +
                                    $"<posnetid>{POSNET_ID}</posnetid>" +
                                    $"<XID>{request.OrderNumber}</XID>" +
                                    $"<amount>{amount}</amount>" +
                                    $"<currencyCode>{GetCurrencyCode(request.CurrencyIsoCode)}</currencyCode>" +
                                    $"<installment>{string.Format("{0:00}", request.Installment)}</installment>" +
                                    "<tranType>Sale</tranType>" +
                                    $"<cardHolderName>{request.CardHolderName}</cardHolderName>" +
                                    $"<ccno>{cardNumber}</ccno>" +
                                    $"<expDate>{request.ExpireMonth}{request.ExpireYear}</expDate>" +
                                    $"<cvc>{request.CvvCode}</cvc>" +
                                    "</oosRequestData>" +
                                    "</posnetRequest>";

                var httpParameters = new Dictionary <string, string>();
                httpParameters.Add("xmldata", requestXml);

                string requestUrl      = "https://setmpos.ykb.com/PosnetWebService/XML";
                var    response        = client.PostAsync(requestUrl, new FormUrlEncodedContent(httpParameters)).GetAwaiter().GetResult();
                string responseContent = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();

                var xmlDocument = new XmlDocument();
                xmlDocument.LoadXml(responseContent);
                var approvedNode = xmlDocument.SelectSingleNode("posnetResponse/approved");
                var respTextNode = xmlDocument.SelectSingleNode("posnetResponse/respText");
                if (approvedNode.InnerText != "1")
                {
                    return(PaymentParameterResult.Failed(respTextNode.InnerText));
                }

                var data1Node = xmlDocument.SelectSingleNode("posnetResponse/oosRequestDataResponse/data1");
                var data2Node = xmlDocument.SelectSingleNode("posnetResponse/oosRequestDataResponse/data2");
                var signNode  = xmlDocument.SelectSingleNode("posnetResponse/oosRequestDataResponse/sign");

                var parameters = new Dictionary <string, object>();
                parameters.Add("posnetData", data1Node.InnerText);
                parameters.Add("posnetData2", data2Node.InnerText);
                parameters.Add("digest", signNode.InnerText);

                parameters.Add("mid", MERCHANT_ID);
                parameters.Add("posnetID", POSNET_ID);

                //Vade Farklı işlemler için kullanılacak olan kampanya kodunu belirler.
                //Üye İşyeri için tanımlı olan kampanya kodu, İşyeri Yönetici Ekranlarına giriş yapıldıktan sonra, Üye İşyeri bilgileri sayfasından öğrenilebilinir.
                parameters.Add("vftCode", string.Empty);

                string callbackUrl = "https://localhost:5001/home/callback"; //Başarılı Url
                parameters.Add("merchantReturnURL", callbackUrl);            //geri dönüş adresi
                parameters.Add("lang", request.LanguageIsoCode);
                parameters.Add("url", string.Empty);                         //openANewWindow 1 olarak ayarlanırsa buraya gidilecek url verilmeli
                parameters.Add("openANewWindow", "0");                       //POST edilecek formun yeni bir sayfaya mı yoksa mevcut sayfayı mı yönlendirileceği
                parameters.Add("useJokerVadaa", "1");                        //yapıkredi kartlarında vadaa kullanılabilirse izin verir

                return(PaymentParameterResult.Successed(parameters, "https://setmpos.ykb.com/3DSWebService/YKBPaymentService"));
            }
            catch (Exception ex)
            {
                return(PaymentParameterResult.Failed(ex.ToString()));
            }
        }